一次"升级变砖"的教训这是我在一个工业网关项目里亲眼见过的。设备用的是 STM32F429,Flash 2MB,Bootloader 占 64KB,App 占 1.8MB。升级方案是最简单的原地升级:上位机通过以太网把新固件发送过来,Bootloader 收到数据后,直接擦除 App 区,然后逐块写入。升级流程在实验室测试了上百次,没问题。但到了现场,有一次升级过程中,客户的车间突然断电。等电力恢复,设备重启,卡在 Bootloader 里,App 区是空的。设备变砖了。这台设备安装在产线的一个关键位置,拆下来返修需要停线 2 小时。而这样的设备,现场有 40 台。客户直接拒收,要求整改。这个事故的根因不是技术问题,而是升级方案的选择问题。原地升级有一个致命的弱点:升级过程中,设备处于"无有效固件"的状态。一旦这个过程中断电、通信中断、Flash 损坏,设备就没有可运行的固件。A/B 分区方案可以完全避免这个问题。它的核心思想是:升级时写入"备份区",不影响"运行区"。升级完成、校验通过后,修改启动标志,重启后从备份区启动。如果升级失败,运行区还在,设备继续正常工作。这篇文章要讲的,就是 A/B 分区和原地升级的完整对比:存储开销、升级时间、回滚能力、Flash 寿命,以及为什么量产设备几乎都选 A/B 分区。一、原地升级:简单但危险原地升级的流程