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.
Weiß keiner genaueres? Ich bräuchte das für meine Abschlussarbeit. :/
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.