8.3.4
I-Zustand
I-Zustand
Interrupt Zustand. Interrupts, die eine höhere Priorität besitzen als der gerade bearbeitete,
können die laufende Bearbeitung unterbrechen. Im I-Zustand stehen der CPU alle Register
zur Verfügung. Für lokale Variablen steht diesen Interrupthandlern der RMOS3-Systemstack
zur Verfügung.
Der Eintritt in den I–Zustand muss erfolgen, wenn mehr als ca. 25 Assemblerbefehle
erforderlich sind, um einen Interrupt zu bearbeiten. Zeitkritische Operationen können dann
vor dem Verlassen des DI–Zustandes (vor Aufruf des Unterprogramms
durchgeführt werden. Dies ist normalerweise nicht üblich, da von RMOS3–Treibern sofort
x_elipse
frei (
Die Festlegung der zeitlichen Dringlichkeit von Interruptbehandlungen wird durch die
Verdrahtung an den Interrupteingängen des Interrupt-Controllers festgelegt.
Interrupts höherer Priorität sind im I-Zustand wieder freigegeben
Interrupts höherer Priorität sind im I–Zustand freigegeben, Interrupts mit niedrigerer oder
gleicher Priorität sind blockiert (siehe auch Programmierung des Interrupt-Controllers in der
Hardwarekonfigurierung).
Max. ca. 100 Assemblerbefehle
Die Abarbeitung des Codes kann jederzeit durch einen Interrupt mit höherer Priorität
unterbrochen werden. Es muss beachtet werden, dass die Dauer der Code–Bearbeitung im
I–Zustand ca. 100 Assemblerbefehle nicht überschreiten darf, um die Echtzeitfähigkeit, d.h.
die Reaktionsfähigkeit auf Interrupts niedrigerer Priorität nicht zu gefährden.
Wenn es von der Applikation her möglich und sinnvoll ist, eine Bearbeitung im I–Zustand zu
beenden, dann kann der Handler durch einen Sprung (
beendet werden. Dieses Unterprogramm bedient den Interrupt-Controller und beendet die
Interruptroutine.
Der I–Zustand ist bereits für Interrupthandler verfügbar, die in C codiert sind. Typische
Ablauffolgen in diesem Zustand sind:
● Bedienung von Controller (z.B. serielle Schnittstellen)
● Ablegen von Zeichen, die im DI–Zustand eingelesen wurden, in Puffern
● Interne Zustandsumschaltungen und Konsistenzprüfungen. Zum Beispiel die
RMOS3 V3.50 Benutzerhandbuch
Bedienhandbuch, 07/2012, A5E03692290-01
aufgerufen wird.
–Befehl).
STI
Aktualisierung von Puffern, Zeigern und Zustandsbits, die die Gültigkeit von bestimmten
Puffern anzeigen. Überprüfung auf Pufferüberläufe, auf Beendigung eines Auftrags oder
die Berechnung von Checksummen.
gibt unter anderem den Interrupteingang der CPU wieder
x_elipse
Betriebssystem-Eigenschaften von RMOS3
8.3 Interrupt-Bearbeitung unter RMOS3
x_elipse
) auf das Unterprogramm
JMP
)
x_xel
99