Alden 发表于 2025-3-31 15:11

APM32F0系列IAP升级与STM32F0的差异

#技术资源# #申请原创#
IAP(In-Application Programming)升级是一种通过通信接口实现固件更新的技术,允许设备在运行状态下完成程序更新,无需专用烧录工具。其核心原理是通过Bootloader程序将新固件写入Flash存储器的指定区域,并实现控制权的安全转移。


在测试APM32F030的IAP升级例程发现APM32的SDK升级跳转的方式很简洁,直接配置中断向量表的偏移就可以了。

测试了下确实是能用的,bootload正常跳转到APP中运行。

而找了下以前STM32F030的IAP例程,发现ST的需要在bootload和APP中做特殊的处理,把中断向量表映射到RAM中。
要更加复杂。


APM32F030虽然也可以使用STM32F030的映射方式,但很明显APM32F0的更加简洁方便。
查找ARM的《ARM Cortex-M0与Cortex-M0+权威指南》发现了该差异的根本原因在于APM32F0的是M0+内核,STM32的是M0内核,M0+内核具备一些新特性。
就是这个TBLOFF 向量表偏移寄存器。
所以APM32F0具备更简单的IAP升级方式。


在书的第185页,由于没有电子版的,只能拍照展示。

qiangtech 发表于 2025-4-1 11:46

是的,做项目的时候发现了。极海F0是M0+内核的,可以直接用向量表偏移的方式,M0内核的就不能这样,它没有SCB->VTOR寄存器。
>

onemoren 发表于 2025-4-1 16:43

不用不知道,M0+还有这种人性化设计.{:handshake:}

和谐智者 发表于 2025-4-1 23:02

M0+是M0的升级版本,看来实用性也增强不少

亿年回响 发表于 2025-4-19 23:23

这个要在项目实现里面注意了。

星云避风港 发表于 2025-4-20 08:28

M0系列也不需要一定要把程序运行指针搬到RAM中的

天体书记 发表于 2025-4-22 16:57

还是蛮喜欢M0+内核的指令集的。
M0与M3只是单纯的减少了指令,一个阉割版本而已
页: [1]
查看完整版本: APM32F0系列IAP升级与STM32F0的差异