嵌入式项目实战之固件IAP升级解决方案(示例芯片CH32V307R)

嵌入式项目实战之固件IAP升级解决方案(示例芯片CH32V307R)

MCU固件IAP升级的业务主要是MCU在运行过程中,实现固件的下载,更新。编译器生成的升级的文件都是二进制的BIN文件格式,没有校验和版本管理信息。为了实现固件IAP升级过程的可靠性,我们需要加入一些固件管理信息,比如版本,固件长度,校验,型号等。曾看过一些升级方案,固件升级文件都是在BIN文件格式上增加一些前缀或后缀信息,包括了固件版本,校验信息等,俗称为“打包”。通过这种方式实现固件管理业务虽然没问题,但增加了打包解包的业务,管理起来也不够灵活。因为需要在PC端开发工具实现“打包”业务,到MCU端,MCU下载的固件包实现“解包”后,才能更新到APP加载区域。

本文提到的固件IAP方案,是把版本管理,校验等信息通过编译器编译到固件内,而不需要额外的“打包”,“解包”业务。可升级的固件一般都是MCU主程序,我们定义为APP固件。对于APP固件生成,我们做如下工作,

第一步是在代码文件中添加版本管理信息,这些信息可以直接编译到固件文件中。虽然其中的固件长度和固件校验字段值无法直接获取,我们先定义一个初始值。版本管理信息需要编译到固定地址,方便获取这些信息。示例中,我们将之分配到特定的crc段。

第二步是在编译链接脚本文件中,添加对应的段。因为中断向量表代码段长度一般都是固定的,并且必须排在代码段最前面,而主程序长度是不确定的。我们一般是将版本管理信息代码段链接在中断向量表后,主程序之前,方便寻址。

第二步是添加编译脚本,编译脚本为一般编译器支持执行的脚本文件&#x

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wayne2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值