目前计划的MCU串口IAP升级方案是这样的: (1)串口通讯符合IAP升级指令,则转换为升级模式; (2)升级模式中不断接收升级数据,每包数据最多100个字节,包含包头、校验码、写入FLASH地址、写入数据有效长度、写入数据内容; (3)接收到的数据搬运到 程序备份区(与目前运行程序区一样大),将升级标记保存到FLASH中指定区域; (4)重启,重新上电后从升级标记读取程序备份区开始地址,通过Bootloader跳转到这个开始地址运行程序; (5)将程序备份区的数据复制搬运到 FLASH中 主程序区域; (6)重启,重新上电后从升级标记读取知道本次切换回主程序区域运行。 但是,上面过程中,我最担心的就是因为升级数据包出错,导致步骤(4)或者步骤(6)无法正常工作,变成一开机就变砖了。 看各位有MCU升级经验的大佬带带我。先谢谢各位 |
保留或者预留一种方式可以强制进入bootloader区,运行bootloader程序即使APPlication挂了,还可以运行bootloader进行升级
然后就是对整各application程序进行校验,如果传输中断某一帧出错,可以识别出来
评分
查看全部评分
整个APP程序所有数据进行校验和校验吗?
检验和应该是最简单的,相加后取低位就可以了。
评分
查看全部评分
目前串口协议中用的是CRC16的校验方式,得到这个宝贵意见后我还是决定保持CRC16校验。