Die HEX-Datei ist einfach eine übersetzte Version der ausführbaren AVR-Datei, die wiederum eine übersetzte Version des AVR-Quellcodes ist.
Es gibt viele Tools, mit denen Sie AVR-Quellcode in eine ausführbare AVR-Datei umwandeln (kompilieren) können, einschließlich, aber nicht beschränkt auf Arduino IDE , Ino , AVR-GCC und Atmel Studio . Beachten Sie, dass alle vier Tools den Code auf dieselbe Weise kompilieren, da AVR-GCC von den anderen drei unter der Haube verwendet wird.
avr-g++ -mmcu=atmega328 source.cc -o executable
Sobald Sie den Code kompiliert haben, können Sie mit avr-objcopy die entsprechenden Abschnitte aus der ausführbaren Datei in HEX-Dateien extrahieren, um sie in Flash und EEPROM zu programmieren.
avr-objcopy -j .text -j .data -O ihex executable executable.hex
Anschließend können Sie mit AVRDUDE die verschiedenen HEX-Dateien auf das Zielgerät hochladen.
avrdude -c arduino -P /dev/ttyUSB0 -b 19200 -p m328 -U flash:w:executable.hex:i
Beachten Sie, dass die USB-Bibliotheken in Arduino / Ino und AVR LibC begrenzt sind. Sie müssen Atmel Studio verwenden, wenn Sie alle USB-Funktionen nutzen möchten.