在STM32双Bank启动模式下,OTA失败后的自动回滚可通过硬件看门狗(IWDG)实现。核心思路是:将新固件写入非活动Bank,并设置一个标志位(如备份寄存器或Flash标志)指示待验证状态。启动时,Bootloader检查该标志:若存在,则跳转到新Bank并启动IWDG,超时设为应用初始化时间(如5秒)。若新固件正常运行,应用在初始化完成后清除标志并喂狗;若失败(如崩溃或卡死),IWDG超时复位,Bootloader检测到标志未清除,则回滚到旧Bank并清除标志。实操建议:1)IWDG超时需大于应用启动最坏情况,避免误回滚;2)在应用早期(如SystemInit后)喂狗,确保稳定性;3)使用备份寄存器(如RTC)保存标志,掉电不丢失;4)回滚后建议记录错误计数,连续失败可禁用OTA。此方法无需外部存储,简单可靠。
mcuku 阿沐 · 2026-08-27