AVR-GCC: Bug bei Verwendung von -Os

OP Admin Persönliche Seite #40668
Das angehängte Programm läuft mit -O0, -O1 und -O2 scheinbar ohne
Probleme, nur mit -Os lande ich irgendwann während iRealFT() wieder am
Resetvektor. Breakpoint 3 wird nie erreicht. Dieses Verhalten habe ich
sowohl im AVR-Studio als auch in simulavr festgestellt, außerdem zeigt
Simulavr die folgende Meldung an:

WARNING: file memory.c: line 148: **** Attempt to read invalid addr:
0x0460
WARNING: file memory.c: line 148: **** Attempt to read invalid addr:
0x0461

gcc-Version 3.3.1 20030720, binutils 2.14 20030727

Was mich außerdem verwundert hat: das mit -Os erzeugte Binary ist um
einiges größer als bei -O1 oder -O2.

Ich konnte das Problem leider nicht genauer eingrenzen, da ich mit
simulavr noch nicht so gut zurechtkomme und das AVR-Studio in VMWare
nicht so richtig Spaß macht.
Angehängte Dateien:
Gast
Irgendwo wird der Stackframe korrumpiert.  Der Framepointer in
rr28:29 steht beim Betreten von iRealFFt() auf 0x428, beim
Verlassen auf 0x228.  Sieht also danach aus, als würde r29 irgendwo
zerstört und nicht wiederhergestellt.

Ich würde damit an Deiner Stelle in der avr-gcc Liste mal fragen.

Der Code scheint ja vorher durch ein Verschlüsselungsprogramm
geschickt worden zu sein. :->
OP Admin Persönliche Seite
Ähm ja, der Code ist teilweise ziemlich beängstigend, vor allem das
grausame Loop-Unrolling das der Autor da betrieben hat. Aber bei
Gelegenheit wird das alles durch Assembler ersetzt (sobald ich den
Fortr^wC-Code verstanden habe).

Wegen dem Bug werde ich mal in der Mailingliste fragen.
Gast
Weiß nicht, vielleicht hilft Dir ja auch Appnote AVR223 weiter?
Im Prinzip müßte doch da auch eine FFT drin sein, hab's mir aber
noch nicht angesehen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 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.