搬砖工小王 发表于 2022-5-7 09:34

APM32F072在线升级的实现

本帖最后由 搬砖工小王 于 2022-5-7 09:34 编辑

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这边工程的中断函数。



xiaoyaodz 发表于 2022-5-16 09:56

可以使用云升级吗

backlugin 发表于 2022-5-16 10:26

后期升级可以参考一下。

rosemoore 发表于 2022-5-16 10:45

使用keil环境?

kkzz 发表于 2022-5-16 11:12

OAT吗   

plsbackup 发表于 2022-5-16 11:45

这个是多大的ram呢?

burgessmaggie 发表于 2022-5-16 12:24

APM32F072性能怎么样   

updownq 发表于 2022-5-16 13:13

APM32F072兼容stm32哪个芯片呢?

flampard 发表于 2022-5-16 19:13

updownq 发表于 2022-5-16 13:13
APM32F072兼容stm32哪个芯片呢?

兼容STM32F072

flampard 发表于 2022-5-16 19:14

rosemoore 发表于 2022-5-16 10:45
使用keil环境?

是使用KEIL

JunKook 发表于 2022-5-16 21:22

请问下应用程序有没备份哇?如果升级失败呢?

liqingfeng123 发表于 2022-5-24 09:37

JunKook 发表于 2022-5-16 21:22
请问下应用程序有没备份哇?如果升级失败呢?

可以使用IAP来做备份,升级失败可以用原先的app.

WoodData 发表于 2022-5-25 15:47

看看

robincotton 发表于 2022-10-5 18:36

APM32F072是工业级增强型系列MCU吗?

linfelix 发表于 2022-10-5 19:47

内核IAP升级的                  

tifmill 发表于 2022-11-1 10:17

什么叫在线升级呢?            

claretttt 发表于 2022-11-1 14:45

APM32可以实现网络串口下载吗

kkzz 发表于 2022-11-1 15:33

APM32F072有Uart口进行程序烧录

yorkbarney 发表于 2022-11-1 16:06

这个的代码备份是怎么实现的            

lihuami 发表于 2022-11-1 16:45

这个BootLoader的代码在哪能够下载?
页: [1] 2
查看完整版本: APM32F072在线升级的实现