Forum: Compiler & IDEs avr-as Nutzung für ATmega328p Arduino Nano


von Leonardo (neutrinopulse)


Lesenswert?

Hallo!
ich habe begonnen, mich mit der Programmierung von Mikrocontrollern in 
Assembler ("bare") auseinanderzusetzen. Ich bin in der Lage, bereits in 
der Arduino-IDE kompilierte .hex-Dateien mittels avrdude auf den Arduino 
Nano (ATmega328p) zu flashen. Ich weiß jedoch nicht, wie ich 
.asm-Dateien insofern kompilieren kann, dass diese mit dem Bootloader 
des Arduinos harmonieren bzw. welche anderen Parameter gesetzt werden 
müssen. Den Kompilierungsbefehl aus der IDE (avr-g++) habe ich bereits 
analysiert, einige (eventuell essentielle) Parameter werden in der unter 
avr-g++ aber nicht aufgeführt. Ich verfüge über die Programme avr-as und 
avra, würde avr-as aber prinzipiell bevorzugen. Alle Aktionen werden auf 
einem ubuntubasierten Linux-System ausgeführt. Welche Parameter muss ich 
nutzen, um das Assemblerprogramm mittels avr-as zu kompilieren?
Vielen Dank!

von Björn W. (bwieck)


Lesenswert?

Ich würde dir empfehlen dieses hier:
https://onlinedocs.microchip.com/pr/GUID-E06F3258-483F-4A7B-B1F8-69933E029363-en-US-2/index.html
zu benutzen. Das resultierende HEX kannst du dann mit AVRDUDE in den 
Controller flashen.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Leonardo schrieb:
> Welche Parameter muss ich nutzen, um das Assemblerprogramm mittels
> avr-as zu kompilieren?

Am einfachsten verwendet man avr-gcc zum assemblieren. Falls die 
Dateiendung weder .sx noch .S ist, dann
1
avr-gcc -x assembler-with-cpp datei.xxx -mmcu=atmega328 -o datei.elf

Das linkt gegen den Startup-Code der AVR-LibC. Falls du den selbst 
schreiben willst, dann noch -nostartfiles.

Werden mehrere Module verwendet, kann man die einzeln zu *.o 
assemblieren und dann linken. Oder alle in einem Rutsch angeben; so wie 
oben, nur mit mehreren Quellen (auch C und C++ wenn man will).

avrdude verdaut auch ELF, man brauch nicht extra ein HEX zu erstellen.

von Leonardo (neutrinopulse)


Lesenswert?

Vielen Dank, ich habe es vollbracht.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.