大家好,IAP远程升级代码的时候,因为环境的因素,在通过串口无线烧录时有时会失败,这种情况很容易导致产品死机无法使用,大家有没想到更保险的方案呢?我看有些产品是用flash空间比较大的MCU,在IAP升级的过程中会先把原来可以用的代码先拷贝到别的地方,然后把新的代码下载进来,如果中途升级失败,再把旧的代码拷回原来的位置继续使用,这样不会导致产品无法使用,有没有人试过这种方法,或者有更好的方案,希望指教一下,感激不尽!!!!!!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
运行区代码烧写时重新定义地址, 跳转到运行区后可以远程升级代码,成功就在内存中写入成功标志位 失败就写入失败标志位
和楼上差不多吧,我是把flash分成3部分,一部分类似bootload,他判断flash固定位置的标志位,来确认程序跳到什么地址执行,更新是在正常运行的程序中偷偷更新的,等更新完毕并且确认无误后,改变flash固定位置的标志位,下一次复位就执行另外一套代码了,而且更新完毕后,程序也可以找合适的时机直接跳到另外一个地址执行。
不过的确是用大容量的芯片
您好,有例程吗?太感谢了,我是做电动车的,设计到远程升级的问题
更新失败就是在继续跑以前的代码啊,每接收一次数据,都会返回去给网络端校验,只有发送完,全部校验无误后,等待网络端返回特定的信号,才会更改flash固定位置的标志位,并且找时机跳到另外的代码,不然的话就是一直跑现在的代码啊
听起来很牛逼啊,有没有例程啊,我想参考一下,我是做电动平衡车的,要远程升级代码,电机驱动我比较擅长
一周热门 更多>