probleme mit der Syntax __irq in Ecllipse

OP (Firma: rwth) #638659
Hallo,
ich arbeite an einem lpc2294 µC.Ich bekomme aber Probleme wenn ich einen 
Interrupthandler implementiere mit der Entwicklungsumgebung Ecllipse.Ich 
bekomme immer eine Fehlermeldung wenn ich sowas in der Art schreibe :

void tc0(void) __irq

Der Compiler  kann die Syntax __irq nicht erkennen.Kennt jemand einen 
Weg sodaß man unter Ecllipse Interrupthandler schreiben kann.Danke

Ahmad.
als was hast du __irq deklariert? Oder einfach Beispielcode für einen 
anderen Kompiler genommen, und den in den GCC geworfen? Benutzt du 
überhaupt den GCC für deinen ARM?

Ansonsten würd ich drauf tippen das code wie
1
void __attribute__ ((interrupt("IRQ"))) isr(void); // Prototyp
2
 
3
void __attribute__ ((interrupt("IRQ"))) isr(void){
4
  // A lot of Work
5
  VICVectAddr = 0;       // Acknowledge Interrupt
6
}

Eher für den GCC geeignet ist
(frei nach ARM-elf-GCC-Tutorial)

/Ernst
Gast
Vorsicht bei Verwendung dieses Attributs bei arm-gcc (wie auch in 
Yagarto enthalten). Zumindest ältere Versionen des kommen dabei in 
straucheln, wenn bei eingeschalteter Optimierung nicht alles im 
"ARM-mode" kompiliert wird (und mglw. anderen Kombinationen). Aktuelle 
Version 4.2.1 habe ich dahingehend noch nicht getestet. Ansonsten passt 
das schon als Ersatz für __irq aus RealView bzw EWARM.

Falls man diverse Kombination von thumb/thumb-interwork/Optimierung 
nutzen will entweder (1) ISR's mit attribut nacked versehen und 
inline-assembler Markos zur Sicherung/Rücksicherung von Registers, 
Status und Anpassung der Rücksprungaddresse einbinden oder (2) 
Assembler-Wrapper implementieren, der von IRQ-Vector aufgerufen wird. 
Letzteres erspart Anpassungen im C-Code und hält diesen recht portabel.

Martin Thomas

Antwort schreiben

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