F280049C CAN Bootloader设计总结,希望能帮到同仁。
启动流程:上电 → 判断是否进入 Boot → 跳转 App
上电启动(进入 Bootloader)
MCU 上电/复位后,CPU 会从 Flash 起始地址 (0x08000000) 读取中断向量表:先取出第 0 项设置栈顶地址 (MSP),再取出第 1 项设置程序计数器 (PC),于是程序从 Reset_Handler 开始执行。
这里存放的就是 Bootloader,所以第一条执行的指令一定来自 Boot 区。
Bootloader 会先做一些初始化工作,比如:
配置时钟
初始化 CAN/UART 等通信口
准备 RAM 缓冲区
通俗点理解:MCU 一开机,先去找门卫(Bootloader),问清楚情况,再决定进不进小区(App)。
判断是否进入 Boot 模式
Bootloader 的主要任务之一,就是决定接下来要干啥。常见的判断方式:
按键/跳线触发:比如按住某个按键上电,进入 Boot 模式。
标志位触发:上位机提前写了某个 Flash 标志或 RTC 寄存器,Bootloader 看到后进入升级。
App 校验失败:比如 CRC 错误,说明应用坏了,只能留在 Boot 模式等待重新下载。
超时机制:Bootloader 等待几秒钟,如果上位机没有发“升级请求”,就自动跳转到 App。
通俗点理解:门卫(Bootloader)会检查:要不要维修?房子是不是安全?如果有人要求维修(升级),它就停留;否则就直接放人进小区(App)。
跳转到应用程序 (App)
如果判断结果是不需要升级,Bootloader 就会跳到应用程序:
修改 中断向量表偏移量 (SCB->VTOR),指向 App 的起始
上位机采用VS C++开发