一、说明
BOOT:BootLoader程序
APP:用户程序
BOOT 程序和 APP 程序是两个独立的工程,互不干扰,但是都是依赖于同一硬件平台进行开发的。
目的:实现APP的升级。通过BOOT区对APP区的程序代码进行覆盖。
二、特性
BOOT程序是在MCU上电时执行,APP程序是在BOOT程序跳转后执行。
在 MCU 升级完成或者是在一定时间内未收到升级请求,需要从 BOOT 跳转至 APP,执行用户程序功能,但在执行 APP 程序前,首先需要验证 APP 程序是否有效(比如擦除后烧写失败则APP程序不完整,在 APP 执行中会出错),才能进行跳转。
BOOT程序流程图:
开始
结束
APP程序流程图:
开始
结束
三、内存分配
开发 BootLoader 前,首先需要规划 MCU 的 ROM 分区,给 BOOT 和 APP 预留足够 ROM 空间,使两个程序可以互相独立运行,就必须先进行 ROM 内存分配,为BootLoader 预留足够的空间,避免BootLoader程序编译后的固件大小超出所属空间,从而影响用户程序(APP)区。
BOOT区 | 中断向量表 |
BOOT区可执行程序 | |
APP区 | 重定向中断向量表 |
APP区可执行文件 |
附
APP升级方式:
CAN 通信:CAN 总线多用于工控和汽车领域,可自定义协议也可以使用标准的 UDS 通用协议。
UASRT通信:UASRT 通信机制简单,所以在稳定性和安全性方面稍微较差,但是可以一次发送的数据更多,因此在一定程度上对 MCU 升级的速度更快。
OTA:空中下载技术,通俗理解为远程网络升级,和上面两种相比,OTA 升级不需要在现场通过相关工具连接 MCU 进行升级;可以在任何地方对该 MCU 的程序进行升级,前提是有网络,因此,OTA 升级需要 MCU 产品具备网络功能,实现较为复杂。