PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Assemblieren mit avr-as unter Linux



Digital-Ghost
23.12.2012, 14:15
Hallo Community,

passend zur Weihnachtszeit habe ich meinen Atmega168 ausgepackt und wollte nochmal ein wenig herumexperimentieren.
Diesmal will ich mal ein Assembler-Programm schreiben und assemblieren.
Ich habe hier im Forum gelesen das man dazu den avr-as benutzen kann doch leider ist die Doku sehr umfangreich und ich habe kein passenden
Beispiele gefunden. Zum Compilieren in C habe ich mir damals ein kleines Script zusammengebastelt


VAR1="main"
VAR2="Main"

rm $VAR2.*
avr-gcc -Wall -Os -fpack-struct -fshort-enums -std=gnu99 -funsigned-char -funsigned-bitfields -mmcu$
avr-gcc -Wl,-Map,$VAR2.map -mmcu=atmega168 -o $VAR2".elf" ./$VAR2.o
avr-objdump -h -S $VAR2.elf >$VAR2".lss"
avr-objcopy -R .eeprom -O ihex $VAR2.elf $VAR2".hex"
avr-objcopy -j .eeprom --no-change-warnings --change-section-lma .eeprom=0 -O ihex $VAR2.elf $VAR2$
avrdude -c avrispmkII -p m168 -P usb -e -v -Uflash:w:$VAR2.hex:a


das auch super funktioniert. Jetzt habe ich mir ein Assembler-Beispielprogramm herausgesucht und möchte dieses gerne in eine Hex assemblieren.
Kann mir hierbei einer helfen ich habe überhaupt keinen Ansatz und im Internet habe ich dazu nicht viel gefunden.
Hier mein Programm:



.include "m168def.inc"

Start:
ldi r16,0xFF
out DDRD,r16
ldi r16,0b00000001
out PORTD,r16

Loop:
rjmp Loop


Wie muss ich jetzt den avr-as aufrufen?

Danke für eure Hilfe :)

trekko
23.12.2012, 19:13
Hallo,
leider kann ich deine Frage nicht beantworten, da ich avr-as noch nie verwendet habe. Ich nutze immer "avra", das ist ein sehr einfach zu bedienender Assembler, der per Kommandozeile aufgerufen wird und aus der *.asm-Datei direkt eine *.hex-Datei erstellt. Probier mal:

sudo apt-get install avra

Bei der Include-Datei "m168def.inc" kann es sein, dass du dann alle Zeilen, die mit "#define" beginnen, auskommentieren musst, weil avra damit nicht umgehen kann. Ansonsten läuft damit alles super!