Stahan 发表于 2025-3-24 07:42

基于IAP功能实现远程升级时,如何设计Flash双Bank热切换的回滚机制?

有没有例程参考啊

一切D都好 发表于 2025-4-17 14:41

在基于IAP功能实现远程升级时,设计Flash双Bank热切换的回滚机制是保障系统可靠性的关键

gra22ce 发表于 2025-4-17 15:55

Bank划分,将Flash划分为两个独立的存储区域(Bank A和Bank B),每个Bank均可独立运行程序。

gongqijuns 发表于 2025-4-17 17:05

通过启动配置寄存器(如STM32的OPTCR寄存器)选择从哪个Bank启动。

ewyu 发表于 2025-4-17 18:06

热切换,在运行过程中,通过软件控制切换启动Bank,实现无缝升级

nqty 发表于 2025-4-17 20:03

当前运行Bank:假设当前运行在Bank A。备用Bank:Bank B用于存储新版本程序。这样设计比较靠谱,而且还比较稳定

teaccch 发表于 2025-4-17 21:14

建议在升级前,将Bank A的程序备份到安全区域(如另一个独立的Flash区域或外部存储器),或确保Bank A未被覆盖。

nuan11nuan 发表于 2025-4-17 23:43

如果在Bank B运行过程中发生异常(如看门狗复位、程序崩溃),系统复位后自动切换回Bank A。

hhdhy 发表于 2025-4-18 09:22

可以设置一个标志位(如存储在RTC备份寄存器或独立Flash区域),指示上次启动是否成功。如果标志位表示失败,则回滚到Bank A。

twinkhahale 发表于 2025-4-18 11:05

启动标志位用于记录上次启动的Bank和状态(成功/失败)。版本标志位,用于记录当前运行的程序版本。校验标志位,用于记录Bank B的校验结果。

pe66ak 发表于 2025-4-18 14:32

回滚触发条件,校验失败,新版本程序在Bank B中校验不通过。运行异常,在Bank B运行过程中发生硬件或软件故障(如看门狗复位)。

LOVEEVER 发表于 2025-4-20 15:09

建议参考官方进行程序开发

风暴之眸 发表于 2025-4-22 19:16

双回滚没有办法实现吧?这个功能需要硬件支持的吧!
否则BL如何知道自己的A应用是失败的?
页: [1]
查看完整版本: 基于IAP功能实现远程升级时,如何设计Flash双Bank热切换的回滚机制?