嵌入式设计中BIN、HEX、AXF、ELF文件格式的区别

数据量比较

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

BIN 文件

bin 文件是纯粹的机器码,没有地址信息,不能使用记事本直接打开,要使用 bin 文件阅读器才能打开,如果使用 bin 文件烧录程序时,需要指定下载地址。一些下载器只能使用 BIN 文件进行下载,在进行 OTA 远程升级时必须使用 bin 文件。

嵌入式设计中BIN、HEX、AXF、ELF文件格式的区别

HEX 文件

一般是指 Intel 标准的 hex 文件,可以使用记事本直接打开,是十六进制数据,包含了基地址、偏移量、校验和、文件开始和结束标志等信息,与 bin 文件最大的不同就是包含了下载地址。由于 hex 文件是十六进制数据,而 bin 文件是二进制数据,如十六进制 0xFF,用二进制表示为 1111 1111,所以 HEX 文件要比 bin 文件大得多。与 axf 文件相比,不含调试信息,不能用于调试。

嵌入式设计中BIN、HEX、AXF、ELF文件格式的区别

AXF 文件

包含了调试信息,如进行在 Keil 环境使用 Debug 功能时,就是先将 axf 文件下载到芯片内,才能进行调试。如使用 J-Link 的 J-Scope 功能时,必须使用 axf 文件。

ELF 文件

是由 GCC 编译器生成的。elf 文件可以直接转换为 hex 和 bin,但 hex 和 bin

例如 Linux 系统下使用 gcc 指令 gcc -o test test.c 生成的 elf 文件,可以通过./test 直接执行。

总结:

  1. bin 文件可以由 hex 和 axf 文件转换而来。
  2. axf 文件包含了调试信息。
  3. hex 文件包含了烧录地址,而 bin 文件不含,需要指定地址。
© 版权声明

相关文章

暂无评论

暂无评论...