AVR-GCC文件输出结构

时间:2014-02-10 11:32:10

标签: file gcc format structure avr

我已经在网上搜索过,尤其是avr-gcc网站。 我想知道源代码的输出文件的结构,用avr-gcc编译。

标准Microsoft .EXE文件的示例:

00h     DW  Signature word.
            "N" is low-order byte.
            "E" is high-order byte.
02h     DB  Version number of the linker.
03h     DB  Revision number of the linker.

有人可以告诉我avr-gcc输出文件结构吗?

谢谢。 -MW

编辑:

正如Rev1.0所说,它是Intel-HEX格式。

2 个答案:

答案 0 :(得分:0)

既然你谈到AVR,你可能意味着HEX文件的格式?它被编码为Intel HEX格式。

编辑关于您在评论中提出的问题:

  

我看到标题有“DATA”字段。那个领域究竟是什么?纯粹的装配?

HEX文件的每一行称为“记录”。有几种类型的记录。根据记录类型,数据内容具有不同的含义。 “数据记录”保存实际的固件/程序数据。那是最低级别的机器代码,而不是汇编。它完全代表器件编程后驻留在闪存中的数据。

答案 1 :(得分:0)

有人可以告诉我avr-gcc输出文件的结构吗?

avr-gcc只是一个驱动程序,它调用不同文件和文件格式的子进程。例如,编译器正确地读取预处理的输入(文本)并编写程序集(文本)。

GNU汇编器读取由编译器生成的汇编(*.s,文本)并写入目标文件(*.oELF32) GNU链接器/定位器读取此目标文件并解析对libgcc(*.a,ELF32)之类的库的引用,并生成最终的可执行文件(ELF32)。

根据装载机的不同,您可以直接使用ELF(例如,与avrdude一起使用)。

如果您还需要Intex HEX或AVR看到的普通二进制文件,则可以通过GNU Binutils中的avr-objcopy将ELF32转换为所需的输出。

通常,人们希望保留ELF的时间尽可能长,因为IHEX之类的格式是“哑”的。它们没有符号信息或调试信息之类的其他信息,这些格式仅用于将程序上传到AVR,但是大多数现代工具也可以理解ELF。