240
4 Systemsoftware
4.3 ERIKA
Verschiedene eingebettete Systeme (wie Automobilsteuergeräte und Haushaltsgeräte) bedingen, dass die gesamte Anwendung auf einem kleinen Mikrocontroller
integriert ist11. Daher müssen die von der Firmware angebotenen Betriebssystemdienste auf solchen Systemen auf eine solche minimale Teilmenge beschränkt werden, welche die mehrfädige Ausführung von periodischen und aperiodischen Tasks
unterstützt und dabei gemeinsame Ressourcennutzung unter Vermeidung von Prioritätsumkehr erlaubt.
Entsprechende Anforderungen wurden in den neunziger Jahren durch das OSEK/
VDK-Konsortium veröffentlicht [578]. Diese definierten die minimale Menge an
Diensten eines mehrfädigen Echtzeitbetriebssystems, die mit einer Codegröße von
1-10 kB auf einem 8-Bit Mikrocontroller implementierbar sein sollte. Im Jahr 2010
wurde die OSEK/VDX API durch das AUTOSAR-Konsortium [27] um Funktionalität zur Unterstützung von zeitlichem Schutz, Scheduling-Tabellen für zeitgetriggerte
Systeme und Speicherschutz zum Schutz der Ausführung unterschiedlicher Anwendungen auf demselben Mikrocontroller erweitert. Dieser Abschnitt beschreibt
in Kürze die Haupteigenschaften von und Anforderungen an solche Systeme, wobei der Open Source-Echtzeitkern ERIKA Enterprise als Referenzimplementierung
dient [157].
Die erste Eigenschaft, die einen OSEK-Kern von anderen Betriebssystemen unterscheidet, ist, dass alle Kernobjekte statisch zur Übersetzungszeit definiert sind.
Insbesondere erlauben die meisten dieser Systeme weder dynamische Speicherzuteilung noch die dynamische Erzeugung von Tasks12. Um den Benutzer bei der
Konfiguration des Systems zu unterstützen, stellt der OSEK/VDX-Standard die
Konfigurationssprache OIL zur Verfügung, in der die für die Anwendung zu instanziierenden Objekte definiert werden. Beim Übersetzen der Anwendung erzeugt
der OIL-Compiler die Betriebssystem-Datenstrukturen und alloziert genau die benötigte Menge an Speicher. Dieser Ansatz ermöglicht es, nur genau die Daten im
Flash-Speicher (der bei den meisten Mikrocontrollern preiswerter als RAM ist) zu
allozieren, die von der Anwendung wirklich gebraucht werden.
Das zweite Unterscheidungsmerkmal eines OSEK/VDX-Systems im Vergleich zu
Standard-Betriebssystemen ist die Unterstützung für gemeinsam benutzte Stapel
(engl. Stack Sharing). Stack Sharing wird eingesetzt, da RAM-Speicher bei kleinen
Mikrocontrollern sehr teuer ist. Ob Stack Sharing einsetzbar ist, hängt insbesondere
davon ab, wie der Code der einzelnen Tasks geschrieben wurde.
In herkömmlichen Echtzeitsystemen ist die Implementierung einer periodischen
Task nach dem folgenden Schema strukturiert:
task(x) {
int Lokaae_Variabbe;
Initiaaisierung();
for (;;) {
11 Dieser Abschnitt wurde von G. Buttazzo und P. Gai (Pisa) beigesteuert.
12 Im Kontext von ERIKA wird der Begriff Task ähnlich benutzt wie bisher der Begriff Prozess.
4 Systemsoftware
4.3 ERIKA
Verschiedene eingebettete Systeme (wie Automobilsteuergeräte und Haushaltsgeräte) bedingen, dass die gesamte Anwendung auf einem kleinen Mikrocontroller
integriert ist11. Daher müssen die von der Firmware angebotenen Betriebssystemdienste auf solchen Systemen auf eine solche minimale Teilmenge beschränkt werden, welche die mehrfädige Ausführung von periodischen und aperiodischen Tasks
unterstützt und dabei gemeinsame Ressourcennutzung unter Vermeidung von Prioritätsumkehr erlaubt.
Entsprechende Anforderungen wurden in den neunziger Jahren durch das OSEK/
VDK-Konsortium veröffentlicht [578]. Diese definierten die minimale Menge an
Diensten eines mehrfädigen Echtzeitbetriebssystems, die mit einer Codegröße von
1-10 kB auf einem 8-Bit Mikrocontroller implementierbar sein sollte. Im Jahr 2010
wurde die OSEK/VDX API durch das AUTOSAR-Konsortium [27] um Funktionalität zur Unterstützung von zeitlichem Schutz, Scheduling-Tabellen für zeitgetriggerte
Systeme und Speicherschutz zum Schutz der Ausführung unterschiedlicher Anwendungen auf demselben Mikrocontroller erweitert. Dieser Abschnitt beschreibt
in Kürze die Haupteigenschaften von und Anforderungen an solche Systeme, wobei der Open Source-Echtzeitkern ERIKA Enterprise als Referenzimplementierung
dient [157].
Die erste Eigenschaft, die einen OSEK-Kern von anderen Betriebssystemen unterscheidet, ist, dass alle Kernobjekte statisch zur Übersetzungszeit definiert sind.
Insbesondere erlauben die meisten dieser Systeme weder dynamische Speicherzuteilung noch die dynamische Erzeugung von Tasks12. Um den Benutzer bei der
Konfiguration des Systems zu unterstützen, stellt der OSEK/VDX-Standard die
Konfigurationssprache OIL zur Verfügung, in der die für die Anwendung zu instanziierenden Objekte definiert werden. Beim Übersetzen der Anwendung erzeugt
der OIL-Compiler die Betriebssystem-Datenstrukturen und alloziert genau die benötigte Menge an Speicher. Dieser Ansatz ermöglicht es, nur genau die Daten im
Flash-Speicher (der bei den meisten Mikrocontrollern preiswerter als RAM ist) zu
allozieren, die von der Anwendung wirklich gebraucht werden.
Das zweite Unterscheidungsmerkmal eines OSEK/VDX-Systems im Vergleich zu
Standard-Betriebssystemen ist die Unterstützung für gemeinsam benutzte Stapel
(engl. Stack Sharing). Stack Sharing wird eingesetzt, da RAM-Speicher bei kleinen
Mikrocontrollern sehr teuer ist. Ob Stack Sharing einsetzbar ist, hängt insbesondere
davon ab, wie der Code der einzelnen Tasks geschrieben wurde.
In herkömmlichen Echtzeitsystemen ist die Implementierung einer periodischen
Task nach dem folgenden Schema strukturiert:
task(x) {
int Lokaae_Variabbe;
Initiaaisierung();
for (;;) {
11 Dieser Abschnitt wurde von G. Buttazzo und P. Gai (Pisa) beigesteuert.
12 Im Kontext von ERIKA wird der Begriff Task ähnlich benutzt wie bisher der Begriff Prozess.
