打印
[CW32F030系列]

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

[复制链接]
227|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启动。

使用特权

评论回复
5
ewyu| | 2025-4-17 18:06 | 只看该作者
热切换,在运行过程中,通过软件控制切换启动Bank,实现无缝升级

使用特权

评论回复
6
nqty| | 2025-4-17 20:03 | 只看该作者
当前运行Bank:假设当前运行在Bank A。备用Bank:Bank B用于存储新版本程序。这样设计比较靠谱,而且还比较稳定

使用特权

评论回复
7
teaccch| | 2025-4-17 21:14 | 只看该作者
建议在升级前,将Bank A的程序备份到安全区域(如另一个独立的Flash区域或外部存储器),或确保Bank A未被覆盖。

使用特权

评论回复
8
nuan11nuan| | 2025-4-17 23:43 | 只看该作者
如果在Bank B运行过程中发生异常(如看门狗复位、程序崩溃),系统复位后自动切换回Bank A。

使用特权

评论回复
9
hhdhy| | 2025-4-18 09:22 | 只看该作者
可以设置一个标志位(如存储在RTC备份寄存器或独立Flash区域),指示上次启动是否成功。如果标志位表示失败,则回滚到Bank A。

使用特权

评论回复
10
twinkhahale| | 2025-4-18 11:05 | 只看该作者
启动标志位用于记录上次启动的Bank和状态(成功/失败)。版本标志位,用于记录当前运行的程序版本。校验标志位,用于记录Bank B的校验结果。

使用特权

评论回复
11
pe66ak| | 2025-4-18 14:32 | 只看该作者
回滚触发条件,校验失败,新版本程序在Bank B中校验不通过。运行异常,在Bank B运行过程中发生硬件或软件故障(如看门狗复位)。

使用特权

评论回复
12
LOVEEVER| | 2025-4-20 15:09 | 只看该作者
建议参考官方进行程序开发

使用特权

评论回复
13
风暴之眸| | 2025-4-22 19:16 | 只看该作者
双回滚没有办法实现吧?这个功能需要硬件支持的吧!
否则BL如何知道自己的A应用是失败的?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

107

主题

2336

帖子

0

粉丝