Betriebssystem-Eigenschaften von RMOS3
8.3 Interrupt-Bearbeitung unter RMOS3
Im I–Zustand dürfen alle Prozessorregister verwendet werden. Die alten Registerwerte sind
nach dem Aufruf von
Systemstack benutzt (Stackgröße ist in der Konfigurierung festgelegt) werden. Der Stack
muss allerdings vor Verlassen des Zustands bereinigt sein. Der Interrupthandler kann auf
alle Steuerdatentabellen und Datenstrukturen zugreifen und auch verändern. Nicht verändert
werden dürfen die Systemvariablen des Nukleus.
Falls mehr als 100 Befehle erforderlich sind um die Bearbeitung eines Interrupts zu
beenden, ist die Weiterschaltung in den S–Zustand notwendig. Auch für den Aufruf von
Unterprogrammen, die nur im S–Zustand aufgerufen werden dürfen (z.B. für die Beendigung
eines Auftrags, der von einem
weitergeschaltet werden. Die Weiterschaltung in den S–Zustand erfolgt durch den Aufruf des
Unterprogramms
Systemprozess.
SCV-Aufrufe während der Interruptbehandlung
Im I-Zustand können SVCs aufgerufen werden, wenn folgendes beachtet wird:
● Die aufgerufenen SVCs dürfen nicht zum Zustand WARTEND (Blocked) führen, d.h.
● Ein SVC wird erst nach Beendigung des I-Zustandes ausgeführt. D.h. das Ergebnis eines
● Es sollten demnach nur SVCs verwendet werden, die dem Betriebssystem etwas
● Weiterhin dürfen auf dem Stack nur die Parameter des SVCs liegen. Es ist also nicht
● Der SVC
SVC RmSetIntISHandler
Mit dem SVC
Ablauf bringen. Der SVC bietet auch die Möglichkeit, sofort in den S-Zustand zu verzweigen
oder den I-Zustand nach Bearbeitung zu beenden. Dies erfolgt intern durch den Aufruf der
Routine
gleichen oder eines nieder priorisierten Interrupts zu ermöglichen.
Bei einem Sprung auf
RECHNENDe Task fortgesetzt.
Beim Aufruf der Routine
Systemprozess, der zu einem späteren Zeitpunkt weiter bearbeitet wird.
RMOS3-Treiber
Die RMOS3-Standardtreiber leiten die Behandlung eines Interrupts im I-Zustand ein. Im I-
Zustand können SVCs aufgerufen werden, die nach Verlassen des I-Zustandes abgearbeitet
werden.
100
x_elipse
x_systate
Warten auf eine Botschaft oder
Exception wird "
in i-state
aufgerufen worden ist.
SVCs steht nicht zur Verfügung.
mitteilen, wie Task starten, Flag setzen, Semaphor zurücksetzen.
möglich, eine Botschaft am Stack anzulegen und den Zeiger auf diese Botschaft zu
verschicken.
ist im I-Zustand nicht erlaubt.
RmIO
RmSetIntISHandler
oder einen Sprung zur Marke
x_systate
x_xel
x_systate
gesichert. Für automatische Variablen kann der RMOS3–
–SVC abgesetzt wurde) muss in den S–Zustand
RmIO
und die Umwandlung des Interrupthandlers in einen
RmGetBinSemaphore
" ausgegeben, wenn der SVC aus einem Interrupt-Handler
kann der Programmierer Interruptroutinen im I-Zustand zum
x_xel
wird die Abarbeitung der Systemprozesse bzw. eine noch
erfolgt die Umwandlung des Interrupthandlers in einen
sind nicht erlaubt. Bei einer SVC-
, um die erneute Bearbeitung des
RMOS3 V3.50 Benutzerhandbuch
Bedienhandbuch, 07/2012, A5E03692290-01