专门做期货的网站,深圳网站页面设计公司,制定一个网络营销方案,过期网站查询1.Bin
Bin文件是最纯粹的二进制机器代码, 或者说是顺序格式。按照assembly code顺序翻译成binary machine code#xff0c;内部没有地址标记。Bin是直接的内存映象表示#xff0c;二进制文件大小即为文件所包含的数据的实际大小。 BIN文件就是直接的二进制文件顺序格式。按照assembly code顺序翻译成binary machine code内部没有地址标记。Bin是直接的内存映象表示二进制文件大小即为文件所包含的数据的实际大小。 BIN文件就是直接的二进制文件一般用编程器烧写时从00开始而如果下载运行则下载到编译时的地址即可。可以直接在裸机上运行。
2.Hex
Intel hex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。 就是机器代码的十六进制形式,并且是用一定文件格式的ASCII码来表示。
简单总结一下这2种文件格式的区别 1、HEX文件包含地址信息而BIN文件只包含数据本身,烧写或下载HEX文件时一般不需要用户指定地址因为HEX文件内部已经包含了地址信息。烧写BIN文件时则需要用户指定烧录的地址信息。 2、HEX文件是用ASCII码来表示二进制的数值。例如8-BIT的二进制数值0x4E用ASCII来表示就需要分别表示字符‘4’和字符‘E’每个字符均需要一个字节因此HEX文件至少需要2倍BIN文件的空间。
3.ELF
ELFExecutableand linking format文件是x86 Linux系统下的一种常用目标文件(objectfile)格式有三种主要类型:
(1)适于连接的可重定位文件(relocatablefile)可与其它目标文件一起创建可执行文件和共享目标文件。 (2)适于执行的可执行文件(executable file)用于提供程序的进程映像加载到内存执行。 (3)共享目标文件(shared object file),连接器可将它与其它可重定位文件和共享目标文件连接成其它的目标文件动态连接器又可将它与可执行文件和其它共享目标文件结合起来创建一个进程映像。
小结可由elf文件转化为hex和bin两种文件hex也可以直接转换为bin文件但是bin要转化为hex文件必须要给定一个基地址。而hex和bin不能转化为elf文件因为elf的信息量要大。Axf文件可以转化为bin文件KEIL下可用以下命令fromelf -nodebug xx.axf -bin xx.bin即可。
4.AXF
Axf文件由ARM编译器产生除了包含bin的内容之外还附加其他调试信息这些调试信息加在可执行的二进制数据之前。调试时这些调试信息不会下载到RAM中真正下载到RAM中的信息仅仅是可执行代码。因此如果ram的大小小于axf文件的大小程序是完全有可能在ram中调试的只要axf除去调试信息后文件大小小于ram的大小即可。 调试信息有以下功用 1、 可将源代码包括注释夹在反汇编代码中这样我们可随时切换到源代码中进行调试。 2、 我们还可以对程序中的函数调用情况进行跟踪(通过Watch Call Stack Window查看)。 3、对变量进行跟踪(利用Watch Call Stack Window)。
注意
1axf和elf都是编译器生成的可执行文件。区别是ADS编译出来的是AXF文件。gcc编译出来的是ELF文件。两者虽然很像但还是有差别的。这是文件格式的差别不涉及调试格式。
2axf/elf是带格式的映象bin是直接的内存映象的表示。
3Linux OS下ELF通常就是可执行文件通常gcc -o test test.c生成的test文件就是ELF格式的在Linux Shell下输入./test就可以执行。在Embedded中上电开始运行没有OS系统如果将ELF格式的文件烧写进去包含一些ELF格式的东西arm运行碰到这些指令就会导致失败如果用bin文件程序就可以一步一步运行。
所以HEX和bin文件可以在裸机上运行而ELF文件是在有OS的环境中运行的。 elfexecutable and link format文件里面包含了符号表汇编调试信息等并不能直接运行。 BIN文件是将elf文件中的代码段数据段还有一些自定义的段抽取出来做成的一个内存的镜像。
BIN文件需要用objcopy工具将ELF中的上述信息拷贝出来。(objcopy只是完成两个obj文件内容的拷贝那如何控制elf生成bin呢) 下面这个是ELF格式的详细介绍还有Linux下ELF文件的运行原理和过程。
ELF文件的加载和动态链接过程 - - ITeye博客