打印
[应用相关]

IAP代码与APP代码合并烧录示例

[复制链接]
828|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
我们使用STM32芯片开发产品时,有时需要自带升级功能。因此,开发时除了需要准备基本的应用代码外,还得准备一套升级代码。通常称前者为IAP代码或BOOT代码,后者称之为APP代码。一般来讲,这两套代码基于两个工程完成并生成相应的执行文件,首次烧录时往往希望两套代码合并在一起进行烧录,这样方便、省事。

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

使用特权

评论回复
沙发
盗铃何须掩耳|  楼主 | 2021-11-4 10:24 | 只看该作者
因为只是模拟两个不同地址区的文件合并,所以这里的两个工程代码几乎一样,也很简单,只是存放的地址空间不同。

我使用的开发板是STM32L476RGNucleo板。代码功能都是接受按键,每收到1次按键动作,就打印出目前所在工作区。当收到3次按键后则从当前工作区跳往另一工作区。

使用特权

评论回复
板凳
盗铃何须掩耳|  楼主 | 2021-11-4 10:25 | 只看该作者
两个工程的内存及中断矢量安排如下两幅图:

除了上面的配置差异外,两个工程的代码几乎一样,只是输出提示有别。

使用特权

评论回复
地板
盗铃何须掩耳|  楼主 | 2021-11-4 10:26 | 只看该作者
这里使用的是IAR IDE环境,基于上面两个工程分别生成IAP.HEX和APP.HEX两个执行文件。

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

使用特权

评论回复
5
盗铃何须掩耳|  楼主 | 2021-11-4 10:26 | 只看该作者
使用BIN格式的话注意烧录时给出正确的起始地址。这个另存出来的文件就是合并过的文件了,可以直接拿来烧录。

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

使用特权

评论回复
6
香水城| | 2021-11-4 13:05 | 只看该作者
7
木木guainv| | 2021-12-2 11:36 | 只看该作者
这种方式因该很普遍了

使用特权

评论回复
8
wakayi| | 2021-12-2 11:37 | 只看该作者
APP.HEX 这个执行文件主要是什么呢

使用特权

评论回复
9
wowu| | 2021-12-2 11:38 | 只看该作者
可以进行无线升级吗

使用特权

评论回复
10
xiaoqizi| | 2021-12-2 11:44 | 只看该作者
操作非常的便捷啊

使用特权

评论回复
11
tpgf| | 2021-12-2 11:46 | 只看该作者
这个示例很不错

使用特权

评论回复
12
磨砂| | 2021-12-2 11:47 | 只看该作者
有时候系统匹配的不太好

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

48

主题

376

帖子

0

粉丝