Servus,
mein Testprogramm lässt sich für den atmega16 ohne Probleme
Compilieren. Für den atmega8 kommt folgende Fehlermeldung:
Assembling: xglobal1.S
avr-gcc -c -mmcu=atmega8 -I. -x assembler-with-cpp
-Wa,-adhlns=xglobal1.lst,-gst
abs xglobal1.S -o xglobal1.o
xglobal1.S:34:9: warning: no newline at end of file
xglobal1.S: Assembler messages:
xglobal1.S:16: Error: illegal opcode call for mcu atmega8
make: *** [xglobal1.o] Error 1
Hab ich da etwas übersehen ?
Danke für Hilfe !
C-File:
void main( void )
{
test1();
for (;;) {}
}
S-File:
#include <avr/io.h>
.stabs "",100,0,0,test1
.stabs "xglobal1.S",100,0,0,test1
.global test1
.func test1
test1:
push r0
call test2
pop r0
ret
.endfunc
.func test2
test2:
push r0
pop r0
ret
.endfunc
Der GNU assembler unterstützt derzeit kein "CALL" auf ATmegas bis 8 KB ROM, sondern nur "RCALL". Die neueren ATmegas können das zwar, aber es wird nicht wirklich benötigt, da man bis 8 KB ROM auch alle Sprungziele mit RCALL erreichen kann.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.