probleme mit der Syntax __irq in Ecllipse

OP (Firma: rwth) #638659
Lesenswert?
• ▲
▼
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.
#638671
Lesenswert?
• ▲
▼
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 #638696
Lesenswert?
• ▲
▼
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

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.

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.