-
Die
vorliegende Erfindung bezieht sich auf ein Multitaskingbetriebssystem.
-
In
manchen Computersystemen läuft
die CPU eines Mikrocomputers in einem normalen Modus und einem Modus
mit niedrigem Stromverbrauch (bzw. low-power-consumption mode oder
LPC-Modus). Bei dem LPC-Modus läuft
die CPU mit einer niedrigeren Taktfrequenz oder das Takten wird
zur Verringerung des Stromverbrauches abgestellt. Wenn die CPU von
dem normalen Modus in den LPC-Modus wechselt, wird die Ausführung einiger Programme
beendet. Daher enthält
das Computersystem ein geeignetes Programm, das die geeignete Zeit
zum Wechseln von dem normalen Modus in den LPC-Modus und die geeignete
Dauer des LPC-Modus bestimmt. Dadurch wird die CPU zwischen dem normalen
Modus und dem LPC-Modus so umgeschaltet, dass der Betrieb des Computersystems nicht
unterbrochen wird.
-
Eine
elektronische Steuerung (bzw. electronic control unit oder ECU)
für eine
Tür (bzw. Tür-ECU),
die ein Computersystem mit einem Mikrocomputer darstellt, steuert
das Türschloss
in einem Fahrzeug, wobei sie zwischen einem normalen Modus und einem
aussetzenden Modus (d. h. LPC-Modus) wechselt. Bezugnehmend auf 8 führt die Tür-ECU im
normalen Modus die Prozesse A, B, C, ..., n z. B. alle 5 ms aus.
Jeder der Prozesse A, B, C, ..., n ist ein Anwendungsprogramm, das
eine vorbestimmte Funktion umsetzt. Z. B. setzt der Prozess A ein
Schlüsselloses Schlossystem
(bzw. keyless entry system) in Gang, während der Prozess B ein Türenschließsystem
(bzw. door lock system) in Gang setzt.
-
Jeder
dieser Prozesse A, B, C, ..., n setzt ein Flag, das anzeigt, ob
der LPC-Modus während
der Ausführung
akzeptabel ist oder nicht. Der Prozess B setzt das Flag zum Anzeigen,
dass der Prozess B den LPC-Modus akzeptieren kann, wenn die verstrichene
Zeit, nachdem die Türen
verriegelt wurden, mindestens zehn Minuten ist.
-
Nachdem
die Ausführung
der Prozesse A, B, C, ..., n beendet ist, bestimmt ein Manager-Prozess auf
der Grundlage der Flags, ob die CPU in dem normalen Modus oder dem
LPC-Modus laufen soll. Wenn alle Flags gesetzt sind, d. h alle Prozesse
A, B, C, ..., n den LPC-Modus akzeptieren können, setzt der Manager die
CPU auf den LPC-Modus. Wenn mindestens ein Flag nicht gesetzt ist,
setzt der Manager die CPU auf den normalen Modus.
-
Bezugnehmend
auf 9 führt
in dem normalen Modus die CPU die Prozesse A, B, C, ..., n alle 5
ms (T1) aus, wie oben beschrieben. Aber die CPU kann die Prozesse
A, B, C, ..., n alle 300 ms (T2) ausführen, und dann wird die CPU
während
eines Zeitintervalls T3 zwischen der Beendigung der Ausführung der
Prozesse A, B, C, ..., n und dem Beginn der nächsten Ausführung der Prozesse A, B, C,...,
n auf den LPC-Modus gesetzt. Somit wird die CPU zwischen dem normalen
Modus und dem LPC-Modus so umgeschaltet, dass die Ausführung der
Prozesse A, B, C, n nicht unterbrochen wird.
-
Allerdings
ist eine Serie von Prozessen A, B, C, ..., n, die in regelmäßigen Intervallen
wiederholt ausgeführt
werden soll, in einem großem
Umfang schwer zu programmieren. Ferner kann die Zeit, die zur Ausführung der Serie
von Prozessen A, B, C, ..., n benötigt wird (T0 in 9),
manchmal lang sein, so dass die Ansprechempfindlichkeit des Systems
in diesem Fall verringert wird. Um dieses Problem zu lösen, wird
ein Multitaskingbetriebssystem, wie z. B. ein Echtzeitbetriebssystem
(bzw. real time operating system oder RIOS) verwendet. Das Multitaskingbetriebssystem
behandelt mehrere Prozesse eines Programms als Tasks und führt das
Programm durch Wechseln der Tasks aus. Somit enthält das Multitaskingbetriebssystem
nicht nur einen Mechanismus zum regulären Ausführen eines Programmes, sondern
auch einen Mechanismus zum Ausführen
eines Programms durch umständliches
Wechseln von Tasks.
-
Wenn
das Multitaskingbetriebssystem ein Programm durch Wechseln von Tasks
ausführt,
verändern
sich die Zustände
der Tasks ständig
entsprechend der Priorität
und abhängig
vom Auftreten von Interrupts und der Ausgabe von Systemaufrufen. Dementsprechend
kann ein Zeitintervall zwischen der Beendigung der Ausführung der
Tasks und dem Beginn der nächsten
Ausführung
der Tasks nicht einfach berechnet werden. Ferner kann die angemessene
Zeit zum Umschalten der CPU in den LPC-Modus nicht einfach bestimmt
werden.
-
Aus
der
US 6 260 150 B1 ,
die den nächst kommenden
Stand der Technik bildet, ist ein Betriebssystem zum Steuern eines
Betriebs einer Zentraleinheit eines Mikrocomputers bekannt mit einer ersten
Einrichtung zum Verwalten einer Mehrzahl von Tasks, welche zwischen
einem Betriebszustand, einem Betriebsbereitschaftszustand und einem
dritten Zustand geschaltet werden, und einer zweiten Einrichtung
zum Schalten der Zentraleinheit zu einem Modus mit niedrigem Stromverbrauch,
wenn es keinen Task in dem Betriebszustand und keinen Task in dem
Betriebsbereitschaftszustand gibt.
-
-
Es
ist daher die Aufgabe der vorliegenden Erfindung ein Multitaskingbetriebssystem
bereitzustellen, das die CPU eines Mikrocomputers zwischen einem
normalen Modus und einem Modus mit niedrigem Stromverbrauch (LPC-Modus)
schaltet, so dass die Ausführung
von Programmen nicht unterbrochen wird.
-
Diese
Aufgabe wird mit den in Anspruch 1, 7 und 8 angegebenen Maßnahmen
gelöst.
-
Weitere
vorteilhafte Ausgestaltungen der vorliegenden Erfindung sind Gegenstand
der abhängigen
Ansprüche.
-
Weitere
Einzelheiten, Aspekte und Vorteile der vorliegenden Erfindung ergeben
sich aus der illustrativ und nicht einschränkend zu verstehenden Beschreibung
vorteilhafter Ausführungsformen
der Erfindung anhand der Zeichnung.
-
1 ist
ein Blockdiagramm, das ein Karosseriesystem zeigt, das eine Karosserie-ECU
(bzw. eine elektronische Steuerung für die Karosserie) enthält, auf
der ein Echtzeitbetriebssystem (RIOS) gemäß einer Ausführungsform
der vorliegenden Erfindung installiert ist;
-
2 ist
ein schematisches Diagramm, das zeigt, wie ein normaler Modus und
ein Modus mit niedrigem Stromverbrauch (LPC-Modus) in der CPU der
Karosserie-ECU umgesetzt werden;
-
3 ist
ein Zustandsfolgediagramm von Tasks, die ein Programm bilden, das
von der CPU der Karosserie-ECU ausgeführt wird;
-
4 ist
ein Graph, der darstellt wie das RIOS eine Vielzahl von Tasks sendet
und die CPU zwischen einem normalen Modus und einem LPC-Modus umschaltet;
-
5 ist
ein Flussdiagramm eines Prozesses zum Verwalten der Betriebsart
der CPU;
-
6 ist
ein schematisches Diagramm, das darstellt, wie Alarme entsprechend
der jeweiligen Tasks dekrementiert werden;
-
7 ist
ein Graph, der darstellt, wie der Alarm auf Grundlage des Werts
des Systemtakts zu Ende geht, und wie die Verzögerung des zu Ende Gehens gemäß einer
Modifikation der vorliegenden Erfindung verhindert wird;
-
8 ist
ein Flussdiagramm eines Prozesses zum Verwalten der Betriebsart
der CPU im Stand der Technik; und
-
9 ist
ein Graph, der darstellt, wie ein Betriebssystem im Stand der Technik
die CPU zwischen einem normalen Modus und einem LPC-Modus schaltet.
-
Die
vorliegende Erfindung wird mit Bezug auf eine Ausführungsform
und Modifikationen beschrieben werden. Ein Betriebssystem gemäß einer
Ausführungsform
der vorliegenden Erfindung ist auf der Karosserie-ECU des Karosseriesystems
eines Fahrzeugs installiert. Bezugnehmend auf 1 enthält das Karosseriesystem 100 eine
Karosserie-ECU 10 und andere ECUs 20, die eine
Fahrertür-ECU 20a, eine
Beifahrertür-ECU 20b und
eine Armaturenbrett-ECU 20c sind.
Die ECUs 10 und 20 sind an das Fahrzeug-LAN 50 angeschlossen
und deshalb kann die Karosserie-ECU 10 mit jeder anderen
der ECUS 20 über
das Fahrzeug-LAN 50 kommunizieren. Jede der ECUs 10 und 20 ist
ein Computersystem, das eine Zentraleinheit (CPU), einen ROM-Speicher (ROM), einen
RAM-Speicher (RAM) und ein I/O Subsystem (I/O) enthält. Die
Karosserie-ECU 10 ist durch das I/O Subsystem 18 an
das Fahrzeug-LAN 50 angeschlossen. Jede der ECUs 20 ist
durch das I/O Subsystem an eine Eingabevorrichtung 30,
Ausgabevorrichtungen 40 und an das Fahrzeug-LAN 50 angeschlossen.
-
Jede
der ECUs 20 erfasst den Zustand der Eingabevorrichtung 30 und
sendet ein Paketsignal, das die Information über den erfassten Zustand der Eingabevorrichtung 30 enthält, über das
Fahrzeug-LAN 50 an die Karosserie-ECU 10. Ferner empfängt jede
der ECUs 20 ein Paketsignal, das eine Steuerungsinformation
enthält, über das
Fahrzeug-LAN 50 von der Karosserie-ECU 10 und
steuert die Ausgabevorrichtung 40 auf der Grundlage der empfangenen
Steuerungsinformation.
-
Die
Fahrertür-ECU 20a ist
in der Tür
auf der Fahrerseite angeordnet. Ein Fahrertürsteuerungsschalter 30a ist
als eine Eingabevorrichtung 30 an die Fahrertür-ECU 20a angeschlossen.
Ein Motor 40a, der für
ein Fahrertürschloss
verwendet wird, und ein Motor, der für einen elektrischen Fensterheber
in der Fahrertür
verwendet wird, sind als Ausgabevorrichtungen 40 an die
Fahrertür-ECU 20a angeschlossen. Die
Beifahrertür-ECU 20b ist
in der Tür
auf der Beifahrerseite angeordnet. Ein Beifahrertürsteuerungsschalter 30b ist
als eine Eingabevorrichtung 30 an die Beifahrertür-ECU 20b angeschlossen.
Ein Motor 40b, der für
ein Beifahrertürschloss
verwendet wird, und ein Motor, der für einen elektrischen Fensterheber
auf der Beifah rerseite verwendet wird, sind als Ausgabevorrichtungen 40 an
die Beifahrertür-ECU 20b angeschlossen.
Die Amaturenbrett-ECU 20c ist in dem Amaturenbrett angeordnet.
Ein Summer 40c und eine Lampe 40d sind als Ausgabevorrichtungen 40 an
die Amaturenbrett-ECU 20c angeschlossen.
-
Die
Karosserie-ECU 10 empfängt
Paketsignale von den anderen ECUs 20 und überwacht
den Zustand der Eingabevorrichtungen 30 auf der Grundlage
der Information, die in den Paketsignalen enthalten ist. Die Karosserie-ECU 10 sendet
Paketsignale, die eine Steuerungsinformation zum Anweisen der ECUs 20 enthalten,
um die Ausgabevorrichtungen 40 zu steuern.
-
Das
Echtzeitbetriebssystem (RIOS) gemäß der vorliegenden Ausführungsform
ist in dem ROM-Speicher 14 der Karosserie-ECU 10 gespeichert
und wird von der CPU 12 zum Verwalten der Ausführung eines
Anwendungsprogramms ausgeführt,
das in dem ROM-Speicher 14 gespeichert ist. Das RIOS behandelt
Prozesse des Anwendungsprogramms als Tasks und führt das Anwendungsprogramm
durch Wechseln der Tasks aus. Demzufolge funktioniert die Karosserie-ECU 10 in
oben beschriebener Weise, während
sie den RAM-Speicher 16 und das I/O Subsystem 18 steuert,
das an das Fahrzeug-LAN 50 angeschlossen
ist. Ferner verwaltet das RIOS verschiedene Resourcen. Z. B. verwaltet das
RIOS die Betriebsart, wie z. B. einen Stromverbrauchsmodus.
-
Bezugnehmend
auf 2 läuft
die CPU 12 der Karosserie-ECU 10 in zwei Betriebsarten,
d. h. einem normalen Modus und einem Modus mit niedrigem Stromverbrauch
(LPC-Modus) (d.
h. Ruhemodus). Im normalen Modus läuft die CPU 12 entsprechend
eines Rechnertakts bei einer Frequenz von 16 MHz (4 MHz × 4), und
führt dadurch
das in dem ROM-Speicher 14 gespeicherte
Programm aus. Im LPC-Modus ist das Takten der CPU 12 abgestellt,
so dass der Stromverbrauch verringert wird.
-
Wenn
die CPU 12 in den LPC-Modus wechselt, setzt sie zunächst einen
Weck-Timer auf eine vorbestimmte Dauer des LPC-Modus (d. h. Ruhedauer)
und führt
danach einen Ruhe-Befehl
aus. Die CPU 12 wechselt von dem LPC-Modus in einen normalen
Modus, wenn die aktuelle Dauer des LPC-Modus die vorbestimmte Ruhedauer
erreicht. Ferner wechselt die CPU 12 von dem LPC-Modus
in den normalen Modus, wenn ein Interrupt auftritt, selbst wenn
die aktuelle Dauer des LPC-Modus noch nicht die vorbestimmte Ruhedauer
erreicht hat.
-
Das
RIOS verwaltet die Tasks wie folgt. Bezugnehmend auf 3 schaltet
das RIOS jeden der Tasks zwischen vier Zuständen, d. h. "Betrieb", "Betriebsklar", "Wartet", und "Ausgesetzt". Ein Task in Ausführung ist
im "Betrieb"-Zustand (bzw. Betriebszustand).
Ein Task, der darauf wartet, ausgeführt zu werden, ist im "Betriebsklar"-Zustand (bzw. Betriebsklarzustand).
Ein Task der auf ein einzutreffendes Ereignis zum Auslösen der
Ausführung
des Tasks wartet, ist im "Wartet"-Zustand (bzw. Wartezustand).
Ein ausgesetzter Task ist im "ausgesetzt" Zustand (bzw. Aussetzzustand).
-
Die
maximale Anzahl von Tasks im Betriebszustand ist gleich der Anzahl
der Tasks, die die Karosserie-ECU 10 gleichzeitig ausführen kann.
Daher ist die maximale Anzahl der Tasks im Betriebszustand in der
vorliegenden Ausführungsform
1, da die Karosserie-ECU 10 die Einzel-CPU (bzw. Single-CPU) enthält. Im Gegensatz
dazu ist die maximale Anzahl der gleichzeitig ausführbaren
Tasks in jedem der anderen Zustände
größer.
-
Wenn
die Ausführung
eines Tasks im Betriebszustand fertiggestellt ist, gibt der Task
einen Beende-Task-Systemaufruf
an das RIOS aus. Im Ansprechen auf den Beende-Task-Systemaufruf
schaltet das RIOS den Task im Betriebszustand in den Aussetzzustand.
Wenn ein Task im Betriebszustand auf ein vorbestimmtes Ereignis
warten soll, gibt der Task einen Warte-auf-Ereignis-Systemaufruf
an das RIOS aus. Im Ansprechen auf den Warte-auf-Ereignis-Systemaufruf schaltet das RIOS
den Task in den Wartezustand.
-
Wenn
ein Task im Betriebszustand in einen anderen Zustand umgeschaltet
wird, kann das RIOS von neuem beginnen, eine Task auszuführen. Dann wählt das
RIOS einen Task mit der höchsten
Priorität von
den Tasks aus, die in dem Betriebsklarzustand sind, und schaltet
den ausgewählten
Task in den Betriebszustand. Dann wird der ausgewählte Task
abgesendet und ausgeführt.
-
Wenn
ein Task einer höheren
Priorität
als ein Task im Betriebszustand in den Betriebsklarzustand geschaltet
wird, schaltet das RIOS den Task im Betriebszustand in den Betriebsklarzustand
und schaltet dann den Task einer höheren Priorität in den
Betriebszustand. Somit präemptiert
das RIOS. D. h. das RIOS gemäß der vorliegenden
Ausführungsform
ist ein prÄemptives
Multitaskingbetriebssystem.
-
Ein
Task im Aussetzzustand wird in den Betriebsklarzustand geschaltet,
wenn eine vorbestimmte Bedingung erfüllt ist. Die Bedingung für das Schalten
wird für
jedeN Task bestimmt. Die Bedingung ist, dass (1) ein Timer (Alarm)
abläuft
(d. h. der Timer zeigt an, dass eine eingestellte Zeit verstrichen
ist), (2) einer der vorbestimmten Interrupts auftritt, oder (3)
die Ausführung
eines Tasks, an den der Task im Aussetzzustand gekettet ist, fertiggestellt
ist.
-
Ein
Task im Aussetzzustand wird auf der Grundlage der Bedingung (1)
wie folgt in den Betriebsklarzustand geschaltet. Der Timer (Alarm)
ist für jeden
Task bereitgestellt. Durch Herausgeben eines Systemaufrufs weist
der Task im Betriebszustand das RIOS an, einen vorbestimmten Task
nach einem Intervall mit vorbestimmter Zeitlänge (z. B. 100 ms) zu aktivieren.
Das RIOS stellt den Timer auf die vorbestimmte Zeitlänge ein
und überwacht
danach den Timer. Wenn eine vorbestimmte Zeitdauer verstrichen ist,
d. h. wenn der Timer abläuft,
schaltet das RIOS den Task im Aussetzzustand in den Betriebsklarzustand.
-
Wenn
ein Interrupt auftritt, wird ein zu schaltender Task entsprechend
dem Typ des Interrupts ausgewählt
und dann in den Betriebsklarzustand geschaltet. Somit wird ein Task
im Aussetzzustand auf Grundlage der Bedingung (2) in den Betriebsklarzustand
geschaltet.
-
Ein
Task im Aussetzzustand wird auf Grundlage der Bedingung (3) wie
folgt in den Betriebsklarzustand geschaltet. Wenn die Karosserie-ECU 10 eine
Information über
den Zustand des Türschlosses erhalten
soll, überprüft die Karosserie-ECU 10 zunächst den
Zustand des Türschlosses
im Inneren und danach den Zustand des Türschlosses außen. In diesem
Fall wird zuvor ein Task B zum Überprüfen des
Zustands des Türschlosses
außen
an einen Task zum Überprüfen des
Zustands des Türschlosses
im Inneren gekettet, so dass diese Tasks A, B aufeinanderfolgend
ausgeführt
werden. Wenn die Tasks A, B so gesetzt sind, wird der Task B von
dem Aussetzzustand in den Betriebsklarzustand geschaltet, wenn die
Ausführung
der Task A fertiggestellt ist.
-
Wenn
ein Task im Betriebszustand einen Setze-Ereignis-Systemaufruf ausgibt,
wird ein Task in Übereinstimmung
mit einem Ereignis, das durch den Setze-Ereignis-Systemaufruf spezifiziert
ist, von dem Wartezustand in den Betriebsklarzustand geschaltet.
-
Auf
diese Weise verändern
sich die Zustände
der Tasks laufend abhängig
vom Auftreten von Interrupts und der Herausgabe von Systemaufrufen. Bezugnehmend
auf 4, werden z. B. Tasks A, B, n in rascher Folge
ausgeführt
und danach wird die Task B nach einer relativ langen Zeitspanne
ausgeführt.
In diesem Fall ist, wenn die Ausführung der Task A fertiggestellt
ist, d. h. wenn der Task A vom Betriebszustand in den Aussetzzustand
oder Wartezustand geschaltet wird, der Task B im Betriebsklarzustand.
Daher beginnt das RIOS die Ausführung des
Tasks B unmittelbar nachdem die Ausführung des Tasks A fertiggestellt
ist. Demgegenüber
ist, wenn die Ausführung
des Task n fertiggestellt ist, d. h. wenn der Task n von dem Betriebszustand
in einen anderen Zustand geschaltet wird, kein Task im Betriebsklarzustand.
Daher wird für
eine Weile kein Task ausgeführt.
Danach wird der Task B in den Betriebsklarzustand geschaltet. Dann
wird der Task von dem Betriebsklarzustand in den Betriebszustand
geschaltet und ausgeführt.
-
Das
RIOS verwaltet die Betriebsart der CPU 12 wie folgt. Bezugnehmend
auf 5 werden die Tasks bei Schritt 110 geplant
und wird danach bei Schritt 120 bestimmt, ob es einen Task
im Betriebsklarzustand oder einen Task im Betriebszustand gibt. Wenn
ja bestimmt wird, kehrt der Prozess zu Schritt 110 zurück, um die
Tasks abermals zu planen. Wenn dies nicht der Fall ist (d. h. es
gibt keinen Tasks im Betriebsklarzustand und keinen Task im Betriebszustand)
fährt der
Prozess mit Schritt 130 fort.
-
Bei
Schritt 130 wird bestimmt, ob die verbleibende Zeit, bevor
ein Task im Aussetzzustand auf Grundlage obiger Bedingung (1) in
einen Betriebsklarzustand geschaltet wird (d. h. die verfügbare Zeit für den LPC-Modus) größer ist
als eine vorbestimmte Zeitdauer. Die vorbestimmte Zeitdauer ist
gleich der zulässigen
Minimaldauer (bzw. allowable minimal duration oder AMD) des LPC-Modus. Die verbleibende Zeit,
bevor ein Task im Aussetzzustand auf Grundlage obiger Bedingung
(2) oder (3) in den Betriebsklarzustand geschaltet wird, ist nicht
vorhersehbar. Wenn ein Task im Aussetzzustand auf Grundlage der
obigen Bedingung (2) oder (3) in den Betriebsklarzustand geschaltet
wird, wird bei Schritt 120 bestimmt, dass es einen Tasks
im Betriebsklarzustand gibt, und danach werden die Tasks bei Schritt 110 geplant.
-
Für die jeweiligen
Tasks werden, wie oben beschrieben, Alarme vorbereitet. Jeder der
Alarme ist ein Zähler,
der auf Grundlage des Werts des Systemtakts rückwärts zählt. Der Systemtakt wird durch im
RIOS enthaltene Software umgesetzt. Das RIOS dekrementiert den Zähler immer
dann um eins, wenn der Systemtakt z. B. um fünf weiterzählt. Wenn der Wert des Zählers gegen
null geht, d. h. der Alarm abläuft,
schaltet das RIOS den Task entsprechend dem Zähler von dem Aussetzzustand
in den Betriebsklarzustand.
-
Z.
B. wird bezugnehmend auf 6 der Alarm A entsprechend dem
Task A auf 100, der Alarm B entsprechend dem Task B auf 10, und
der Alarm C entsprechend der Task C auf 120 gesetzt. Angenommen,
dass der Systemtakt mit 1 ms zählt, dekrementiert
das RIOS die Alarme A, B, C alle 5 ms um eins. D. h., die Einheitszeit
ist in diesem Fall 5 ms. Das RIOS wählt den Alarm aus, der zuerst
ablaufen soll, und vergleicht die verbleibende Zeit, bevor der ausgewählte Alarm
abläuft,
mit der AMD des LPC-Modus
bei Schritt 130. Wenn bei Schritt 130 bestimmt
wird, dass der Wert des ausgewählten
Alarms größer ist
als die zulässige
Minimalzeit bzw. AMD des LPC-Modus, fährt der Prozess mit Schritt 140 fort,
in dem die CPU 12 auf den LPC-Modus geschaltet wird. Wenn
bei Schritt 130 bestimmt wird, dass der Wert des ausgewählten Alarms
gleich oder kleiner als die AMD des LPC-Modus ist, kehrt der Prozess
zu Schritt 110 zurück.
-
In
dem in 6 gezeigten Beispiel wird unter der Annahme, dass
t1 den Zeitpunkt anzeigt, bei dem Schritt 130 durchgeführt wird,
der Alarm B ausgewählt
und bei Schritt 130 verwendet. Die Zeit, die verbleibt,
bevor der Alarm B abläuft,
ist in diesem Fall 5 ms × 10
= 50 ms. Unter der Annahme, dass die AMD des LPC-Modus 300 ms ist,
wird bei Schritt 130 bestimmt, dass die verbleibende Zeit,
bevor der Alarm B abläuft,
kleiner als die AMD des LPC-Modus ist. Daher kehrt in diesem Fall
der Prozess zu dem Schritt 110 zurück, ohne die CPU 12 in
den LPC-Modus zu schalten.
-
Unter
der Annahme, dass t3 den Zeitpunkt anzeigt, bei dem Schritt 130 in
dem in 6 gezeigten Beispiel durchgeführt wird, wird der Alarm A
ausgewählt
und bei Schritt 130 verwendet. Die verbleibende Zeit, bevor
der Alarm A abläuft,
ist in diesem Fall 5 ms × 89
= 445 ms. Es wird bei Schritt 130 bestimmt, dass die verbleibende
Zeit, bevor der Alarm A abläuft,
größer als
die AMD (300 ms) des LPC-Modus ist. Daher fährt der Prozess in diesem Fall
mit Schritt 140 fort.
-
Die
AMD des LPC-Modus wird angesichts der Art der auszuführenden
Aufgaben und der Hardwareeinschränkungen
auf die zulässige
Dauer des LPC-Modus bestimmt. Ferner können eine Vielzahl von Muster
(verschiedene Zeitdauern) für
die AMD des LPC-Modus vorbereitet werden. In diesem Fall wird eines
von den Mustern bei Schritt 130 als die aktuell verwendete
AMD entsprechend dem gemessenen Stromverbrauch und der gemessenen
Verarbeitungsleistung ausgewählt.
In dem Fall, dass vier Muster (d. h. 2 ms, 8 ms, 32 ms und 256 ms)
als Ruhedauern bereitgestellt werden, wie in 2 gezeigt, können diese
vier Muster als die Muster für
die AMD verwendet werden. D. h. ein entsprechend ausgewähltes der
vier Muster kann als die AMD des LPC-Modus bei Schritt 130 verwendet
werden.
-
Bei
Schritt 140 setzt das RIOS den Weck-Timer auf eine Zeit,
die kürzer
als die verbleibende Zeit ist, bevor der Alarm zuerst abläuft, und
schaltet dann die CPU 12 durch Ausführen einer Ruheanweisung in den
LPC-Modus (d. h. Ruhemodus). In obigem Beispiel setzt unter der
Annahme, dass der Weck-Timer auf eines der vier Muster (d. h. 2
ms, 8 ms, 32 ms, 256 ms), wie in 2 gezeigt,
gesetzt werden kann, das RIOS den Weck-Timer auf 256 ms, da die
verbleibende Zeit, bevor der Alarm A abläuft, 445 ms ist. Aber wenn
der Weck-Timer auf eine beliebige Zeitdauer gesetzt werden kann,
kann das RIOS den Weck-Timer
z. B. auf 440 ms setzen.
-
Im
LPC-Modus wird das Takten der CPU 12 abgestellt, und zählt der
Weck-Timer die Ruhedauer bei Schritt 150 rückwärts. Um
den Stromverbrauch weiter zu reduzieren, kann das Takten der Peripherie abgestellt
werden. Das Abstellen des Taktens der CPU 12 beinhaltet
zeitweises Aussetzen der Systemuhr. Wenn der Weck-Timer abläuft oder
ein Interrupt auftritt, wird das Takten der CPU 12 wieder
aufgenommen und wird die CPU 12 in den normalen Modus geschaltet.
Dann wird bei Schritt 160 bestimmt, ob die CPU 12 im
Ansprechen auf den Ablauf des Weck-Timers oder im Ansprechen auf
das Auftreten eines Interrupts in den normalen Modus geschaltet
wird.
-
Wenn
bei Schritt 160 bestimmt wird, dass die CPU 12 im
Ansprechen auf das Auftreten eines Interrupts in den normalen Modus
geschaltet wird, fährt der
Prozess mit Schritt 180 fort, in dem der Wert gleich der
Hälfte
der Ruhedauer dem Wert der Systemuhr zugefügt wird. Dann kehrt der Prozess
zu Schritt 110 zurück.
Wenn andererseits bei Schritt 160 bestimmt wird, dass die
CPU 12 im Ansprechen auf den Ablauf des Weck-Timers in
den normalen Modus geschaltet wird, fährt der Prozess mit Schritt 170 fort, in
dem der Wert gleich der Ruhedauer dem Wert der Systemuhr zugefügt wird.
Dann kehrt der Prozess zu Schritt 110 zurück. Somit
kompensiert das RIOS das temporare Aussetzen der Systemuhr während des LPC-Modus.
Dadurch behalten die Alarme A, B, C ebenso korrekte Werte.
-
Das
Betriebssystem gemäß der vorliegenden
Ausführungsform
kann mittels Hardware umgesetzt werden. Aber es kann auch in Form
eines vom Computer ausführbaren
Programms bereitgestellt werden. Ein solches Programm kann in einem
computerlesbaren Medium, wie z. B. einer Floppy Disk, einer magnetooptischen
Disk, einer CD-ROM, einer Festplatte, einem ROM-Speicher oder einem RAM-Speicher,
gespeichert werden, und kann, wenn notwendig, geladen werden. Alternativ
kann das Programm über
ein Netzwerk geladen werden.
-
Gemäß der vorliegenden
Erfindung werden folgende Vorteile erzielt. Das RIOS schaltet die
CPU 12 nur dann in den LPC-Modus, wenn es keinen Task im
Betriebszustand oder Betriebsklarzustand gibt. Daher wird das RIOS
niemals die CPU 12 in den LPC-Modus schalten, wenn der Task
ausgeführt wird.
Ferner wird die Ausführung
der Tasks im Betriebsklarzustands nicht verzögert werden, da das RIOS die
CPU 12 nicht in den LPC-Modus schaltet, wenn es einen Task
im Betriebsklarzustand gibt.
-
Die
Tasks im Aussetzzustand werden nicht am Schalten in den Betriebsklarzustand
gehindert werden, da das RIOS die Dauer des LPC-Modus bestimmt,
so dass sie kürzer
ist, als die verbleibende Zeit, bevor der Alarm zum Wecken einer
Task von dem Aussetzzustand abläuft.
Ferner schaltet das RIOS die CPU 12 von dem LPC-Modus in
den normalen Modus, wenn ein Interrupt auftritt. Daher wird der
Task im Aussetzzustand im Ansprechen auf das Auftreten eines unvorhersehbaren
Interrupts nicht vom Schalten in den Betriebsklarzustand gehindert.
-
Somit
wird der Stromverbrauch in der Karosserie-ECU 10 verringert,
ohne die Ausführung
der Task im Betriebszustand, der Tasks im Betriebsklarzustand und
der durch die Alarme zu weckenden Tasks zu unterbrechen. Ferner
müssen
Entwickler die Betriebsart der CPU 12 nicht in Betracht
ziehen, wenn sie ein Anwendungsprogramm entwickeln, das aus Tasks
besteht. Daher können
sie das Anwendungsprogramm einfach entwickeln.
-
Zusammenfassend
läßt sich
die vorliegende Erfindung wie folgt darstellen. Ein Echtzeitbetriebssystem
(RIOS) für
eine elektronische Steuereinheit (ECU) (10) im Fahrzeug
schaltet (120–140)
die CPU (12) der Fahrzeug-ECU in einen Modus mit niedrigem
Stromverbrauch (LPC-Modus), wenn es keinen Task in einem Betriebszustand
und in einem Betriebsklarzustand gibt, und ferner die verbleibende Zeit,
bevor ein Task in einem Aussetzzustand in den Betriebsklarzustand
geschaltet wird, länger
als eine vorbestimmte zulässige
Minimaldauer des LPC-Modus ist. Die Dauer des LPC-Modus wird auf
eine Länge
eingestellt, die kürzer
als die verbleibende Zeit ist, bevor ein Task in dem Aussetzzustand
in den Betriebsklarzustand geschaltet wird. Wenn ein Interrupt auftritt
oder die Dauer des LPC-Modus abläuft,
wird die CPU in einen normalen Modus geschaltet und wird das temporäre Aussetzen
der Systemuhr während
des LPC-Modus unter Verwendung der Dauer des LPC-Modus kompensiert
(170, 180).
-
In
obiger Ausführungsform
kann das RIOS den Alarm so einstellen, dass der Alarm abläuft, wenn
die Systemuhr die vorbestimmte absolute Zeit anzeigt. Z. B. ist
der Alarm so eingestellt, dass er bei 10300 absoluter Zeit abläuft, wie
in der obersten Zeile von 7 gezeigt.
In diesem Fall wird, wenn Schritt 170 oder 180 weggelassen
wird, nachdem der vorherige LPC-Modus einer Dauer von 130 ms beendet
ist, der Ablauf des Alarms bei 10300 absoluter Zeit verzögert, wie
in der mittleren Zeile von 7 gezeigt.
Wenn Schritt 170 oder 180 nach dem vorherigen
LPC-Modus ausgeführt
wird, wird der Ablauf des Alarms bei 10300 absoluter Zeit nicht
verzögert, wie
in der unteren Zeile von 7 gezeigt, da die Ausfallzeit
von 130 ms bei Schritt 170 oder 180 kompensiert
wird. Dementsprechend sollte Schritt 170 oder 180 ausgeführt werden,
nachdem der LPC-Modus beendet ist, damit der Alarm zu der genauen
Zeit abläuft.
Ferner kann das RIOS den Alarm zunächst auf 0 setzen und danach
den Alarm entsprechend der Systemuhr inkrementieren. In diesem Fall
läuft der
Alarm ab, wenn der Wert des Alarms einen vorbestimmten Wert erreicht.
-
In
obiger Ausführungsform
kann das RIOS die Tasks zwischen drei oder mehr als vier Zuständen schalten.
Z. B. kann das RIOS die Tasks zwischen Zuständen, die einen Taskerzeugungszustand
oder einen Anomaliestopzustand enthalten, oder zwischen dem Betriebszustand,
dem Betriebsklarzustand und dem Aussetzzustand schalten.
-
Ferner
kann das RIOS anstatt eines präemptiven
Multitaskingbetriebssystems ein nicht präemptives Multitaskingbetriebssystem
sein.
-
Das
Betriebssystem der vorliegenden Erfindung kann für verschiedene Vorrichtungen
außer
der Karosserie-ECU 10 des Karosseriesystems 100 verwendet
werden. Z. B. kann das Betriebssystem der vorliegenden Erfindung
für eine
batteriebetriebene Vorrichtung oder die ECUS 20 verwendet
werden, die an die Karosserie-ECU 10 in 1 angeschlossen sind.
Das Betriebssystem der vorliegenden Erfindung kann die Betriebsart
so steuern, dass der Stromverbrauch verringert wird, ohne die Ausführung von
Programmen zu unterbrechen. Daher ist es in einer Vorrichtung verwendbar,
in der eine Verringerung des Stromverbrauchs in höchstem Maße gefordert
ist.