0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

IAP代码和APP代码合并烧录过程示范

茶话MCU 来源:茶话MCU 作者:茶话MCU 2021-01-02 18:20 次阅读

我们使用STM32芯片开发产品时,有时需要自带升级功能。因此,开发时除了需要准备基本的应用代码外,还得准备一套升级代码。通常称前者为IAP代码或BOOT代码,后者称之为APP代码。一般来讲,这两套代码基于两个工程完成并生成相应的执行文件,首次烧录时往往希望两套代码合并在一起进行烧录,这样方便、省事。

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

因为只是模拟两个不同地址区的文件合并,所以这里的两个工程代码几乎一样,也很简单,只是存放的地址空间不同。

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

两个工程的内存及中断矢量安排如下两幅图:

e43ef9b2-445e-11eb-8b86-12bb97331649.png

e488793e-445e-11eb-8b86-12bb97331649.png

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

e4cd8632-445e-11eb-8b86-12bb97331649.png

这里使用的是IAR IDE环境,基于上面两个工程分别生成IAP.HEX和APP.HEX两个执行文件。

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

e528d3f2-445e-11eb-8b86-12bb97331649.png

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

e5656fce-445e-11eb-8b86-12bb97331649.png

到此,两个工程的代码都写进芯片了。

现在,先在VIEW菜单里点击下Device Memory,然后在File菜单里选择文件另存操作。你选择HEX或BIN格式都可以。

e59cc6a4-445e-11eb-8b86-12bb97331649.png

使用BIN格式的话注意烧录时给出正确的起始地址。这个另存出来的文件就是合并过的文件了,可以直接拿来烧录。

下面是我基于合并文件烧录的测试结果。跟实际预期效果一样,每按键1次做1次输出,3次后跳转,这样往返操作。

e61d1778-445e-11eb-8b86-12bb97331649.png

操作很简单,也很方便。之前偶尔也会有人问起这个话题。这次整理本文做验证时,结果在做合并时总是失败。因为之前有验证过,坚信这个操作是可行的。后来怀疑可能是我电脑系统方面的原因,换成家里那台电脑测试起来就很顺畅,来回验证多次都正常。看来,我那台电脑该重装或换掉了。

原文标题:IAP代码与APP代码合并烧录示例

文章出处:【微信公众号:ST MCU 信息交流】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2239

    文章

    10671

    浏览量

    348755
  • IAP
    IAP
    +关注

    关注

    2

    文章

    161

    浏览量

    23965
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66771

原文标题:IAP代码与APP代码合并烧录示例

文章出处:【微信号:stmcu832,微信公众号:茶话MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    IAP跳转APP开始可以,如果从APP跳回IAP后再跳到APP失败的原因?

    IAP 跳转APP 开始可以,但如果从APP跳回IAP后,再跳到APP失败。 我是按照 下面ST官方文档来的: AN4657 Applic
    发表于 04-23 07:24

    使用STM32CubeIDE无法通过IAP跳转APP进行软件升级的原因?

    ); iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码}} 上面的引导代码使用两个一秒的闪灯进行识
    发表于 03-28 06:47

    STM32G070 IAP烧录功能正常,一进入app就跑飞是怎么回事?

    我的FLASH烧录是没有问题的,我不知道为什么会出现现在的这个问题,这个代码在F103上是可以正常使用的, 这是我进入APP的地方 这是我程序烧录的地方 ![image.png](d
    发表于 03-28 06:17

    STM32 IAP升级,KEIL如何一份代码运行于两个APP区?

    校验。目前的问题是,没办法使用一份代码运行两个APP。两个APP,则IAP跳转不同的APP,跳转的地址不一样,则
    发表于 03-26 07:20

    烧录机速览:自动管装进料烧录过程#自动烧录

    烧录
    acroview123
    发布于 :2024年01月11日 17:53:38

    单片机BootLoader与APP如何合并

    单片机BootLoader与APP如何合并
    的头像 发表于 10-25 17:17 627次阅读
    单片机BootLoader与<b class='flag-5'>APP</b>如何<b class='flag-5'>合并</b>?

    使用AT-Link离线功能将多个工程代码合并烧录

    类似方案商和终端用户分别设计的各自工程文件代码,如何使用 AT-Link 离线功能将代码合并烧录
    发表于 10-23 06:31

    语音芯片烧录流程概述

    语音芯片的烧录是将特定的固件或软件加载到芯片中,以使其能够执行特定的语音处理功能。以下是一般的语音芯片烧录过程:具体的烧录过程可能因芯片型号、厂商和烧录工具而异,上述步骤仅为一般流程的
    的头像 发表于 10-19 11:19 1029次阅读

    求解,把Bootloader和app合并成一个固件后出现的几个问题

    各位大佬,大家好,我想把Bootloader和app合并成一个固件,但是目前出现问题了,请大家不吝赐教。几种情况如下: 1.单独用J-flash烧录bootloader,然后用RT Studio
    发表于 09-07 18:28

    如何在NUC100上使用FreeRTOS港口和在FreeRTOS上使用示范样本代码

    应用:文件介绍了如何在NUC100上使用FreeRTOS港口和在FreeRTOS上使用示范样本代码。 BSP 版本: NUC100系列 BSP CMSIS v3.00.0003 硬件
    发表于 08-31 07:50

    STM32MP157D移植TF-A出现最后一条信息后烧录过程就报错停止

    出现最后一条信息后,烧录过程就报错停止了
    发表于 08-05 07:30

    MCU控制器需要烧录吗 mcu烧录方法介绍

    烧录过程涉及将编写好的程序代码通过特定的烧录工具(如编程器、烧录器等)连接到MCU的编程接口,并将程序代码传输到MCU的存储器中。这个
    发表于 07-20 14:56 2239次阅读

    STM32的IAP方案实现设计

    IAP即为In Application Programming(在应用中编程),一般情况下,以STM32F10x系列芯片为主控制器的设备在出厂时就已经使用J-Link仿真器将应用代码烧录
    的头像 发表于 06-05 14:23 1934次阅读
    STM32的<b class='flag-5'>IAP</b>方案实现设计

    想学习IAP升级源码+PC工具+MCU的看过来

    对第二部分代码的更新;第二个项目程序即 APP 程序用户真正的功能代码。这两部分项目代码同时烧录在 Flash 中,当芯片上电后,首先是第一
    发表于 05-08 22:33

    S32K312_HSE_FW_INSTALL_V_0_1_2_1调试后APP代码无法烧录

    S32K312_HSE_FW_INSTALL_V_0_1_2_1调试后APP代码无法烧录
    发表于 05-06 07:55