嵌入式 A/B 双分区 Bootloader 与 OTA 安全升级方案

基于 32 位 MCU 的 A/B 双分区固件管理 Bootloader,支持上电自检、分区健康校验、故障自动回退与串口/OTA 升级,保障嵌入式设备远程升级零停机、零变砖。

一、方案概述

本方案是成都微马电子科技(DIGIHORSE)为工业级嵌入式设备自主研发的 A/B 双分区 Bootloader,解决设备在远程固件升级过程中因断电、通信中断或固件损坏导致的变砖风险。

Bootloader 利用 32 位 MCU 内置 2MB 双 Bank Flash,将应用固件分为 A(AppL)、B(AppH)两个独立分区,配合启动选择字(AppFlag)与 CRC 完整性校验,实现上电自动检测、分区切换、故障回退与安全跳转,确保设备在任何异常情况下均可恢复到可用状态。

二、核心启动流程

Bootloader 上电后按以下步骤执行分区选择与跳转:

  • 读取启动选择字:从 Flash S14 扇区读取 AppFlag,判断目标启动分区(L 或 H)
  • 选择字合法性检查:若 AppFlag 为空片值(0xFFFFFFFF,首次上电),擦除 S14 并写入默认选择字 L
  • 分区选定:按选择字确定目标跳转地址——H 分区(0x08120000)或 L 分区(0x08020000)
  • 固件完整性校验:调用 CheckApp() 函数检查当前分区固件是否非空且 CRC 通过
  • 故障回退决策:若当前分区无效,自动检查另一分区;另一分区有效则改写选择字回退,两分区均空则进入串口下载模式
  • 选择字更新:根据 AppErr 状态码(0=正常 / 1=L 损坏回退 H / 2=H 损坏回退 L)擦除 S14 重写选择字
  • 安全跳转:从目标分区首地址读取初始栈指针与复位向量,设置 MSP 后跳转执行用户应用

三、Flash 分区地址映射

2MB 双 Bank Flash 按以下布局划分,Bootloader、选择字、CRC 校验区与应用固件分区相互独立、互不干扰:

  • BOOT 区:0x08000000 起,64KB(S0~S3, Bank1)—— Bootloader 本体
  • mcusel 区:0x08010000 起,64KB(S4, Bank1)—— MCU 选型与配置参数
  • AppL 区:0x08020000 起,896KB(S5~S11, Bank1)—— A 分区应用固件
  • appcrcL 区:0x08100000 起,16KB(S12, Bank2)—— AppL CRC 校验值
  • appcrcH 区:0x08104000 起,16KB(S13, Bank2)—— AppH CRC 校验值
  • appHL 区:0x08108000 起,16KB(S14, Bank2)—— 启动选择字 AppFlag(核心)
  • ver 区:0x0810C000 起,16KB(S15, Bank2)—— 固件版本号
  • AppH 区:0x08120000 起,896KB(S17~S23, Bank2)—— B 分区应用固件(备份)

四、四种启动场景

覆盖从空片出厂到正常运行、单分区故障的全部场景,状态机真值表如下:

  • 空片首启:S14=0xFFFFFFFF → 写默认选择字 L → L/H 均空 → 进入串口下载固件 → 软复位重新校验
  • 正常启动:选择字 L,CheckApp(L) 校验通过 → AppErr=0 → 直接跳转 AppL 执行
  • L 损坏回退 H:CheckApp(L) 失败,CheckApp(H) 通过 → AppErr=1 → 改写选择字为 H → 跳转 AppH
  • H 损坏回退 L:CheckApp(H) 失败,CheckApp(L) 通过 → AppErr=2 → 改写选择字为 L → 跳转 AppL

五、设计亮点

A/B 双分区零停机升级:新固件写入备用分区,CRC 校验通过后切换选择字,下次启动直接进入新分区;旧固件保留在原分区,若新固件异常自动回退,实现升级零停机、零变砖。

故障自动回退机制:Bootloader 在每次启动时校验目标分区固件完整性,一旦发现损坏立即检查另一分区并改写选择字,设备无需人工干预即可恢复运行,大幅降低现场维护成本。

加密与安全校验:集成 AES 加密初始化,OTA 传输与串口升级均支持加密固件包,配合 CRC 完整性校验,防止固件被篡改或刷入损坏数据。

串口应急升级通道:当两个分区均空或均损坏时,自动进入串口下载模式(SerialDownload),通过 UART 烧录新固件,作为最后一道恢复手段,确保设备永不变砖。

全流程日志输出:Bootloader 各阶段通过串口输出启动日志(选择字值、校验结果、跳转地址),方便产线调试与现场故障定位。

相关服务

电子产品设备开发 · 物联网系统开发 · 免费获取方案

← 智能移动灌溉水肥一体机