www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT91SAM7 Interrupt Nesting mit ctl_set_isr?


Autor: H. P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe gelesen, dass es mit dem ARM7 bei verschachtelten Interrupts 
etwas anders gehandhabt wird und zum Teil umständlich Softwareroutinen 
dafür nötig sind.
Meine Frage ist nun, ob dies mit der Funktion ctl_set_isr Umngangen 
wird. Würde eine verschachtelung funktionieren wenn ich interrupts durch 
diese Funktion unterschiedliche Prioritäten zuweise?

Grüße, H.P.

Autor: H. P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Weiß keiner genaueres? Ich bräuchte das für meine Abschlussarbeit. :/

Autor: Maxx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liegt wohl auch an der Entwicklungsumgebung / Bibliotheken.

Die (Haupt-)Besonderheit von ARMs bei nested Interrupts liegt an dem 
Designfehler, dass er nur dann erlaubt werden darf, wenn LR_irq nicht 
für Calls genutzt wird, weil dieser beim Nesting überschrieben wird. 
Also, erst Mode wechseln, dann Nesting erlauben.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Target-spezifische Code von Crossworks für ARM7 sieht einen 
zentralen Interrupt-Handler vor, der abhängig von der Parametrisierung 
nested Interrupts zulässt, indem der notwendige Modeswitch dort 
durchgeführt und erst dann der VIC Vektor aufgerufen wird. In der ISR 
sind dadurch keine speziellen Vorkehrungen für Nesting erforderlich. 
Siehe beispielsweise packages/targets/ARM/VIC_irq_handler.s für manche 
NXP ARM7.

Autor: H. P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, ok, vielen danke für die antworten :)

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt ja nicht sehr zuversichtlich ;-).

Autor: H. P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm naja, hab glaube noch nicht so richtig verstanden, was denn mit dem 
Wechsel in den System-Modus nun genau bewirkt wird bzw. wie sich das auf 
verschachtelte interrupts auswirkt.

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.13thmonkey.org/documentation/ARM/HAI.pdf
http://www.nxp.com/documents/application_note/AN10381.pdf

Beim ARM führt jeder Interrupt zu einer Zerstörung des vorherigen 
Inhalts von R14 des IRQ-Registerkontextes. Ein Konstruktionsfehler. Wenn 
ein unterbrechbarer IRQ-Handler in diesem Modus liefe, dann dürfte er 
folglich R14 nicht verwenden. Weil das bei darin enthaltenen 
Unterprogrammaufrufen etwas unpraktisch ist wechselt man statt dessen 
den Kontext um ein anderes R14 zu gewinnen.

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.