冰冻三尺非一日之寒,滴水穿石非一日之功

文章目录

  • 引言
  • 文件分类
    • 1、bin文件
    • 2、hex文件
    • 3、axf文件
    • 4、elf文件
  • 总结

参考资料:深度理解编译过程
参考资料:深度理解编译文件

引言

bin、hex、elf、axf作为嵌入式开发中比较常见的文件格式,一直在使用,从未深入理解过相关区别和联系。借本篇章做个简短总结,描述相关差异。如有错漏之处,敬请指正。

文件分类

1、bin文件

bin文件是单纯的数据文件,直接存储于flash当中。由于不包含地址信息,使用下载器时往往需要设置起始地址。也正是由于其不包含其他信息,故编译生成的文件中,bin文件所占内存最小。其查看方式也需要特定的二进制查看器。如图所示,使用J-flash打开一个二进制文件。

2、hex文件

本文所述hex文件为Intel Hex,是由Intel Hex,本质是ASCII文本行组成,由换行符或回车符或两者分隔。文件以行为单位记录数据,每行都由任意数量的十六进制数组成。它们按以下格式排列

: A B C D E
1Byte 2Byte 1Byte N Byte 1 Byte

: 数据开头,固定格式
A:本行数据的长度
B:数据起始地址
C:数据类型
D:数据字节(其长度大小与A相同)
E:校验和(0x100 - 累加和)

关于C数据类型的详解

00 Value
01 数据记录
02 文件结束记录
03 扩展段地址记录
04 扩展段地址记录
05 扩展线性地址记录
06 开始线性地址记录

如下是截取的部分hex文件

:020000040800F2
:200000006837002069010008750700086D07000871070008F9010008D11000080000000044
:20002000000000000000000000000000F90B000861020008000000007F010008350D000877
......
:00000001FF

代入分析 :020000040800F2

02:数据长度两个字节
0000:起始地址为0x0000
04:数据类型,扩展地址为0x0800 指示以下每行的高位地址为0x0800
0800:数据
F2:校验和 (0x100-0x0E (2+4+8) )
该行指示 以0X0800作为段扩展地址高位,以下每行高位地址为0X0800
则第二行的记录的起始地址为0X08000000
第三行的记录地址为0X08000020

3、axf文件

axf文件如何打开
axf文件是基于ARM编译器产生的包含调试信息的编译文件。使用MDK开发环境时,进入调试模式下,需要依赖于axf文件。MDK5在调试下,会通过J-LINK将axf文件下载如单片机中,用于设备调试。
axf文件的调试信息作用:

可将源代码包括注释夹在反汇编代码中,这样我们可随时切换到源代码中进行调试。
还可以对程序中的函数调用情况进行跟踪(通过Watch & Call Stack Window查看)。
对变量进行跟踪(利用Watch & Call Stack Window)。

4、elf文件

elf文件(elf文件详解)是LInux系统下产生的包含调试信息的文件,使用Readif指令可以获取、查看elf文件内容。相较于其他三种文件,elf文件包含的信息更多,也更复杂。

总结

受限于个人技术水平,相关分类可能介绍的不是很清楚。文中也贴有大佬们所写分析文章链接,感兴趣的同学可点击跳转深入理解一下。

bin、hex、elf、axf文件解析相关推荐

  1. 将FPGA MCS 文件转成BIN (HEX or EXO) 文件

    使用TCL命令promgen,如: promgen -p bin -r test.mcs -o mytest.bin

  2. 一文弄懂BIN、HEX、AXF、ELF文件格式的区别

    数据量比较 从存储数据的信息量上看:ELF>AXF>HEX>BIN,所以这也就确定了只能将大信息量的文件格式向小信息量的文件格式转换,如只能将HEX文件转换为BIN文件,当然如果指定 ...

  3. .axf文件_Keil开发环境如何生成BIN文件

    为什么需要BIN文件呢? 有些烧录器只支持BIN文件. 进行OTA远程升级时,只能使用BIN文件. 使用JLink脚本文件进行一键烧录时,只支持BIN文件. BIN文件要比HEX和AXF文件小的多. ...

  4. Hex、bin、axf、elf格式文件小结

    一.HEX Hex文件,一般是指Intel标准的十六进制文件.Intelhex 文件常用来保存单片机或其他处理器的目标程序代码.它保存物理程序存储区中的目标代码映象.一般编程器均支持生成此种格式文件. ...

  5. ARM:ELF bin Hex axf

    前言: PC平台流行的可执行文件格式(Executable File Format),主要是Windows下的PE(Portable Executable)和Linux的ELF(Executable ...

  6. BIN,S19,M0T,SREC,HEX文件解析;FileParse(二)之源码解析

    简介 一.摘要 1.描述 2.关键字 二.为何选择C#解析 三.BIN文件解析 四.BIN文件生成 五.S19,M0T,SREC文件解析 六.S19,M0T,SREC文件生成 七.HEX文件解析 八. ...

  7. axf文件、hex文件、bin文件区别

    axf文件.hex文件与bin文件都可以运行在stm32,都存储了源代码通过编译器生成的机器码. axf文件:编译默认生成的文件,包含代码数据和调试信息,在MDK里进行debug调试用的文件. hex ...

  8. BIN,S19,M0T,SREC,HEX文件解析;FileParse(一)之文件详解

    简介 一.摘要 1.描述 2.关键字 二.为什么要文件解析 三.BIN文件格式 四.S19,M0T,SREC文件格式 五.HEX文件格式 六.源码下载 七.其他 八.参考 一.摘要 1.描述 本文主要 ...

  9. STM32的烧录和Hex/bin烧录文件解析

    一.STM32的烧录 1. 用IDE工具烧录 可以配置IAR或Keil,用IDE下载.硬件工具需要使用ST-Link(分为SWD或Jtag方式,SWD连线少,比较常用于调试)或J-Link连接到板子的 ...

最新文章

  1. 数学的关键是概念而非技巧
  2. 是时候搁置Grunt,耍一耍gulp了
  3. ProgressBar进度条颜色改变
  4. python矩阵运算numpy_Python Numpy中的几个矩阵乘法
  5. Padrino 生成器指南
  6. 用python编写一个求偶数阶乘的函数_一行Python代码写阶乘函数
  7. dbhelp mysql c_C++写的一个MYSQL控制台(3)
  8. linux远程安装和使用
  9. 配置好网络文件还是连不上外网
  10. java 实验报告模板_java实验报告模板
  11. 用c语言计算sin计算器,C语言计算器
  12. user-agent概括
  13. visio业务流程图教学_visio业务流程图怎么画
  14. java八大数据类型详解及其变量详解
  15. Python简单GUI(模拟放大镜)
  16. Lib Dll在VS2008下的编译和使用-持续更新,欢迎拍砖
  17. mysql语句更新顺序_MySQL的Update语句Set顺序问题
  18. 对 VoIP 提供商的大规模 DDoS 攻击和模拟 DDoS 测试
  19. 用canvas画七彩虹伞
  20. win10下基于anaconda利用keras开展16系显卡GTX1650的GPU神经网络计算

热门文章

  1. AxureRP6.5原型设计软件及License
  2. Hello Spring Validation, 我爱你不问归期
  3. LOJ6435 PKUSC2018星际穿越
  4. fastadmin在html中查询数据,Fastadmin使用—新增可视化数据
  5. 微信公众号裂变式营销代码实现,PHP,具体看图片
  6. js修改对象数组中其中某一项属性值
  7. JS获取系统语言、浏览器语言navigator.language和navigator.languages
  8. apache配置可下载文件夹
  9. 163邮箱登录页面,如何快速登陆163邮箱?
  10. Linux设置防火墙允许icmp,Linux下防火墙设置