查看原文
其他

APM32芯得 EP.04 | APM32F072在线升级的实现


《APM32芯得》系列内容为用户使用APM32系列产品的经验总结,均转载自21ic论坛极海半导体专区,全文未作任何修改,未经原文作者授权禁止转载。


APM32F072在线升级的实现


虽然APM32F072有提供ISP实现程序通过Uart口进行程序烧录,只要在应用程序中跳转到0x1FFFC800即可,同样不需要改变boot脚的电位就可以完成通过Uart口进行程序升级。但是这样不便于我们按需定制的在线升级过程。所以我们还是通过自定义bootloader和app的方式来实现。

首先我们需要对bootloader和app大小进行分配。
Bootloader 4k IROM的配置如下

APP 124k IROM的配置如下


剩下的一些flash区域用来存储一些参数和在线升级的标志位

Bootloader中只需要加入这部分代码,就可以实现跳转,跳转前注意要关闭所以中断即可


为了让BootLoader能识别是否进人程序升级还是跳转到正常app运行,我通过了一个标志位FlagOnlineUpdate来进行判断,如果不为0x5AA5就进行在线升级,升级完成后改FLASH位置会变为0x5AA5。

App如果需要进行在线升级只需要把FLAGUPDATE_ADDR处的flash的值0x5AA5擦除后,通过NVIC_SystemReset进行复位即可进入到BootLoader进行程序升级了

App需要注意的就是需要修改中断向量表的偏移地址。不然中断触发的时候中断还会回到BootLoader中,无法正常运行app这边工程的中断函数。



原文地址:https://bbs.21ic.com/icview-3219896-1-1.html

或点击 阅读原文 跳转


   info@geehy.com

    www.geehy.com  

   广东省珠海市香洲区广湾街83号01栋

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存