mikrocontroller.net

Forum: Compiler & IDEs AVR-GCC: Bug bei Verwendung von -Os


Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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. :->

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ä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.

Autor: Joerg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das scheinen dort eher Filter in "klassischer Bauweise" zu sein. Mein
Wissen in diese Richtung ist noch ziemlich klein, aber AFAIK ist ein
FFT-Filter ja etwas aufwändiger zu realisieren (2 versetzt überlagerte
FFTs mit Fensterfunktion -> am Spektrum rumbasteln -> iFFT).

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.