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


von H. P. (Gast)


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.

von H. P. (Gast)


Lesenswert?

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

von Maxx (Gast)


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.

von (prx) A. K. (prx)


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.

von H. P. (Gast)


Lesenswert?

Ah, ok, vielen danke für die antworten :)

von (prx) A. K. (prx)


Lesenswert?

Klingt ja nicht sehr zuversichtlich ;-).

von H. P. (Gast)


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.

von (prx) A. K. (prx)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.