笔者对嵌入的几种文件进行简单介绍。

1. bin文件

bin文件是比较简单的文件,没什么格式,就是一个二进制文件(软件会显示用十六进制显示,方便阅读)。用户可以按照自己的方式写入,然后再自己读取并解析数据。可以看到下载bin文件时,需要指定下载地址。而hex文件则不需要。

比如一个bin的数据文件,下载到芯片中(比如通过链接脚本指定代码段),然后芯片运行的时候,在指定地址按照自定义方式去取数据并解析。比如下面这个帧格式的数据,按照既定方式解析即可(超过一个字节的数据,基本都是小端模式)。


2. hex文件

hex文件格式认识

3. axf文件

axf是arm excutable file (ARM可执行文件)的缩写,由ARM编译器产生,还附加调试信息等,主要由以下几个段:

头部信息、向量表(中断 跳转)、Boot(bootload代码)、Code((text + RO))、DATA(代码段 RW +ZI(bss段))、Stack、Heap、Debug(调试段)和Symbol(symbol 符号)

通过readelf指令可以解析axf文件,看到里面的各个段信息,readelf 指令如下:

Usage: readelf <option(s)> elf-file(s)Display information about the contents of ELF format filesOptions are:-a --all               Equivalent to: -h -l -S -s -r -d -V -A -I-h --file-header       Display the ELF file header-l --program-headers   Display the program headers--segments          An alias for --program-headers-S --section-headers   Display the sections' header--sections          An alias for --section-headers-g --section-groups    Display the section groups-t --section-details   Display the section details-e --headers           Equivalent to: -h -l -S-s --syms              Display the symbol table--symbols           An alias for --syms--dyn-syms             Display the dynamic symbol table-n --notes             Display the core notes (if present)-r --relocs            Display the relocations (if present)-u --unwind            Display the unwind info (if present)-d --dynamic           Display the dynamic section (if present)-V --version-info      Display the version sections (if present)-A --arch-specific     Display architecture specific information (if any)-c --archive-index     Display the symbol/file index in an archive-D --use-dynamic       Use the dynamic section info when displaying symbols-x --hex-dump=<number|name>Dump the contents of section <number|name> as bytes-p --string-dump=<number|name>Dump the contents of section <number|name> as strings-R --relocated-dump=<number|name>Dump the contents of section <number|name> as relocated bytes-z --decompress        Decompress section before dumping it-w[lLiaprmfFsoRtUuTgAckK] or--debug-dump[=rawline,=decodedline,=info,=abbrev,=pubnames,=aranges,=macro,=frames,=frames-interp,=str,=loc,=Ranges,=pubtypes,=gdb_index,=trace_info,=trace_abbrev,=trace_aranges,=addr,=cu_index,=links,=follow-links]Display the contents of DWARF debug sections--dwarf-depth=N        Do not display DIEs at depth N or greater--dwarf-start=N        Display DIEs starting with N, at the same depthor deeper--ctf=<number|name>    Display CTF info from section <number|name>--ctf-parent=<number|name>Use section <number|name> as the CTF parent--ctf-symbols=<number|name>Use section <number|name> as the CTF external symtab--ctf-strings=<number|name>Use section <number|name> as the CTF external strtab-I --histogram         Display histogram of bucket list lengths-W --wide              Allow output width to exceed 80 characters@<file>                Read options from <file>-H --help              Display this information-v --version           Display the version number of readelf

Header信息。

  • DATA:数据是二进制补码,
  • Type:EXEC,可执行文件
  • Machine:AArch64,ARM64位架构,
  • Entry point address:起始地址,0x80000000
  • size of this header,头部信息大小,64Byte
  • Number of section header:40个section。

Section段信息。

可以看到有40个section,还有调试信息,debug段,这些section一般是通过链接脚本里面指定的,同时也会有size和align对齐等信息。

看到上面的第19和第18个section,就是堆和栈的大小size(160K与1M)。

还有Symbol符号表信息。

可以看到有5502的symbo符号,包括一些段symbol。

debug段调试信息

它就比较复杂了,包含debug frame、debug_line、debug_loc、debug_str等,需要知道其存储的格式,然后按照其方式去定位,addr2line就是这样解析和定位的。

4. elf文件

elf 文件是Linux OS下的可执行文件,格式与axf文件很像,同样可以使用Readelf指令去解析,但是稍有区别,ARM编译器编出axf文件,比如GCC会编译生成elf文件。
1、链接的可重定位文件
2、共享目标文件,
3、可执行文件。

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. bin、hex、elf、axf文件解析

    冰冻三尺非一日之寒,滴水穿石非一日之功 文章目录 引言 文件分类 1.bin文件 2.hex文件 3.axf文件 4.elf文件 总结 参考资料:深度理解编译过程 参考资料:深度理解编译文件 引言 b ...

  6. ARM:ELF bin Hex axf

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

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

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

  8. .axf文件_干货!STM32晶振的更改,BIN文件的生成

    STM32因为硬件设计的不同,要根据实际安装晶振修改程序参数, 一般使用的晶振是8M,如果遇到使用24M晶振的时候程序配置要怎么去修改呢? 一共有两处需要修改,如果是24M就把这个修改为24,同理8M ...

  9. Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)

    其实我是比较触头硬件编程这个事情的,因为我没学汇编计组还挂了,重修也没学明白,因为课时间重了办的免听,最后还是靠我的学弟们,贡献了他们老师给画的重点.结果毕业后找工作,就c++熟一些,急乎乎的找了c+ ...

  10. 痞子衡嵌入式:ARM Cortex-M文件那些事(8)- 镜像文件(.bin/.hex/.s19)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家讲的是嵌入式开发里的image文件(.bin, .hex, .s19). 今天这节课是痞子衡<ARM Cortex-M文件那些事>主 ...

最新文章

  1. webSocket详解
  2. 手机文件share.php,华为P10手机Huawei Share怎么用?一秒共享手机文件
  3. python导入标准库对象的语句_Python项目中如何优雅的import
  4. Java拆分字符串的函数——split
  5. SVN 服务端、客户端安装及配置、导入导出项目
  6. 数据结构算法入门--链表
  7. 【报告分享】2021制造业与人工智能创新应用发展报告.pdf(附下载链接)
  8. 代码块作用域内外的静态变量
  9. 小说APP网站源码运营版+在线采集
  10. Un*、Id分别突变情况下单闭环直流调速系统仿真
  11. 新零售“最强大脑”论剑,天猫推40余项新零售赋能计划
  12. 傅里叶变换的矩阵分析
  13. 钟平逻辑英语语法_逻辑英语-钟平笔记.pdf
  14. 微图影像地图导出拼接大图的参数说明
  15. 总体设计--《软件工程导论》
  16. win10用html文件做壁纸,利用win10自带工具制作动态壁纸的简单方法
  17. 智能网联汽车信息安全学术研究现状
  18. SQL中的布尔型变量
  19. 2016年8月23日 星期二 --出埃及记 Exodus 16:24
  20. springboot幼儿园书刊信息管理系统毕业设计源码141858

热门文章

  1. ArcGIS for Desktop 10.2安装破解与使用图文详解
  2. Android 仿淘宝首页界面
  3. 电脑上的字体安装教程
  4. 如何用excel做正交分析_excel表格分析正交数据处理-excel中怎么对正交试验进行F值检验...
  5. 数理经济模型(1)---蒙特卡洛仿真Monte Carlo Simulation
  6. SnagIt 9-12 注册码
  7. UML图的画法,简单详细,以实战代码为例子画UML
  8. Qcom ramdump 解析
  9. 【CTF misc python】加密zip和rar文件的枚举解密工具(python代码)
  10. 微信群管理机器人免费、破解版