ebonyifinance.com

  

Beste Artikel:

  
Main / Funktionsweise des vektorisierten Interrupt-Controllers

Funktionsweise des vektorisierten Interrupt-Controllers

Um die Anzahl der Gates zu verringern und die Systemflexibilität zu verbessern, wurde der Cortex-M3 vom Ausnahmemodell des Bankschattenregisters des ARM7 auf ein stapelbasiertes Ausnahmemodell migriert. Der Datenbus stapelt die Register, während der Befehlsbus den Ausnahmevektor aus der Vektortabelle identifiziert und den ersten Befehl des Ausnahmecodes abruft.

Sobald das Stapeln und das Abrufen von Befehlen abgeschlossen sind, wird die Interrupt-Serviceroutine oder der Fehlerbehandler ausgeführt, gefolgt von der automatischen Wiederherstellung der Register, damit das unterbrochene Programm die normale Ausführung wieder aufnehmen kann. Durch die Verarbeitung der Stapeloperationen in Hardware macht der Cortex-M3-Prozessor das Schreiben von Assembler-Wrappern überflüssig, die für die Stapelmanipulation für herkömmliche C-basierte Interrupt-Serviceroutinen erforderlich sind, was die Anwendungsentwicklung erheblich vereinfacht.

Der NVIC unterstützt das Verschachteln des Stapelns von Interrupts, sodass ein Interrupt früher bedient werden kann, indem eine höhere Priorität ausgeübt wird.

Es unterstützt auch die dynamische Repriorisierung von Interrupts. Die Prioritätsstufen können zur Laufzeit von der Software geändert werden.

Interrupts, die gewartet werden, werden für die weitere Aktivierung gesperrt, bis die Interrupt-Serviceroutine abgeschlossen ist, sodass ihre Priorität geändert werden kann, ohne dass die Gefahr eines versehentlichen Wiedereintritts besteht. Im Fall von Back-to-Back-Interrupts wiederholen herkömmliche Systeme den vollständigen Zyklus zum Speichern und Wiederherstellen des Status zweimal, was zu einer höheren Latenz führt. Der Cortex-M3-Prozessor vereinfacht das Wechseln zwischen aktiven und anstehenden Interrupts, indem er die Tail-Chaining-Technologie in der NVIC-Hardware implementiert.

Durch die Schwanzverkettung wird eine viel geringere Latenz erzielt, indem serielle Stack-Pop- und Push-Aktionen, die normalerweise mehr als 30 Taktzyklen dauern, durch einen einfachen 6-Zyklus-Befehlsabruf ersetzt werden. Der Prozessorstatus wird beim Interrupt-Eintritt automatisch gespeichert und beim Interrupt-Austritt in weniger Zyklen als bei einer Software-Implementierung wiederhergestellt, wodurch die Leistung in Sub-100-MHz-Systemen erheblich verbessert wird. Der Sleep On Exit-Modus versetzt das System in den Energiesparmodus, sobald es die Interrupt-Serviceroutine mit der niedrigsten Priorität verlässt.

Der Kern bleibt im Ruhezustand, bis eine weitere Ausnahme auftritt. Da nur ein Interrupt diesen Modus verlassen kann, wird der Systemstatus nicht wiederhergestellt. Der NVIC integriert auch einen System Tick SysTick-Timer, einen 24-Bit-Countdown-Timer, mit dem in regelmäßigen Zeitintervallen Interrupts generiert werden können. Dies ist ein idealer Herzschlag für die Ausführung eines Echtzeitbetriebssystems oder anderer geplanter Aufgaben.

Meine Hobbies. Durchsuche diese Seite. Navigation Meine Hobbys. Aktuelle Site-Aktivität Neueste Forschungen, herausgegeben von Chang-yeon Jo. Ehrlich gesagt ist mein Interesse an einem neuen Interrupt-System - NVIC, einem verschachtelten vektorisierten Interrupt-Controller. Dieser Mechanismus bietet dem Prozessor hervorragende Interrupt-Handhabungsfähigkeiten. In seiner Standardimplementierung liefert es ein nicht maskierbares Interrupt-NMI und 32 Allzweck-Interrupts mit 8 Stufen der Prioritätspriorität.

Der Cortex-M3-Prozessor verwendet eine neu lokalisierbare Vektortabelle, die die Adresse der Funktion enthält, die für einen bestimmten Interrupt-Handler ausgeführt werden soll. Beim Akzeptieren eines Interrupts ruft der Prozessor die Adresse aus der Vektortabelle über die Befehlsbusschnittstelle ab. Die Vektortabelle befindet sich beim Zurücksetzen an der Adresse Null, kann jedoch durch Programmieren eines Steuerregisters verschoben werden. Die Tail-Chaining-Technologie im NVIC unterstützt Interrupts, die hintereinander auftreten. Es kann jedoch Fälle geben, in denen ein Interrupt mit höherer Priorität auch während der Stapel- oder Statuswiederherstellungs-Pop-Phasen des zu bearbeitenden Interrupts auftreten kann.

In herkömmlichen ARM7-basierten Systemen müssen diese Phasen abgeschlossen sein, bevor der anstehende Interrupt übernommen werden kann. Der Cortex-M3 NVIC hingegen bietet eine deterministische Antwort auf diese Möglichkeiten mit Unterstützung für verspätete Ankunft und Prävention.

Im Falle des späten Eintreffens eines Interrupts mit höherer Priorität während der Ausführung des Stapels Push für einen vorherigen Interrupt ruft der NVIC sofort eine neue Vektoradresse ab, um den anstehenden Interrupt zu bedienen, wie unten gezeigt.

In ähnlicher Weise verlässt der NVIC einen Stack-Pop, wenn eine Ausnahme eintritt, und bedient den neuen Interrupt sofort, wie unten gezeigt. Durch Vorbelegung und Umschalten auf den zweiten Interrupt ohne Abschluss der Wiederherstellung und Speicherung des Status erreicht der NVIC auf deterministische Weise eine geringere Latenz.

(с) 2019 ebonyifinance.com