其他分享
首页 > 其他分享> > 低压工作状态下Flash易损坏后Bootloader改进方法

低压工作状态下Flash易损坏后Bootloader改进方法

作者:互联网

低压工作状态下Flash易损坏后Bootloader改进方法

1.现象说明:

设备用磁取能,有可能工作于欠压状态,批量设备运行一段时间后,有些设备出现APP损坏的问题,导致设备启动异常。软件设计架构如下:
软件架构图

2.问题原因分析:

单片机欠压状态工作容易发生异常现象,特别是欠压下擦写Flash,比如Flash损坏,因为程序启动后工作于APP并且Bootloader程序比较小,一般APP出问题可能性更大。

3.解决方法:

改进Bootloader的流程,在跳转APP前,加入APP完整性的判断,流程图图下:
Bootloader流程图
其中检测APP区完整性的具体措施为:加入APP数据大小变量和数据CRC校验变量,分别标注为app.length和app.crc32。每次升级APP流程进行完毕后,把升级的app.length和app.crc32写到Para参数区。程序每次复位后从bootloader跳转app前,利用参数区app.length从app起始地址读取对应长度数据并计算crc32,和参数区保存的app.crc32对比。若一致代表app数据完整,否则代表app损坏,进而进入自动升级流程。因为升级是无线远程进行,保证设备跟主站服务器连接,因此基本上不会出现设备“死机”问题。

4.心得建议:

工业用产品工作环境复杂,设计时要考虑多种情况,正常情况下bootloader向app跳转,不要做擦写flash的动作。

标签:低压,app,Flash,损坏,crc32,Bootloader,APP
来源: https://blog.csdn.net/weixin_47057981/article/details/105510261