烧写文件格式介绍
axf和elf都是编译器生成的可执行文件,区别是axf文件是调试文件,可由ads或mdk生成;而gcc编译出来的是elf文件。
两者虽然很像,但还是有差别的。这是文件格式的差别,不涉及调试格式。
bin是直接的内存映象的表示。axf/elf是带格式的映象 。axf/elf文件里面包含了符号表,汇编等。bin文件是将elf文件中的代码段,数据段,还有一些自定义的段抽取出来做成的一个内存的镜像。由于elf文件的信息比较全,所以可以用来以单步跟踪的方式运行。
在ads下,axf文件可以直接用axd进行调试运行。
Linux OS下,elf通常就是可执行文件,通常gcc -o test test.c,生成的test文件就是elf格式的,在Linux Shell下输入./test就可以执行。bin文件是经过压缩的可执行文件,去掉elf格式的东西,仅仅保留最纯的汇编。在系统没有加载操作系统的时候可以执行。 在Embedded中,上电开始运行,没有OS系统,如果将elf格式的文件烧写进去,包含一些elf格式的东西,arm运行碰到这些指令,就会导致失败,如果用bin文件,程序就可以一步一步运行。
elf文件转化为hex文件和bin文件,hex文件也可以直接转换为bin文件,但是bin要转化为hex文件必须要给定一个基地址。而hex和bin不能转化为elf文件,因为elf的信息量要大。axf它可以转化为bin文件,用以下命令 fromelf -nodebugxx.axf -bin xx.bin即可。
1.bin格式
bin文件就是直接的二进制文件,内部没有地址标记。一般用编程器烧写时从00开始,而如果下载运行,则下载到编译时的地址即可
2.elf格式
Executable and linking format(ELF)文件是x86 Linux系统下的一种常用目标文件(object file)格式,gcc编译出来的是ELF文件。
有三种主要类型:
(1)适于连接的可重定位文件(relocatable file),可与其它目标文件一起创建可执行文件和共享目标文件。
(2)适于执行的可执行文件(executable file),用于提供程序的进程映像,加载的内存执行。
(3)共享目标文件(shared object file),连接器可将它与其它可重定位文件和共享目标文件连接成其它的目标文件,动态连接器又可将它与可执行文件和其它共享目标文件结合起来创建一个进程映像。
到此,就是一个简单的hello world程序通过gcc –o hello hello.c编译得到的文件的ELF头部格式。
3.hex格式
Intel HEX文件是记录文本行的ASCII文本文件,在Intel HEX文件中,每一行是一个HEX记录,由十六进制数组成的机器码或者数据常量。Intel HEX文件经常被用于将程序或数据传输存储到ROM、EPROM,大多数编程器和模拟器使用Intel HEX文件。
HEX格式文件以行为单位,每行由“:”(0x3a)开始,以回车键结束(0x0d,0x0a)。行内的数据都是由两个字符表示一个16进制字节,比如”01”就表示数0x01;”0a”,就表示0x0a。对于16位的地址,则高位在前低位在后,比如地址0x010a,在HEX格式文件中就表示为字符串”010a”。下面为HEX文件中的一行:
:10000000FF0462FF051EFF0A93FF0572FF0A93FFBC
“:”表示一行的开始。
“:”后的第1,2个字符“10”表示本行包含的数据的长度,这里就是0x10即16个。
第3,4,5,6个字符“0000”表示数据存储的起始地址,这里表示从0x0000地址开始存储16个数据,其中高位地址在前,低位地址在后。
第7,8个字符“00”表示数据的类型。该类型总共有以下几种:
00 ----数据记录
01 ----文件结束记录
02 ----扩展段地址记录
04 ----扩展线性地址记录
这里就是0x00即为普通数据记录。之后的32个字符就是本行包含的数据,每两个字符表示一个字节数据,总共有16个字节数据跟行首的记录的长度相一致。最后两个字符表示校验码。每个HEX格式的最后一行都是固定为:00000001FF
4.axf格式
*.axf格式的调试文件,AXF是ARM芯片使用的文件格式,它包含bin代码外,还包括了调试信息。无论是用RVDS,还是MDK,都能够产生该文件。
参考文献:
hex格式介绍及转bin格式的源程序:http://www.cppblog.com/Lee7/archive/2007/12/21/39231.html
ELF格式学习笔记(一):http://blog.chinaunix.net/space.php?uid=546544&do=blog&id=2095856
各种烧写文件格式简介:http://tvb2058.spaces.eepw.com.cn/articles/article/item/11165
axf elf 和bin 区别
http://yhyqf.blog.163.com/blog/static/32105293201121010199363/