历史上的今天
返回首页

历史上的今天

今天是:2025年08月11日(星期一)

正在发生

2021年08月11日 | STM32 | hex文件、bin文件、axf文件的区别?

2021-08-11 来源:eefocus

在STM32开发中,经常会碰到hex文件、bin文件与axf文件,这些都是可以烧写到板子里运行的文件。这三个文件有什么区别呢?在这之前,先来一起回顾一下C语言编译的过程:


编译的原理

在之前的C语言笔记《C程序的编译过程》中,有简单的分析了C程序编译的几个过程:

======001

STM32也是用C语言来开发,也会经过类似的编译过程,只不过我们常常用MDK或者其它IDE来编译,其编译过程如下:

======002

例如,我们的LED程序编译过程如下:

======003

在IDE中进行编译时,我们只需点击编译按钮即可完成这些过程,编译过程用到的工具(.exe文件)在IDE的安装目录下的某个文件夹下,比如我们这里用的MDK的编译工具路径:

======004

一般这些IDE或者工具集的一些编译工具都放在bin文件夹。再比如我们MinGW工具集(里面包含gcc/g++编译器,可以编译在电脑上运行的程序)的编译工具所在路径为:

======005

回归正题,我们的MDK编译时就是使用安装路径下的这些编译工具来完成我们的编译过程。究其本质,我们在cmd命令窗口也是可以通过命令来编译我们的STM32程序的(前提是配好环境变量,否则得到编译工具所在的路径下进行编译),但是我们不会这样干(有这功夫就可以去学学Linux),因为IDE已经给我们提供了很大的便利。比如:

======007

下面看一下我们在cmd窗口下运行armcc命令看会发生什么:

======006

我们看到了很多关于armcc命令的提示说明,有些常用的编译选项已经集成在MDK里供我们选择,比如:

======008

可烧录的文件

axf文件、hex文件与bin文件都是可以运行在我们的stm32上的,它们都存储了编译器根据源代码生成的机器码,根据应用场合的不同,它们又有所区别。

axf文件:包含调试信息。
hex文件:包含地址信息。
bin文件:最直接的代码映像。1.2.3.

axf文件是编译默认生成的文件,不仅包含代码数据,而且还包含着调试信息,在MDK里进行debug调试用的就是这个文件。hex文件在MDK里要勾选如下选项才可以生成:

========009

hex 文件是一种使用十六进制符号表示的代码记录, 记录了代码应该存储到FLASH 的哪个地址,下载器可以根据这些信息辅助下载。


bin文件是根据axf文件生成的,需要在MDK下添加类似如下格式命令来生成对应的bin文件:

======010

bin文件就是最小的可以运行的文件了,其包含最直接的代码映像。这三个文件中axf文件最大,hex文件次之,bin文件最小,如:

======011

关于它们的区别这里只是简单的阐述说明,有时间、有精力、有兴趣的朋友可以去分析它们里面的内容。


离线文件的烧录方法

hex文件的烧录,我们可以使用FlyMcu工具通过串口来下载:

======012

FlyMcu不可以烧bin文件,因为上面说过了bin文件只包含最直接的代码映像,不包含地址信息,会出现如下错误:

======013

bin文件可以使用STM32CubeProgrammer软件通过STLINK进行下载:

======014


推荐阅读

史海拾趣

Base Two (2) Systems公司的发展小趣事

随着产品技术的不断成熟,Base Two (2) Systems开始积极拓展市场。公司通过与各大电子厂商、分销商建立紧密的合作关系,将产品推向更广阔的市场。同时,公司还积极参加各类行业展会和交流活动,与业内同行深入交流,共同探讨行业发展趋势,为公司的长远发展奠定了坚实的基础。

Captive Fastener公司的发展小趣事

Captive Fastener公司深知产品质量是企业生存和发展的关键。公司建立了严格的质量管理体系,从原材料采购到生产加工、产品检验等各个环节都进行严格把关。此外,公司还定期对员工进行质量意识和技能培训,确保每一道工序都符合质量标准。这些措施有效提升了公司的产品质量和客户满意度。

ES Systems公司的发展小趣事

ES Systems自创立之初就专注于电子系统技术的研发。公司创始人是一位资深的电子工程师,他带领团队不断突破技术瓶颈,开发出了一系列高性能的电子系统产品。随着技术的不断成熟和产品线的丰富,ES Systems逐渐在市场中树立了技术领先的形象,吸引了大量客户的青睐。公司通过技术驱动实现了快速成长,并在电子行业中占据了重要地位。

Anderson Power公司的发展小趣事

ES Systems非常重视与产业链上下游企业的合作。通过与供应商、渠道商等合作伙伴的紧密合作,公司能够及时了解市场需求和技术趋势,从而快速调整产品策略。此外,ES Systems还积极与高校和科研机构开展产学研合作,共同研发新技术、新产品。这种合作模式为ES Systems带来了持续的创新动力和市场竞争力。

Fillfactory Nv公司的发展小趣事

FIDELIX公司成立于1990年,是一家专注于存储芯片研发与销售的韩国企业。在公司成立初期,FIDELIX凭借对技术的深入研究和对市场的敏锐洞察,成功推出了多款性能优越的NAND FLASH(闪存)和SDR/DDR(单/双数率同步动态存储器)等存储芯片产品。这些产品不仅在韩国市场上获得了良好的口碑,同时也开始逐步进入国际市场。

随着技术的不断进步和市场的不断扩大,FIDELIX逐渐在韩国存储芯片领域崭露头角。公司不断投入研发资金,加强技术创新,努力提升产品的性能和品质。同时,FIDELIX也积极拓展销售渠道,与多家国内外知名厂商建立了合作关系,为公司的持续发展奠定了坚实的基础。

eLED.com Corp公司的发展小趣事

随着国内市场的逐渐饱和,eLED.com Corp开始将目光投向国际市场。公司积极参与各类国际展会,向全球客户展示其优质的产品和技术。同时,eLED.com Corp还与国际知名企业开展合作,共同研发新技术,推动LED行业的发展。通过与国际巨头的合作,eLED.com Corp不仅提升了自身的技术水平,还拓展了国际市场,实现了品牌的全球化布局。

问答坊 | AI 解惑

PCB板线宽与线间距怎么规定

画PCB板的时候导线的宽度与电流有个什么样的关系?导线的间距与电压有个什么关系。有谁有这方面的资料吗?…

查看全部问答>

STC单片机实现阀值的设置和显示功能, 不知道怎么做.请教大家给个方法!

STC单片机实现阀值的设置和显示功能, 不知道怎么做.请教大家给个方法! 描述:有两个按钮,分别设置阀值的+和-,一个LED用来显示当前设置值.…

查看全部问答>

为何无线网卡不能得到所有的数据?

就是DDK带的那个ndisprot的例子,我绑定一个有线网卡,在2台机器上都安装ndisprot驱动.一个发送,一个接收,(有线对有线)一切都OK.我发送的是自己填充的包,1024bytes的. 但是如果我绑定到无线网卡上,(无线对无线)同样的发送,但它只能接收59bytes的数据, ...…

查看全部问答>

编译时提示如下错误,这是什么错误啊?谢谢了

在编译verilog程序是,出现下面的错误,这是什么错误啊???谢谢了  我的工程项目是放在英文目录下的。…

查看全部问答>

请教各位大虾,函数里面的% !等都什么意思?

函数里面的% !等都什么意思?这个函数Diab编译器可以通过,Green Hills的Multi编译器通不过。应该是PowerPC指令或者汇编指令。asm void MOVE_TO_SPR(unsigned long reg, unsigned long value){% con reg; reg value;!  mtspr reg,v ...…

查看全部问答>

学习CLA的笔记,

这是个笔记,也算是个翻译,没有校对。 …

查看全部问答>

DIY建议+多参量调试信号源

我们在工作或学习中,调试电路的时候,经常需要用到些信号源和测量仪器 我们有时需要跟调试目标板提供交流信号多少赫兹,多少mV、或高精度直流基准源,怎么办,如果自己条件不允许,没有需要的设备怎么办!! 我们可以参考下ADI公司里的实验室电 ...…

查看全部问答>

Linux-2.6.21 S3c6400中断剖析<三>(原创)-上海嵌入式索漫科技培训教材

作者:下家山(请尊重原创,转载请注明)  http://www.xiajiashan.com  三:当中断发生时,kernel怎么知道的??? 3.1  ARM体系中关于异常的定义 要解释这个问题,首先要明白ARM体系关于中断的一些规定。在ARM & ...…

查看全部问答>

论坛有没有做Silicon Labs公司壁虎MCU的?

论坛有没有做Silicon Labs公司壁虎MCU的? 低功耗性能到底怎样? 哪里有容易搞到Silicon Labs公司东东的地方?填写过好几个测验,都没中过奖,估计一看我没有公司或者一查公司虚假不存在就根本不考虑了…

查看全部问答>