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

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

3天内不再提示

如何把IAP与APP程序进行拼接在一起

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-03-03 14:26 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1写在前面

在产品量产时,产品具有IAP和APP两部分程序时,一般需要拼接成一个量产程序文件。

有人肯定会好奇,为什么要拼接成一个程序文件呢?

这个答案很简单:为了提高生产效率,在量产只烧录一个程序文件(而不是烧录IAP + APP两个程序文件)。

下面写几点内容:

理解bin、hex、axf

IAP+APP拼接方法

bin和hex互相转换

2

理解bin、hex、axf

想要掌握程序IAP+APP程序拼接,需要理解程序文件hex、bin文件格式内容。

先给一张三者的对比图:

Bin文件

Bin文件就是一种没有格式的程序文件,只是包含了程序数据。

Hex文件

Hex是由Intel制定的一种十六进制标准文件格式,是由编译器转换而成的一种用于下载带处理器里面的文件。

Hex文件格式是由一行一行的十六进制数据组成,每行包含:开始、长度、数据、类型、校验和等重要信息。

axf文件

axf文件是经过编译器编译之后,包含具有程序、调试等更多信息的一种文件。

对比MDK-ARM编译后三个文件大小

Objects目录下:

Demo.axf(236K)

Demo.hex(4K)

Bin目录下:

Demo.bin(2K)

请参看:关于bin、hex和axf文件格式的描述

3

IAP+APP拼接方法

用于产品量产,烧录的程序文件,一般是hex,或bin文件。

不管是hex文件,还是bin文件,我们都需要通过烧录软件 +烧录(编程)工具实现。

烧录软件针对不同MCU,一般有不同的烧录软件。

针对STM32,一般建议使用官方提供的STVP、ST-LINK Utility和STM32CubeProg这三种编程软件。

拼接说明

拼接IAP+APP两段程序,一般简单方法就是:将两个程序分别烧录进去,再统一读取出来,保存成一个量产文件。

拼接说明

IAP和 APP程序的起始地址是不同的,因此烧录进芯片,是存储在两片区域的。

烧录程序的时候,特别是烧录bin文件(没有地址)时,要注意设置好起始地址。hex文件有地址地址,不用自己设置地址。

读取“合并”程序的时候,同样要注意起始地址,还有读取大小,保证读取全部程序。

比如通过ST-LINK Utility读取STM32程序:

通过STM32CubeProg读取STM32程序:

再次提示:

烧录bin文件时,设置好起始地址;

读取时,设置起始地址,读取大小;

保存可选择hex,还是bin文件;

这里推荐阅读:我的ST-Link专栏

4

bin、hex文件互相转换

在某些情况下需要使用特定格式的文件,比如我们远程升级,要求通过bin文件实现。

通过上面的介绍,其实你会发现,使用编程软件ST-LINK Utility,或STM32CubeProg,就能直接另存为hex,或bin文件格式。

ST-LINK Utility另存为:

STM32CubeProg另存为:

之前我有介绍在MDK-ARM中,直接转换成bin文件的文章:MDK-ARM如何生产Bin文件

当然,bin和hex格式文件互相转换的工具,网上有很多,感兴趣的朋友可以搜索了解一下。

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

    关注

    2

    文章

    165

    浏览量

    25797
  • 编译器
    +关注

    关注

    1

    文章

    1669

    浏览量

    51076
  • BIN文件
    +关注

    关注

    0

    文章

    27

    浏览量

    8935
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    AT32 MCU如何使用IAP

    。 AT32微控制器的IAP功能允许用户在产品发布后方便地通过预留的通信口对产品中的固件程序进行更新升级。要实现IAP功能,需要设计两个项目代码:
    发表于 08-08 17:13

    AT32 IAP using the USART

    -app1工作,LED4闪烁-app2工作 图 2. IAP demo 上位机 AT32 USART IAP 程序设置 地址分布 表 1.
    发表于 07-11 10:51

    如何对CYBT-223058-02模块(非 EVAL)进行编程?

    )的电源。 我电源的接地、TTL 电缆和模块全部连接在一起。 我在 modustoolBox3.1 上为 EVAL 板构建了 rfcomm_serial_Port 示例(没有变化),然后在快速面板中点
    发表于 07-04 06:27

    无法将Jlink调试器与CYBT263065EVAL COOLDIM_PRG_BOARD连接在一起怎么解决?

    我无法将 Jlink 调试器与 CYBT263065EVAL COOLDIM_PRG_BOARD连接在一起
    发表于 07-03 06:24

    实现IAP功能,使用cubeide生成APP程序的bin文件写入Flash之后,无法跳转到APP程序中,为什么?

    实现IAP功能,使用cubeide生成APP程序的bin文件写入Flash之后,无法跳转到APP程序中。 但是使用KEIL编译生成的bin文
    发表于 06-09 07:32

    STM32F103 flash的app区域有上次的残留代码,会造成死机怎么解决?

    的代码是连接在一起。 右图为正常的flash中的代码。 所以想请教下,左图中的那种flash,从理论上来讲,连接在正常代码后面的异常代码,会造成那些影响,或者隐患。 备注:图中边条里,其它位置的红色
    发表于 03-11 07:29

    ADS1258芯片底部的散热片需要与地连在一起吗?

    ADS1258芯片底部的散热片需要与地连在一起吗?我的电路中给ADS1258供电的是正负2.5V,全部按照推荐电路设计的,两道的ADS1258的REF+端的电压是0V,REF-端的是-2.5V
    发表于 02-14 06:14

    ADS1217是需要2个电源隔离供电吗?还是接在一起,对测量精度有多大影响?

    是需要2个电源隔离供电吗,还是接在一起,对测量精度有多大影响 比如: 电路单片机供电VDD=5V,有路DCDC隔离出AVDD=5V,我在AD供电的时候是不是DVDD就接单片机的电源,AVDD接DCDC隔离的5V,而单片机IO和ADSPI引脚就不需要光耦隔离了?
    发表于 02-11 07:55

    3片的16位总线全部并联了,3片的16位总线直接黏在一起可以吗?

    我的板子上3片ADS8556采用的是16bit并行数据总线与FPGA相连。我3片的16位总线全部并联了,电路图如下: 看不清请见pdf附件。 唯问题就是3片的16位总线直接黏在一起可以吗
    发表于 02-08 06:13

    ADS1198有两个时钟,CLK和SCLK,这两个时钟信号能接在一起吗?

    最近在做这块芯片,看到有两个时钟,CLK和SCLK,这两个时钟信号能接在一起吗,就是说CLK和SLCK能不能使用同个时钟信号?另外,关于芯片的SPI输入输出,要不要做些初始化的工作,这些我好想在手册上没看到
    发表于 02-07 06:28

    电路图设计:需要问下,需要哪些零件可以组合在一起组成个音箱?

    目前手头上只有这个音响。现在需要问下,需要哪些零件可以组合在一起组成个音箱?嗯,设备呃,包括哪些是多大的电容电阻和三极管,最好能详细到多大的二极管,三极管电容电阻
    发表于 01-24 13:05

    ADS7953 MXO和AINO般都是连在一起的,但要保证Rsource<50Ω,请问这个Rsource是指哪里?

    数据手册上说,MXO和AINO般都是连在一起的,但要保证Rsource<50Ω,请问这个Rsource是指哪里,怎么理解
    发表于 01-15 08:03

    ADS1274“模拟地”和“数字地”是接在一起好,还是分开连接好?

    地和模拟地需要全部接到模拟地上。那么请问对于ADS1274而言,到底“模拟地”和“数字地”是接在一起,还是分开连接,性能更好呢。尤其是对于电路噪声这性能来说。
    发表于 12-30 07:24

    是否可以将6片TLV5638的REF脚并联在一起接到基准电压?

    我设计的个系统中,用到6片TLV5638作为DA输出,我使用外部基准电压作为REF的输入,请问我是否可以将6片TLV5638的REF脚并联在一起接到基准电压? 这样使用会有什么影响吗? 如不能这样使用,能否推荐种6片TLV
    发表于 12-27 08:27

    将AINN和AGND接在一起,请问AMC1306M25的AGND的地和隔离电源的地是个地吗?

    一起,请问AMC1306M25的AGND的地和隔离电源的地是个地吗? 如果不是AGND我应该怎么接?
    发表于 12-23 08:25