www.mikrocontroller.net

Forum: Compiler & IDEs arm-gcc: Interruptfehler behoben?


Autor: Björn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mit GCC 4.3.2 aus Yagarto 28.09.2008 scheint dieser Fehler:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27859
behoben zu sein.
Zumindest erzeugt der GCC nun den korrekten Code.
Allerdings finden ich dafür keinen Eintrag im Changelog und im Bugzilla 
ist er nicht als behoben vermerkt.

Könnte der Fehler zufällig durch eine andere Änderung mit behoben worden 
sein?

Autor: ARM (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seit wann soll der Fehler denn drin sein ? Ist das nicht nur ein EABI 
Problem ?

Autor: Björn (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Fehler ist schon seit vielen Jahren enthalten.
Eröffnet 19.7.2004: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=16634

Er tritt (bei mir) immer auf, wenn in einer Interruptroutine der 
Stackpointer verwendet werden muss. Dann wird am Anfang und am Ende der 
Interruptroutine das Linkregister jeweils um 4 decrementiert, so das der 
Rücksprung um 4 Bytes zuweit zurückgeht, und der letzte Befehl vor dem 
Interrupt doppelt ausgeführt wird. Das hat natürlich katastrophale 
Auswirkungen, wenn es dabei z.B. eine Adressberechnung trifft.
Muss in der Interruptroutine der Stackpointer nicht verändert werden, so 
ist alles ok.
Daher habe ich alle langen Introutinen umgeschrieben, so das dort nur 
eine weitere Routine aufgerufen wird. Ich würde mir aber gerne diesen 
Extraaufruf aus Zeitgründen sparen.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mir mal den betreffenden Code im GCC angesehen, d.h. den Code 
für Prolog/Epilog von Funktionen. Und bin eigentlich nur etwas 
verwundert, dass nicht noch mehr Böcke solcher Art geschossen werden. 
Das ist leider ein auf mittlerweile unpassender Grundlage programmierter 
Flickenteppich und gewisse Redundanzen lassen vermuten, dass sich schon 
einige Leute dort betätigt haben.

Würde mich nicht wundern, wenn sich da einfach nur niemand mehr heran 
traut, denn im Grund müsste dieser Teil mal vollständig renoviert 
werden. Aber dann sind reichlich Tests für alle Plattformen und 
Varianten fällig, und wer hat die schon, folglich mit signifikantem 
Risiko von Kinderkrankheiten.

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.