[APM32F0] APM32F0系列IAP升级与STM32F0的差异

[复制链接]
 楼主| Alden 发表于 2025-3-31 15:11 | 显示全部楼层 |阅读模式
#技术资源# #申请原创#
IAP(In-Application Programming)升级是一种通过通信接口实现固件更新的技术,允许设备在运行状态下完成程序更新,无需专用烧录工具。其核心原理是通过Bootloader程序将新固件写入Flash存储器的指定区域,并实现控制权的安全转移。


在测试APM32F030的IAP升级例程发现APM32的SDK升级跳转的方式很简洁,直接配置中断向量表的偏移就可以了。
d8d0531dfea74bade0b891accb79dea.png
测试了下确实是能用的,bootload正常跳转到APP中运行。

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

APM32F030虽然也可以使用STM32F030的映射方式,但很明显APM32F0的更加简洁方便。
查找ARM的《ARM Cortex-M0与Cortex-M0+权威指南》发现了该差异的根本原因在于APM32F0的是M0+内核,STM32的是M0内核,M0+内核具备一些新特性。
就是这个TBLOFF 向量表偏移寄存器。
所以APM32F0具备更简单的IAP升级方式。
557f920e2ed42abe6a713b11455663a.jpg
bae8d943b4d264df53bad5126d04c7c.jpg
在书的第185页,由于没有电子版的,只能拍照展示。
qiangtech 发表于 2025-4-1 11:46 | 显示全部楼层
是的,做项目的时候发现了。极海F0是M0+内核的,可以直接用向量表偏移的方式,M0内核的就不能这样,它没有SCB->VTOR寄存器。
>
onemoren 发表于 2025-4-1 16:43 | 显示全部楼层
不用不知道,M0+还有这种人性化设计.
和谐智者 发表于 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只是单纯的减少了指令,一个阉割版本而已
分形梦想家 发表于 2025-4-28 18:24 | 显示全部楼层
可以考虑极海的E030系列。实惠、性能还不弱。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

113

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部