IAP固件升级之我见解,欢迎讨论。

2019-10-15 02:16发布

真正做产品要固件升级必须涵盖IAP  FLASH1  FLASH2甚至FLASH3:FLASH1可以存储你刚出厂的程序,如果没有固件更新就一直运行这个片区的程序。FLASH2可以存储你升级过来的程序,然后程序可以选择在这个片区运行,也可以把FLASH2复制到FLASH1,还是运行FLASH1,当然最好还是保持FLASH1不动,这样一旦设备刷机成砖头,还可以接个按键啥的运行回这个出厂程序。。我是这么做的;当然,思路是思路,做是另外一回事,,固件更新程序必须做CRC校验,甚至GUID判断,及错误重发机制。发送端的数据必须做分割处理。一个固件包(我们目前的固件bin是30多K,level o3)多包次发送(加上头尾CRC GUID等),接收端(STM32)再把数据还原,写FLASH.--------我觉得适合所有MCU。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
ysq7120
1楼-- · 2019-10-15 03:56
升级前备份,然后升级,跑不起来由bootload将备份重新写回。
it_do_just
2楼-- · 2019-10-15 06:06
这样的方式前提要FLASH够大,不够大你还得另想办法,传输你直接找个现成的文件传输协议就行了,例如xmodem、ymodem
八度空间
3楼-- · 2019-10-15 09:30
协议我自己定义的,后面只加了CRC校验,没弄很复杂,flash就分了两个区域,一个存放bootloader,一个存储APP,每次升级先擦除app区域,然后接收到数据直接写入,失败了重新升级,不备份
tndexw
4楼-- · 2019-10-15 13:34
保留bootloader,升级失败了,重新上电再来一发
outmanlol
5楼-- · 2019-10-15 15:11
 精彩回答 2  元偷偷看……

一周热门 更多>