文章

双分区升级:5 分钟看懂

双分区升级 · 5 分钟看懂
ELI5 · 嵌入式

双分区升级:
永远留一条退路

Cortex-M4 的 MCU 是怎么做到「升级失败也不变砖」的

1只有一个分区,升级像「拆房重建」

Flash 里只有一份程序,升级就得先擦掉它

程序 ✓ 正常运行中 ① 程序只有一份 写入中… 擦一半、写一半 突然断电! ② 擦旧写新,同时进行 🧱 变砖! ③ 新旧都不完整

旧程序没了,新程序没写完 —— 设备再也起不来

2双分区 = 一个 MCU,两栋房子

把 Flash 切成两半:一半住着,一半空着备用

MCU(Cortex-M4 + Flash) 分区 A 当前程序 v1.0 🏠 正在运行 分区 B 🕳️ 空着,随时待命 Bootloader 在开机时决定用哪一半

正在用的程序,永远不碰 —— 升级只在空的那一半里折腾

3升级只走四步

新程序「先体检,后上岗」

📥
下载
新固件悄悄写进空分区 B
分区 A 照常工作
🔍
校验
核对校验和 / 签名
确认写得完整无误
🔁
切换
重启,Bootloader
改从分区 B 启动
🛟
回滚
新版本有问题?
一键切回分区 A

4最坏的时刻断电,也只是一场虚惊

哪怕写 B 写到 99% 时断电

分区 A 程序 v1.0 ✓ 毫发无伤 旧房子一直有人住 分区 B 写到 99% ⚡ 写坏了?扔掉重来 空房子塌了不心疼 照常开机 用 v1.0

失败只伤到「草稿」,动不了「正本」

旧的不动,新的写好再换。
手里永远有一栋能住的房子。

小注:双分区(Dual-Bank / 双 Slot)是 MCU 的 Flash 控制器和 Bootloader 方案提供的机制,
Cortex-M4 是跑程序的 CPU 内核,两者配合才有了安全的 OTA 升级。STM32 的双 Bank Flash、MCUboot 的 swap 就是典型实现。

本文由作者按照 CC BY 4.0 进行授权