C可执行文件到十六进制

C executable to hex

我将 CLion 用作 IDE。构建后输出是一个可执行文件example。我想要实现的是从中制作 .hex 文件并通过 avrdude 将其上传到我的 AVR。我阅读并尝试了一些 possible solutions here

xxd -p example | tr -d '\n' > example.hex

avrdude -u -c usbasp-clone -p atmega8 -P /dev/bus/usb/001/006 -U flash:w:example.hex

avrdude 输出

avrdude: input file example.hex auto detected as invalid format
avrdude: invalid input file format: -1
avrdude: read from file 'example.hex' failed

有什么想法吗?

从可执行文件中提取部分并将其转换为另一种格式的工具是 objcopy

avr-objcopy -j .text -j .data -O ihex example example.hex

或者,如果您的 avrdude 是使用 ELF 支持构建的,那么您可以直接使用可执行文件。

avrdude -c usbasp-clone -p atmega8 -U flash:w:example