本帖最后由 Alden 于 2023-7-19 15:17 编辑
#技术资源#
在单片机日常应用中,经常会考虑对程序功能进行迭代升级,但通过烧录器接口烧录会比较麻烦,所以通常会常用IAP的方式,通过其他接口进行程序更新。
IAP:In Application Programming( 在应用中编程),通过调用特定的bootloader程序,对程序存储器的指定段进行读/写操作,从而实现对目标板的程序的修改,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的固件程序进行更新升级。
APM32的SDK中也对这种应用方式提供了例程参考,例程中在烧录了Booeload程序后就可以通过串口通讯的方式,重新烧录APP的程序段接下来实际测试演示下APM32E103的IAP升级流程。
查看SDK中IAP升级例程,Bootload配置的通讯接口是USART2(PA2、PA3)
升级协议使用的是开源的Ymodem协议,所以升级的上位机支持Ymodem就可以使用。
这里就是选择使用SecureCRT 8.1进行测试。
使用APM32E103ZET6 mini开发板,烧录完Bootload后连接串口工具。可以看到开发板上LED2和LED3都是常量。
串口会发送操作指引。
按照指引上位机发1 MCU就会进入等待接收升级文件的状态。
这时候用Ymodem的方式发送APP的Bin文件。
选择需要升级的APP1的Bin文件后就会自动完成升级。
升级成功后会再回复下一步操作指令,可以等待超时或者上位机发3,就会跳转到APP1中运行。
进入APP1中运行就可以看到开发板上原本在Bootload中常亮的LED2和LED3变成LED2闪烁 LED3常亮。
同理也可以在bootload操作状态发4 进行APP2的烧录,发送成功后发6可以跳转到APP2中运行。
APP2中程序是LED2常亮,LED3闪烁。
由此SDK中的IAP升级的基本功能就测试完了,可以比较方便的进行两个APP程序的升级跳转。
SDK在极海官网上就能很方便的下载。
|