我们使用STM32芯片开发产品时,有时需要自带升级功能。因此,开发时除了需要准备基本的应用代码外,还得准备一套升级代码。通常称前者为IAP代码或BOOT代码,后者称之为APP代码。一般来讲,这两套代码基于两个工程完成并生成相应的执行文件,首次烧录时往往希望两套代码合并在一起进行烧录,这样方便、省事。
这里就该需求,利用ST提供的工具软件STLINKUtility来示范下合并过程。
因为只是模拟两个不同地址区的文件合并,所以这里的两个工程代码几乎一样,也很简单,只是存放的地址空间不同。
我使用的开发板是STM32L476RGNucleo板。代码功能都是接受按键,每收到1次按键动作,就打印出目前所在工作区。当收到3次按键后则从当前工作区跳往另一工作区。
两个工程的内存及中断矢量安排如下两幅图:


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

这里使用的是IAR IDE环境,基于上面两个工程分别生成IAP.HEX和APP.HEX两个执行文件。
然后打开STLINKUtility工具,连接开发板,将芯片擦除干净。接着,开始烧录,先烧IAP.hex文件。【其实先烧录谁无所谓】

之后,将当前IAP.HEX文件关闭,再调APP.hex文件进行烧录。注意这次烧录时选择跳过FLASH的擦除操作,因为刚开始已经全擦,而且前面已经写了IAP代码。

到此,两个工程的代码都写进芯片了。
现在,先在VIEW菜单里点击下Device Memory,然后在File菜单里选择文件另存操作。你选择HEX或BIN格式都可以。

使用BIN格式的话注意烧录时给出正确的起始地址。这个另存出来的文件就是合并过的文件了,可以直接拿来烧录。
下面是我基于合并文件烧录的测试结果。跟实际预期效果一样,每按键1次做1次输出,3次后跳转,这样往返操作。

操作很简单,也很方便。之前偶尔也会有人问起这个话题。这次整理本文做验证时,结果在做合并时总是失败。因为之前有验证过,坚信这个操作是可行的。后来怀疑可能是我电脑系统方面的原因,换成家里那台电脑测试起来就很顺畅,来回验证多次都正常。看来,我那台电脑该重装或换掉了。
原文标题:IAP代码与APP代码合并烧录示例
文章出处:【微信公众号:ST MCU 信息交流】欢迎添加关注!文章转载请注明出处。
责任编辑:haq
-
STM32
+关注
关注
2313文章
11191浏览量
374580 -
IAP
+关注
关注
2文章
169浏览量
26178 -
代码
+关注
关注
30文章
4976浏览量
74370
原文标题:IAP代码与APP代码合并烧录示例
文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
新手必看:一文读懂什么是芯片烧录及程序下载全过程
IC烧录总是出错?可能是烧录座不匹配
如何正确配置AG32 MCU,实现FLASH或者代码加密?
芯片编程器使用指南:如何避免芯片烧录过程中的常见错误
芯片烧录原理是什么?一文读懂芯片程序烧录全过程
如何给Gokit3烧录程序(MCU+FlyMcu版)
快速上手!带你用LVGL工具完成乐鑫科技ESP32-S3 2.8寸串口屏UI开发!代码完全开源!
ota升级完成后,bootloader没有将download区的新代码搬运到app区?
STM32+esp8266连接机智云,上传温湿度数据并控制继电器开关(平台配置、代码生成、代码移植)
AT32 IAP using the USART
机智云配网教程 第二期:生成MCU代码包与调试
HarmonyOS 代码工坊的指尖开发,让 APP 开发所见即所得
IAP代码和APP代码合并烧录过程示范
评论