mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik probleme mit der Syntax __irq in Ecllipse


Autor: Ahmad Ahmad (Firma: rwth) (ahmad)
Datum:

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

Autor: Εrnst B✶ (ernst)
Datum:

Bewertung
0 lesenswert
nicht 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
void __attribute__ ((interrupt("IRQ"))) isr(void); // Prototyp
 
void __attribute__ ((interrupt("IRQ"))) isr(void){
  // A lot of Work
  VICVectAddr = 0;       // Acknowledge Interrupt
}

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

/Ernst

Autor: Ahmad Ahmad (Firma: rwth) (ahmad)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die sehr schnelle Antwort. Ich benutze die "Yagarto GNU ARM 
tolchain". Werde es gleich mal ausprobieren...

Danke
Ahmad

Autor: mthomas (Gast)
Datum:

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

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.