[应用相关] IAP代码与APP代码合并烧录示例

[复制链接]
1299|11
 楼主| 盗铃何须掩耳 发表于 2021-11-4 10:24 | 显示全部楼层 |阅读模式
我们使用STM32芯片开发产品时,有时需要自带升级功能。因此,开发时除了需要准备基本的应用代码外,还得准备一套升级代码。通常称前者为IAP代码或BOOT代码,后者称之为APP代码。一般来讲,这两套代码基于两个工程完成并生成相应的执行文件,首次烧录时往往希望两套代码合并在一起进行烧录,这样方便、省事。

这里就该需求,利用ST提供的工具软件STLINKUtility来示范下合并过程。

 楼主| 盗铃何须掩耳 发表于 2021-11-4 10:24 | 显示全部楼层
因为只是模拟两个不同地址区的文件合并,所以这里的两个工程代码几乎一样,也很简单,只是存放的地址空间不同。

我使用的开发板是STM32L476RGNucleo板。代码功能都是接受按键,每收到1次按键动作,就打印出目前所在工作区。当收到3次按键后则从当前工作区跳往另一工作区。
875136183446c9dcb9.png
 楼主| 盗铃何须掩耳 发表于 2021-11-4 10:25 | 显示全部楼层
两个工程的内存及中断矢量安排如下两幅图:
799706183448af33f8.png
除了上面的配置差异外,两个工程的代码几乎一样,只是输出提示有别。
17629618344a115c45.png
 楼主| 盗铃何须掩耳 发表于 2021-11-4 10:26 | 显示全部楼层
这里使用的是IAR IDE环境,基于上面两个工程分别生成IAP.HEX和APP.HEX两个执行文件。

然后打开STLINKUtility工具,连接开发板,将芯片擦除干净。接着,开始烧录,先烧IAP.hex文件。【其实先烧录谁无所谓】
20719618344c7a9779.png

 楼主| 盗铃何须掩耳 发表于 2021-11-4 10:26 | 显示全部楼层
使用BIN格式的话注意烧录时给出正确的起始地址。这个另存出来的文件就是合并过的文件了,可以直接拿来烧录。

下面是我基于合并文件烧录的测试结果。跟实际预期效果一样,每按键1次做1次输出,3次后跳转,这样往返操作。
66682618344e29b697.png
操作很简单,也很方便。之前偶尔也会有人问起这个话题。这次整理本文做验证时,结果在做合并时总是失败。因为之前有验证过,坚信这个操作是可行的。后来怀疑可能是我电脑系统方面的原因,换成家里那台电脑测试起来就很顺畅,来回验证多次都正常。看来,我那台电脑该重装或换掉了。

香水城 发表于 2021-11-4 13:05 | 显示全部楼层
木木guainv 发表于 2021-12-2 11:36 | 显示全部楼层
这种方式因该很普遍了
wakayi 发表于 2021-12-2 11:37 | 显示全部楼层
APP.HEX 这个执行文件主要是什么呢
wowu 发表于 2021-12-2 11:38 | 显示全部楼层
可以进行无线升级吗
xiaoqizi 发表于 2021-12-2 11:44 | 显示全部楼层
操作非常的便捷啊
tpgf 发表于 2021-12-2 11:46 | 显示全部楼层
这个示例很不错
磨砂 发表于 2021-12-2 11:47 | 显示全部楼层
有时候系统匹配的不太好
您需要登录后才可以回帖 登录 | 注册

本版积分规则

50

主题

385

帖子

0

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