文章目录
1. 摘要
一种基于串口的外置Flash双分区软件升级方案,主要设计思路是通过串口将上位机加载的二进制文件,烧写进外置Flash的对应分区上,再次启动的时候,在bootloader中做跳转判断,决定运行哪个分区。注意,该方案的应用程序是完全存储在外置Flash上的,适合应用程序较大,片上Flash不够用的场景。
2. 下位机程序设计
系统上电后,先运行bootloader程序,读取升级标志,判断是否升级。
如果不升级则读取对应分区程序完整性标志,如果程序完整,则跳转运行对应分区应用程序。
下面是升级逻辑:
- 接收文件信息,判断是否有效,如果无效直接退出升级
- 文件信息有效,则先擦除要升级的分区
- 接收文件,并写入对应分区
- 判断写入的分区文件是否正确,如果正确,则将标志位置位,否则直接退出升级
在应用程序中,也要判断是否升级。
如果要升级,则置位升级标志,并软件复位。
复位后,进入bootloader中,会判断升级标志。
3. 上位机程序设计
升级工具主要实现目标设备软件升级的触发和升级文件的传输,为了使用方便(兼容不同场景),升级工具支持手动交互和脚本交互两种使用方式。
主要特性:
- 支持Windows系统64位PC,暂不支持其他操作系统;
- 支持串口方式与目标设备通讯;
- 支持ymodem协议传输文件;
- 支持设备信息配置和文件路径配置;
- 支持CRC16和checksum两种传输校验方式,且可配置;