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
    +关注

    关注

    2265

    文章

    10870

    浏览量

    354719
  • IAP
    IAP
    +关注

    关注

    2

    文章

    163

    浏览量

    24246
  • 代码
    +关注

    关注

    30

    文章

    4742

    浏览量

    68327

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

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

收藏 人收藏

    评论

    相关推荐

    单片机烧录程序的线比单片机上的少还能烧录

    的存储器通常分为两类:ROM(只读存储器)和RAM(随机存取存储器)。ROM用于存储程序代码,而RAM用于存储程序运行过程中的数据。烧录过程就是将程序代码写入ROM中。 单片机
    的头像 发表于 09-02 09:54 405次阅读

    单片机程序烧录成功为什么不运行

    烧录问题 : 确保烧录过程没有中断或错误。 检查烧录器和连接线是否工作正常。 确认烧录器设置(如电压、波特率等)与单片机兼容。 电源问题 : 检查单片机是否获得了正确的电源电压。 确保
    的头像 发表于 09-02 09:45 1497次阅读

    晶华微多用户代码烧录器解决方案

    随着杭州晶华微电子股份有限公司(股票代码:688130)芯片产品线的扩展,对烧录器的需求也逐渐增加。当前烧录器支持单个用户代码的在线烧录和离
    的头像 发表于 08-29 17:34 434次阅读
    晶华微多用户<b class='flag-5'>代码</b><b class='flag-5'>烧录</b>器解决方案

    使用CUBE IDE无法通过IAP跳转APP进行软件升级怎么解决?

    。 int main(void) { while(1){ iap_load_app(FLASH_APP1_ADDR);//执行FLASH APP代码}} 上面的
    发表于 07-31 07:48

    请问怎么基于stm32实现IAP功能?

    以下boot leader 是设想最简单的功能,就是跳转到下一块程序地址为0x08008000,截图: 然后APP是从0x0800 8000 开始的,也在网络上的教程更改了偏移,但是boot一跳转就卡死,不知道怎么实现IAP最基础的功能(即boot和
    发表于 05-20 06:59

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

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

    stm32f1使用IAP升级后STemwin显示图片速度变慢的原因?

    IAP升级标志区,存放IAP升级标志。 app程序中使用了ucos操作系统和STemwinGUI。 我遇到的问题是,同一个app程序烧录
    发表于 03-29 08:08

    使用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

    g代码和m代码表示什么功能

    加工的动作指令。在程序中,多条G代码指令按顺序组成一个工艺过程,以实现工件的形状加工。G代码可分为基本功能代码和辅助功能代码。 基本功能
    的头像 发表于 02-14 15:49 3960次阅读

    什么是烧录?怎么判别IC是否烧录过

     IC烧录的基本流程,有时候我们会买来新料,新料一般是空白的可以跳过清除这道程序。
    的头像 发表于 02-02 14:14 5438次阅读

    CS32G020烧录配置代码选项?

    CS32G020软件上修改代码选项值后,烧录如何配置代码选项一样进行烧录
    发表于 02-02 02:37

    keil中GD32 MCU IAPAPP的存储地址如何设置?

    前面和大家聊过什么是IAP(有不懂的小伙伴请看下前面的视频哦),那么IAPAPP的存储地址该如何设置呢?
    的头像 发表于 01-29 09:37 999次阅读
    keil中GD32 MCU <b class='flag-5'>IAP</b>中<b class='flag-5'>APP</b>的存储地址如何设置?

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

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