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

[复制链接]
712|13
 楼主| Stahan 发表于 2025-3-24 07:42 来自手机 | 显示全部楼层 |阅读模式
有没有例程参考啊
一切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应用是失败的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

107

主题

2335

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部