双分区升级:5 分钟看懂
ELI5 · 嵌入式
双分区升级:
永远留一条退路
Cortex-M4 的 MCU 是怎么做到「升级失败也不变砖」的
1只有一个分区,升级像「拆房重建」
Flash 里只有一份程序,升级就得先擦掉它
旧程序没了,新程序没写完 —— 设备再也起不来
2双分区 = 一个 MCU,两栋房子
把 Flash 切成两半:一半住着,一半空着备用
正在用的程序,永远不碰 —— 升级只在空的那一半里折腾
3升级只走四步
新程序「先体检,后上岗」
📥
下载
新固件悄悄写进空分区 B
分区 A 照常工作
分区 A 照常工作
🔍
校验
核对校验和 / 签名
确认写得完整无误
确认写得完整无误
🔁
切换
重启,Bootloader
改从分区 B 启动
改从分区 B 启动
🛟
回滚
新版本有问题?
一键切回分区 A
一键切回分区 A
4最坏的时刻断电,也只是一场虚惊
哪怕写 B 写到 99% 时断电
失败只伤到「草稿」,动不了「正本」
旧的不动,新的写好再换。
手里永远有一栋能住的房子。
小注:双分区(Dual-Bank / 双 Slot)是 MCU 的 Flash 控制器和 Bootloader 方案提供的机制,
Cortex-M4 是跑程序的 CPU 内核,两者配合才有了安全的 OTA 升级。STM32 的双 Bank Flash、MCUboot 的 swap 就是典型实现。
本文由作者按照 CC BY 4.0 进行授权