对不起,如果这可能不合时宜。 在使用avr-gcc或avr-ld生成.hex(Intel HEX格式)文件的过程中,输出(最终结果)明显不同。作为最低限度的说明,我正在谈论在生成目标文件之后立即生成ELF文件的步骤。
在第一次尝试时,我使用avr-ld
来生成我的ELF文件。程序运行正常,但是在生成HEX文件并将其上传到我的板上后,它什么也没做(就像上传空白的HEX文件一样)。
第二次尝试时,我遵循了here发现的建议:
在链接时指定MCU类型非常重要。编译器使用-mmcu选项选择链接在一起的启动文件和运行时库。如果未指定此选项,则编译器默认为8515处理器环境,这无疑是您不想要的。
它如我所料。上传了HEX文件,我的开发板也进行了相应更新。
所以我的问题如下:
avr-ld
)为什么会丢失有关我正在使用的微控制器的信息。我以为MCU信息存储在对象文件中。avr-gcc
来编译/生成.o文件,使用avr-ld
链接.o文件并生成EFL文件,而使用avr-objcopy
只剥离有用的信息并更改文件ELF-> HEX的格式?avr-ld
和生成avr-gcc
来生成我的ELF文件时,是否可以使用相同的输出?