Chinaunix首页 | 论坛 | 博客
  • 博客访问: 961
  • 博文数量: 1
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2015-12-30 19:58
文章分类
文章存档

2015年(1)

我的朋友
最近访客

分类: C/C++

2015-12-30 19:58:59

原文地址:hex,bin,axf,elf的区别 作者:tmaclub

Hex文件

  Hex文件,这里指的是Intel标准的十六进制文件,也就是机器代码的十六进制形式,并且是用一定文件格式的ASCII码来表示.具体格式介绍如下: 

  Intel hex 文件格式 

  Intel hex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。 

  Intel hex 文件全部由可打印的ASCII字符组成,如下例所示: 

  :2000000012014c75a800e4f508f509780a7a78e4f608dafcd283fcfded240af9a7050dbd81 

  :2000200000010ced2488ec34ff50edc283e4fcfded240af9e76d7013ed33e43c700d0dbd2a 

  :2000400000010ced2488ec34ff50e50509e50970020508e50924a8e50834fd50aee4f50874 

  

  Intel hex 由一条或多条记录组成,每条记录都由一个冒号“:”打头,其格式如下: 

  

  :CCAAAARR...ZZ 

  

  其中: 

  CC 

  本条记录中的数据字节数 

  

  AAAA 

  本条记录中的数据在存储区中的起始地址 

  

  RR 

  记录类型: 

  00 数据记录 (data record) 

  01 结束记录 (end record) 

  02 段记录 (paragraph record) 

  03 转移地址记录 (transfer address record) 

  ... 

  数据域 

  ZZ 

  数据域校验和 

  Intel hex文件记录中的数字都是16进制格式,两个16进制数字代表一个字节。CC域是数据域中的实际字节数,地址、记录类型和校验和域没有计算在内。校验和是取记录中从数据字节计数域(CC)到数据域(...)最后一个字节的所有字节总和的2的补码。 

   HEX文件是用ASCII来表示二进制的数值。例如一般8-BIT的二进制数值0x3F,用ASCII来表示就需要分别表示字符'3'和字符'F',每个字符需要一个BYTE,所以HEX文件需要 > 2倍的空间。

  

Bin文件

  Bin文件是最纯粹的二进制机器代码,没有格式,或者说是"顺序格式"按assembly code顺序翻译成binary machine code. Bin是直接的内存映象的表示。

  对一个BIN文件而言,你查看文件的大小就可以知道文件包括的数据的实际大小。而对HEX文件而言,你看到的文件大小并不是实际的数据的大小。一是因为HEX文件是用ASCII来表示数据,二是因为HEX文件本身还包括别的附加信息。

  

AXF文件

  axf文件是ARM的调试文件,除了包含bin的内容之外,还附加了其他的调试信息,这些调试信息加在可执行的二进制数据的前面。在调试的时候,这些调试信息是不必下到RAM中去的,真正下到RAM中的信息仅仅是可执行代码。所以如果ram的大小小于axf文件的大小,程序是完全有可能可以在ram中调试的,只要axf除去调试信息后的大小小于ram的大小就行了。

  调试信息包含以下内容:

  1、 可以将源代码包括注释夹在反汇编代码中,并且我们可以随时切换到源代码中调试,

  2、 我们还可以对程序中的函数调用情况进行跟踪(用Watch & Call Stack Window查看)。

  3、对变量进行跟踪(用Watch & Call Stack Window查看)。

  

ELF文件

  axf和elf都是编译器生成的可执行文件,区别是:

  ADS编译出来的是AXF文件。

  gcc编译出来的是ELF文件。

  两者虽然很像,但还是有差别的。这是文件格式的差别,不涉及调试格式。

  Linux OS下,ELF通常就是可执行文件,通常gcc -o test test.c,生成的test文件就是ELF格式的,在Linux Shell下输入./test就可以执行。

阅读(195) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:没有了

给主人留下些什么吧!~~