双备份bootloader程序更新

2019-12-13 18:31发布

大家有没有做过这种bootloader,
如果刷写过程中失败,则自动切换到上一次正常的App。
目前的思路是Flash分为3部分:Bootloader + App1 + App2

目前的难点是App1和App2里面的程序中断向量表啥的肯定不一致,没法做到统一。



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
26条回答
foxpro2005
2019-12-14 19:08
楼上多好都没有考虑到在写入时发生断电或其它意外的情况, 如果系统中有SPI Flash,可以把接收到的数据放里面, 然后再来长级FLASH。
还有一种存储结构划分方式:
| bootloader | + | app | + | iap flag + iap firmware data |

在升级更新APP区域前 :先是对IAP区接收的固件数据做过校验的(也可以是在接收这个固件时就进行了校验的,以保证正确性), 如果正确设置相应的IAP Flag标志, 然后再进行APP区的固件刷写, 刷写成功后再设置IAP Flag相应的标志。

这样就应该不会有出现两个中断向量的问题, 同时也应该能有效防止变砖的可能性。

一周热门 更多>