Forum: Compiler & IDEs Funktionsaufruf beim ATmega128 schlögt fehl


von Jörg Haas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

der avr-gcc scheint "Mist" zu übersetzen

test.c  -> test.obj, (entspr. makefile)   siehe anhang

daraus folgt dann daß der Stack offenbar nicht (richtig)
initialisiert wird und das Programm beim ersten Benutzen
einer Funktion abschmiert (die FAQ im
Dokumentavr-libc-user-manual-1.0.3.pdf
(die meinte J.Wunsch wohl mit "FAQ lesen bildet") habe ich gelesen).

Wenn ich es inline in die main schreibe geht alles...

Gruß
joh

von Matthias (Gast)


Lesenswert?

Hi

FAQ lesen bildet! Bei deinem neuen Mega128 ist die Mega103C Fuse
gesetzt. Damit arbeitet der 128 im 103 Kompatibilitätsmodus. Der
Stackpointer wird aber für den 128 initialisiert. Dann geht halt der
erste Funktionsaufruf schief.

Matthias

von Jörg Wunsch (Gast)


Lesenswert?

Kleine Korrektur: der Funktions*aufruf* geht noch gut, aber der RET
der ersten Funktion liest dann Unsinn statt einer Rücksprungadresse.
Damit ist das typische Symptom, dass zwar die Funktion selbst noch
ausgeführt wird, aber danach die Applikation abstürzt.

von Jörg Haas (Gast)


Lesenswert?

Hi abermals,

also wenn ich mir mit Ponyprog mal
die Fuses auslese, ist da bei 103 compatibility
ein Haken was 0 also programmiert bedeuted.
lt. Mega128 datasheet heißt das wiederum, das der
im 128er Modus läuft...

Gruß
joh

von Matthias (Gast)


Lesenswert?

Hi

@Jörg W.
Stimmt. Ich wollte das nicht soweit ausführen.

@Jörg H.
nein. Wenn M103C programmed ist läuft der 128 im 103 Modus.

Matthias

von Jörg Haas (Gast)


Lesenswert?

Hi,

@Matthias
Oje, da hab ich wohl einen Inverter im Hirn :)
Allerdings sah schon der Objektcode komisch
(=es wurde beim Funktionsaufruf ein call zu Adr.0
erzeugt, wo ja eigentlich der Resetvektor
steht?) deshalb hab ich ihn auch angehängt.

Gruß
joh

von Matthias (Gast)


Lesenswert?

Hi

das call 0x0 dürfte daher kommen das der Linker die Adresse noch nicht
aufgelöst hat. Aber Jörg W. kann dir da sicher eher Auskunft geben.

Bei solchen, vermeintlichen, Bugs des Compilers sollte man sich erstmal
klarmachen das das eine absolute Grundfunktionalität des Compilers ist.
Wenn das schon schief geht hat man entweder eine Pre-Alpha oder aber
einen eigenen Denkfehler.

Matthias

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.