IAP程序升级失败,产品变砖如何解决这个问题?

2019-07-21 08:29发布

大家好,IAP远程升级代码的时候,因为环境的因素,在通过串口无线烧录时有时会失败,这种情况很容易导致产品死机无法使用,大家有没想到更保险的方案呢?我看有些产品是用flash空间比较大的MCU,在IAP升级的过程中会先把原来可以用的代码先拷贝到别的地方,然后把新的代码下载进来,如果中途升级失败,再把旧的代码拷回原来的位置继续使用,这样不会导致产品无法使用,有没有人试过这种方法,或者有更好的方案,希望指教一下,感激不尽!!!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
31条回答
一个爱做梦的人
1楼-- · 2019-07-21 13:21
可以啊  我们就是用这种方法的 用了两份代码  一个有点类似于bootload  在这里判断升级标志位  升级成功就复制备份区代码到运行区 然后代码跳转到运行区 升级失败则直接跳转运行区;
运行区代码烧写时重新定义地址, 跳转到运行区后可以远程升级代码,成功就在内存中写入成功标志位 失败就写入失败标志位
憨厚诚实大叔
2楼-- · 2019-07-21 14:27
本帖最后由 憨厚诚实大叔 于 2016-5-30 17:36 编辑

和楼上差不多吧,我是把flash分成3部分,一部分类似bootload,他判断flash固定位置的标志位,来确认程序跳到什么地址执行,更新是在正常运行的程序中偷偷更新的,等更新完毕并且确认无误后,改变flash固定位置的标志位,下一次复位就执行另外一套代码了,而且更新完毕后,程序也可以找合适的时机直接跳到另外一个地址执行。
不过的确是用大容量的芯片
莆田
3楼-- · 2019-07-21 15:39
一个爱做梦的人 发表于 2016-5-30 17:23
可以啊  我们就是用这种方法的 用了两份代码  一个有点类似于bootload  在这里判断升级标志位  升级成功就 ...

您好,有例程吗?太感谢了,我是做电动车的,设计到远程升级的问题
莆田
4楼-- · 2019-07-21 21:18
 精彩回答 2  元偷偷看……
憨厚诚实大叔
5楼-- · 2019-07-22 02:35
莆田 发表于 2016-5-31 10:06
您好,要是更新失败有没有保险设置?

更新失败就是在继续跑以前的代码啊,每接收一次数据,都会返回去给网络端校验,只有发送完,全部校验无误后,等待网络端返回特定的信号,才会更改flash固定位置的标志位,并且找时机跳到另外的代码,不然的话就是一直跑现在的代码啊
莆田
6楼-- · 2019-07-22 03:26
憨厚诚实大叔 发表于 2016-5-31 10:10
更新失败就是在继续跑以前的代码啊,每接收一次数据,都会返回去给网络端校验,只有发送完,全部校验无误 ...

听起来很牛逼啊,有没有例程啊,我想参考一下,我是做电动平衡车的,要远程升级代码,电机驱动我比较擅长

一周热门 更多>