IAP升级失败处理?

2019-08-18 21:12发布

我想问一下,如果boodloader在去跳到app之前,怎么才能检测app是完整的,比如我们在升级的过程中出现了意外(停电了什么的),这样的话程序应该只能在boodloader运行等待下次再升级,各位大哥们是怎么解决这个问题的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
正点原子
1楼-- · 2019-08-18 21:15
 精彩回答 2  元偷偷看……
DongInker
2楼-- · 2019-08-18 21:51
可以将是否升级完整标记存储在开辟的flash中,开始升级先标记升级中,升级完整就标记升级完整。
上电运行时可以先读该标记位的状态确定如何处理。
rixwyg
3楼-- · 2019-08-18 22:41
这种标记开辟的flash一般在什么地方,在boodloader最后面加一个字节可以吗?
rixwyg
4楼-- · 2019-08-19 03:04
或在APP最后在多写几个字节
XUZJWWSZ
5楼-- · 2019-08-19 07:05
 精彩回答 2  元偷偷看……
小小怪
6楼-- · 2019-08-19 07:05
想到两种方式:
1. 程序升级都是分包发送的吧,这样可以开个FLASH来对每个包做校验字。升级动作做个旗标,旗标在升级状态,即使掉电后,再上电时查看校验字是否一致从此段开始再次升级。升级完成后要重新校验。
2. 第二种比较浪费空间,就是把FLASH划分四个区,分别是IAP-两个版本号-AP1-AP2。原版Code在AP1,升级Code在AP2。IAP通过版本号在这两个区切换。除非FLASH足够大,不然还得外挂..麻烦


还有个更简单的,程序升级失败的话,送厂家维护

一周热门 更多>