Cooky APM32F072在线升级的实现 虽然APM32F072有提供ISP实现程序通过Uart口进行程序烧录,只要在应用程序中跳转到0×1FFFC800即可,同样不需要改变boot脚的电位就可以完成通过Uart口进行程序升级。但是这样不便于我们按需定制的在线升级过程。所以我们还是通过自定义bootloader和app的方式来实现。 首先我们需要对bootloader和app大小进行分配。 Bootloader 4k IROM的配置如下 APP 124k IROM的配置如下 剩下的一些flash区域用来存储一些参数和在线升级的标志位 Bootloader中只需要加入这部分代码,就可以实现跳转,跳转前注意要关闭所以中断即可 为了让BootLoader能识别是否进人程序升级还是跳转到正常app运行,我通过了一个标志位FlagOnlineUpdate来进行判断,如果不为0×5AA5就进行在线升级,升级完成后改FLASH位置会变为0×5AA5。 App如果需要进行在线升级只需要把FLAGUPDATE_ADDR处的flash的值0×5AA5擦除后,通过NVIC_SystemReset进行复位即可进入到BootLoader进行程序升级了 App需要注意的就是需要修改中断向量表的偏移地址。不然中断触发的时候中断还会回到BootLoader中,无法正常运行app这边工程的中断函数。