单片机OTA升级中的A/B双分区:经典方案与实现逻辑
固件存放在外部 QSPI/OSPI Flash,Bootloader 校验后可直接 XIP 启动,或拷贝到内部。升级时,把新固件写到非活动区,重启后 Bootloader 根据控制标志选择启动 A 或 B。当前运行 A,新固件先写入 B,重启时 Bootloader 把 B 拷贝覆盖 A,再启动。建议双份保存,带自校验。Over-the-Air ,空中下载,也就是远程升级的意思。设备的必要功能,就
关注+星标公众号,不错过精彩内容
来源 | 亚细亚的老鱼
OTA:Over-the-Air ,空中下载,也就是远程升级的意思。
现在OTA升级已经成了很多汽车电子、IoT 等嵌入式设备的必要功能,就连很多几块钱的电子产品,都具备了这个功能。
为了避免升级过程中断电、传输错误导致设备“变砖”,业内普遍采用 A/B 双分区机制。本文总结几种经典方案,并结合实际 MCU的特性,给出实现思路。

一、A/B 双分区的经典方案
-
静态 A/B(切换入口)
-
内部 Flash 分两个完整应用区:A 和 B。
-
升级时,把新固件写到非活动区,重启后 Bootloader 根据控制标志选择启动 A 或 B。
-
优点:切换快、升级稳定。
-
缺点:需要两倍程序空间。
-
下载区 + 拷贝区
-
-
当前运行 A,新固件先写入 B,重启时 Bootloader 把 B 拷贝覆盖 A,再启动。
-
优点:兼容只需一个活动分区的旧系统。
-
缺点:拷贝耗时,掉电恢复逻辑复杂。
-
-
外部 Flash A/B
-
-
固件存放在外部 QSPI/OSPI Flash,Bootloader 校验后可直接 XIP 启动,或拷贝到内部。
-
优点:突破 MCU 内部 Flash 限制。
-
缺点:需要额外硬件。
-
-
差分升级(Delta Patch)
-
-
只传输差分数据,在目标分区合成新固件。
-
优点:数据量小。
-
缺点:实现复杂,可靠性要求高。
二、典型内存布局
| Boot Control Block (BCB) | 状态标志区 |--------------------------| | Bootloader (保护段) | 固定不被擦写 |--------------------------| | 应用分区 A | App + 校验信息 |--------------------------| | 应用分区 B | App + 校验信息-
Bootloader:放在 MCU Boot Segment,用硬件保护。
-
BCB:存储当前激活分区、待验证分区、版本号、CRC、签名等。建议双份保存,带自校验。
-
分区 A/B:完整固件镜像,包含入口向量表、代码、CRC/签名。
三、升级完整逻辑
1. 下载阶段
-
应用程序选择非活动区(比如当前跑 A,则写 B)。
-
擦除目标分区 → 分块写入(对齐到 MCU 写入粒度)。
-
写入完成后,计算 CRC/校验签名。
-
校验通过 → 更新 BCB:标记 pending_slot = B,允许试运行。
2. 启动阶段(Bootloader)
-
检查 BCB,若有待验证分区 → 优先启动它。
-
校验 Header、CRC、签名。
-
如果失败 → 回滚到旧分区。
-
如果通过 → 进入试运行模式。
3. 试运行与确认
-
新固件启动后,应用需在规定时间内完成自检(通讯、功能检查)。
-
确认无误 → 写入健康标志,Bootloader 更新 BCB,正式切换 active_slot = B。
-
若未确认、频繁看门狗复位 → Bootloader 自动回退 A。
四、关键点与注意事项
-
原子性:BCB 更新必须双份,掉电也能恢复。
-
写入顺序:先写数据,最后写头信息,避免“半成品”被误启动。
-
安全性:推荐固件签名校验(如 ECDSA),公钥固化在 Bootloader 段。
-
可靠性:升级过程必须能应对掉电、通信中断。
-
试运行保护:通过看门狗 + 健康标志,确保只有稳定固件才能“转正”。
五、应用场景
-
汽车 ECU:动力、空调压缩机等对可靠性极高的场景。
-
IoT 网关:要求远程批量更新,但不能因单台设备失败而中断服务。
-
工业控制:现场无法人工介入时,A/B 机制能避免停机风险。
六、总结
A/B 双分区 OTA 升级的核心是:
-
双镜像存储 → 确保一份固件始终可用;
-
Bootloader 决策 → 负责校验、选择、回退;
-
应用自确认 → 确保新固件可稳定运行。
这套机制被广泛应用于汽车电子和物联网设备,是目前最可靠的 OTA 设计之一。
------------ END ------------

关注公众号回复“加群”按规则加入技术交流群,回复“1024”查看更多内容。
点击“阅读原文”查看更多分享。
-
更多推荐



所有评论(0)