在STM32双Bank模式下,升级失败后的无缝回滚关键在于利用硬件标志位(如Option Bytes中的nBOOT1或自定义备份寄存器)快速切换启动Bank。具体实操:1) 在Bootloader中,升级前将目标Bank的起始地址写入备份寄存器(如RTC Backup Register),并设置有效标志(如0xA5A5);2) 升级过程中,若校验失败或超时,Bootloader检测到标志无效,则直接跳转至另一个Bank(原固件)启动;3) 若升级成功,应用固件在首次运行时清除无效标志并写入新有效标志,确保下次启动使用新Bank。硬件层面,可利用STM32的BOR(欠压复位)或独立看门狗(IWDG)在升级卡死时强制复位,Bootloader通过读取标志位决定回滚。建议在Bootloader中实现双重校验:先检查标志位有效性,再验证Bank的CRC,确保回滚可靠性。实际测试时,模拟断电或错误写入,验证回滚时间应小于100ms,以实现无缝切换。
mcuku 阿沐 · 2026-08-27