基于IAP功能实现远程升级时,如何设计Flash双Bank热切换的回滚机制?
有没有例程参考啊 在基于IAP功能实现远程升级时,设计Flash双Bank热切换的回滚机制是保障系统可靠性的关键 Bank划分,将Flash划分为两个独立的存储区域(Bank A和Bank B),每个Bank均可独立运行程序。 通过启动配置寄存器(如STM32的OPTCR寄存器)选择从哪个Bank启动。 热切换,在运行过程中,通过软件控制切换启动Bank,实现无缝升级 当前运行Bank:假设当前运行在Bank A。备用Bank:Bank B用于存储新版本程序。这样设计比较靠谱,而且还比较稳定 建议在升级前,将Bank A的程序备份到安全区域(如另一个独立的Flash区域或外部存储器),或确保Bank A未被覆盖。 如果在Bank B运行过程中发生异常(如看门狗复位、程序崩溃),系统复位后自动切换回Bank A。 可以设置一个标志位(如存储在RTC备份寄存器或独立Flash区域),指示上次启动是否成功。如果标志位表示失败,则回滚到Bank A。 启动标志位用于记录上次启动的Bank和状态(成功/失败)。版本标志位,用于记录当前运行的程序版本。校验标志位,用于记录Bank B的校验结果。 回滚触发条件,校验失败,新版本程序在Bank B中校验不通过。运行异常,在Bank B运行过程中发生硬件或软件故障(如看门狗复位)。 建议参考官方进行程序开发 双回滚没有办法实现吧?这个功能需要硬件支持的吧!否则BL如何知道自己的A应用是失败的?
页:
[1]