Forum: Compiler & IDEs Code lässt sich für atmega16 Compilieren, für den atm8 ni


von Tim (Gast)


Lesenswert?

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

von Joerg Wunsch (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.