Funktionsaufruf beim ATmega128 schlögt fehl

Gast #178583
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
Angehängte Dateien:
Gast
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
Gast
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.
Gast
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
Gast
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
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.