-
Die
vorliegende Erfindung bezieht sich auf ein Programm, das eine Mehrfachunterbrechungseinheit
zum Vergleichen von Aufgabenebenenprozeßprioritäten bei einer Aufgabenplanung
veranlaßt, und
bezieht sich auf einen Mikrocomputer zum Ausführen des Programms.
-
Herkömmlich sind
bekannte Spezifikationen über
allgemeine RTOS' (Echtzeitbetriebssysteme) wie
beispielsweise OSEK-OS und ITRON, die auf einer Anweisungsausführungseinheit
wie beispielsweise einer CPU arbeiten, vorhanden. Die Spezifikationen
schreiben einen Interruptebenenprozeß bzw. Unterbrechungsebenenprozeß und einen
Taskebenenprozeß bzw.
Aufgabenebenenprozeß als
Kategorien von auf dem Betriebssystem ausgeführten Prozessen vor.
-
Genauer
schreibt die RTOS-Spezifikation eine Schnittstelle zum Annehmen
von Ausführungsanforderungen
für Aufgabenebenenprozesse
vor. Wenn ein Programmentwickler ein Anwendungsprogramm erzeugt,
das ein bestimmtes Programm als einen Aufgabenebenenprozeß aufruft,
programmiert der Programmentwickler das Anwendungsprogramm zum Aufrufen
des bestimmten Programms unter Verwendung der Schnittstelle.
-
Die
CPU kann einen Prozeß durch
ein Annehmen eines Unterbrechungssignals von einer Unterbrechungssteuereinrichtung
ausführen.
Die RTOS-Spezifikation
schreibt einen derartigen Prozeß als
einen Unterbrechungsebenenprozeß vor.
Wenn die CPU eine bestimmte Unterbrechungsanweisung ausführt, kann
die Anweisung in einer Art und Weise ähnlich dem Fall, in dem die
CPU ein Unterbrechungssignal empfängt, ausgeführt werden. In diesem Fall
kann ein Prozeß basierend
auf einer Ausführung
der bestimmten Unterbrechungsanweisung ausgeführt werden. Die RTOS-Spezifikation
schreibt auch diesen Prozeß als
den Unterbrechungsebenenprozeß vor.
-
Ob
ein auf dem RTOS ausgeführter
Prozeß der
Aufgabenebenenprozeß ist
oder nicht, kann basierend darauf festgestellt werden, wie der Prozeß ausgeführt wird.
Genauer wird festgestellt, daß ein Prozeß der Aufgabenebenenprozeß ist, wenn
der Prozeß unter
Verwendung einer Schnittstelle (auf die nachstehend als eine Aufgabenaktivierungsschnittstelle
Bezug genommen ist) zum Annehmen einer Anforderung zur Aufgabenebenenprozeßausführung ausgeführt wird.
Es wird nicht festgestellt, daß ein Prozeß der Aufgabenebenenprozeß ist, wenn
der Prozeß ausgeführt wird,
indem die Schnittstelle zum Annehmen einer Anforderung zur Aufgabenebenenprozeßausführung nicht
verwendet wird.
-
Es
wird erwogen, daß das
bekannte RTOS eine Anforderung zum Ausführen des Aufgabenebenenprozesses über die
vorstehend angeführte
Aufgabenaktivierungsschnittstelle annimmt. In diesem Fall vergleicht
die CPU dem Aufgabenebenenprozeß,
dessen Ausführungsanforderung
angenommen wird, einem derzeit ausgeführten Prozeß und einem Aufgabenebenprozeß, dessen
Ausführungsanforderung
in der Vergangenheit angenommen wurde und dessen Ausführung gegenwärtig noch
nicht abgeschlossen ist, zugewiesene Prioritäten. Die CPU führt den
Prozeß mit
der höchsten
Priorität
aus. In dieser Art und Weise vergleicht das RTOS Prioritäten und
stellt einen auszuführenden
Prozeß basierend auf
einem Vergleichsergebnis fest. Dies wird als RTOS-Aufgabenplanung
bezeichnet.
-
Wenn
der derzeit auf dem RTOS ausgeführte Prozeß endet,
führt die
CPU während
der RTOS-Aufgabenplanung das folgende aus. Die CPU vergleicht Prioritäten von Aufgabenebenenprozessen,
deren Ausführungsanforderungen
in der Vergangenheit angenommen wurden und deren Ausführung gegenwärtig noch
nicht abgeschlossen ist. Die CPU führt den Prozeß mit der
höchsten
Priorität
aus.
-
Im
allgemeinen ist der Unterbrechungsebenenprozeß derart konfiguriert, daß er mit
einer höheren
Priorität
als für
den Aufgabenebenenprozeß ausgeführt wird.
Während
der Aufgabenebenenprozeß auf
dem RTOS ausgeführt
wird, kann die CPU ein Unterbrechungssignal von der Unterbrechungssteuereinrichtung
empfangen. In einem derartigen Fall unterbricht die CPU den derzeit
ausgeführten
Aufgabenebenenprozeß und
führt den
dem empfangenen Unterbrechungssignal entsprechenden Unterbrechungsebenenprozeß aus.
-
Eine
bekannte Unterbrechungssteuereinrichtung weist die Mehrfachunterbrechungsfunktion auf.
Die Mehrfachunterbrechungsfunktion wählt aus einer Vielzahl von
zur Ausgabe angeforderten Unterbrechungssignalen und gibt das am
höchsten
priorisierte Unterbrechungssignal aus. Genauer gibt die Unterbrechungssteuereinrichtung
mit der Mehrfachunterbrechungsfunktion ein Unterbrechungssignal
zu der CPU aus. Wenn die CPU einen dem Unterbrechungssignal entsprechenden
Prozeß ausführt, kann die
CPU eine Ausgabeanforderung von einem anderen Unterbrechungssignal
empfangen. Zu dieser Zeit vergleicht die Steuereinrichtung die Priorität des zur Ausgabe
angeforderten Unterbrechungssignals mit der des vorher ausgegebenen
Unterbrechungssignals. Nur wenn die Priorität des zur Ausgabe angeforderten
Unterbrechungssignals höher
als die des vorher ausgegebenen Unterbrechungssignals ist, gibt die
Steuereinrichtung den angeforderten Unterbrechungsprozeß zu der
CPU aus.
-
Während die
CPU die vorstehend angeführte Aufgabenplanung
unter dem bekannten RTOS ausführt,
wird viel von der CPU-Verarbeitungszeit
für den Aufgabenplanungsprozeß selbst
verbraucht. Folglich beschränkt
dies die CPU-Zeit, die tatsächlich
für den Aufgabenebenenprozeß und den
Unterbrechungsebenenprozeß verfügbar ist.
-
Die
vorliegende Erfindung ist in Anbetracht des Vorstehenden ausgebildet
worden. Es ist daher ein Ziel der vorliegenden Erfindung, die Mehrfachunterbrechungsfunktion
zum Vermindern der durch eine CPU, die eine Vielzahl von Aufgaben
selektiv ausführt,
zur Aufgabenplanung verbrauchten Zeit zu verwenden.
-
Zum
Erreichen des vorstehend angeführten Ziels
veranlaßt
ein Unterbrechungsanforderungsprogramm gemäß der vorliegenden Erfindung
eine Anweisungsausführungseinheit
zum Fungieren als eine Unterbrechungsanforderungseinrichtung basierend auf
einem Empfang einer Anforderung zum Ausführen eines Aufgabenebenenprozesses.
In diesem Fall führt
die Anweisungsausführungseinheit
einen einem Unterbrechungssignal von einer Mehrfachunterbrechungseinheit
zum Bestimmen und Ausgeben eines am höchsten priorisierten Unterbrechungssignals
einer Vielzahl von zur Ausgabe angeforderten Unterbrechungssignalen
entsprechenden Prozeß aus.
Die Unterbrechungsanforderungseinrichtung fordert die Mehrfachunterbrechungseinheit
zum Ausgeben eines dem Aufgabenebenenprozeß entsprechenden Unterbrechungssignals
auf.
-
Basierend
auf einem Empfang einer Anforderung zum Ausführen eines Aufgabenebenenprozesses
führt die
Anweisungsausführungseinheit
das Unterbrechungsanforderungsprogramm aus und fordert die Mehrfachunterbrechungseinheit
zum Ausgeben eines dem Aufgabenebenenprozeß entsprechenden Unterbrechungssignals
auf. Die Mehrfachunterbrechungseinheit empfängt die Anforderungen, bestimmt
die am höchsten
priorisierte Anforderung der empfangenen Anforderungen und gibt
ein der bestimmten Anforderung entsprechendes Unterbrechungssignal
aus. Die Anweisungsausführungseinheit
führt einen
dem von der Mehrfachunterbrechungseinheit empfangenen Unterbrechungssignal entsprechenden
Prozeß aus.
Daher veranlaßt
die Anweisungsausführungseinheit
die Mehrfachunterbrechungseinheit zum Vergleichen von Prioritäten der
Aufgabenebenenprozesse. Die Verwendung der Mehrfachunterbrechungsfunktion
kann die durch die Anweisungsausführungseinheit, die über eine
Vielzahl von Aufgaben zur Ausführung
wechselt, zur Aufgabenplanung verbrauchte Zeit vermindern.
-
Die
vorstehenden und andere Ziele, Merkmale und Vorteile der vorliegenden
Erfindung werden anhand der unter Bezugnahme auf die beigefügten Zeichnungen
ausgebildeten folgenden ausführlichen Beschreibung
ersichtlicher. In den Zeichnungen zeigen:
-
1 die
Konfiguration einer Motor-ECU;
-
2 Datenstrukturen
von Speicherträgern in
einer Unterbrechungssteuereinrichtung, einer CPU, einem RAM und
einem ROM;
-
3 ein
Datenspeicherformat von nullten bis siebten Unterbrechungsregistern;
-
4 eine
Entsprechung zwischen einer Unterbrechungspriorität und einem
der Unterbrechungspriorität
zugewiesenen Programm;
-
5 ein
Zeitablaufdiagramm, das Ausführungszeitabläufe für Aufgaben
A, B und C sowie eine Unterbrechung X in der CPU zeigt;
-
6 ein
Flußdiagramm
der Aufgabe A;
-
7 ein
Flußdiagramm
der Aufgabe B;
-
8 ein
Flußdiagramm
der Aufgabe C;
-
9 ein
Flußdiagramm
der Unterbrechung X;
-
10 ein
Flußdiagramm
eines Aufgabenunterbrechungsprogramms;
-
11 ein
Flußdiagramm
eines Aufgabenaktivierungsprogramms;
-
12 ein
Flußdiagramm
eines Aufgabenbeendungsprogramms;
-
13 ein
Flußdiagramm
eines Betriebsmittelaneignungsprogramms gemäß einem zweiten Ausführungsbeispiel;
-
14 ein
Flußdiagramm
eines Betriebsmittelzugriffsfreigabeprogramms gemäß dem zweiten Ausführungsbeispiel;
-
15 ein
Flußdiagramm
eines Betriebsmittelaneignungsprogramms gemäß einem dritten Ausführungsbeispiel;
-
16 ein
Flußdiagramm
eines Betriebsmittelzugriffsfreigabeprogramms gemäß dem dritten Ausführungsbeispiel;
und
-
17 ein
Datenspeicherformat für
nullte bis siebte Unterbrechungsregister gemäß einem vierten Ausführungsbeispiel.
-
(Erstes Ausführungsbeispiel)
-
Das
folgende beschreibt ein erstes Ausführungsbeispiel der vorliegenden
Erfindung. 1 zeigt die Konfiguration einer
Motor-ECU 1 gemäß dem Ausführungsbeispiel.
Die Motor-ECU 1 steuert einen
Motor 2. Der Motor-ECU 1 wird ein Impulssignal
von einem Kurbelsensor 23 zugeführt. Dieses Signal meldet,
daß eine
Kurbel des Motors 2 einen bestimmten Kurbelwinkel erreicht
hat. Der Motor-ECU 1 werden von einem Wassertemperatursensor 31 Informationen über eine
Temperatur von Motorkühlwasser 3 zugeführt. Ferner
werden der Motor-ECU 1 von einem Drosselsensor 41 Informationen über einen
Drosselwinkel zugeführt.
Basierend auf den eingegebenen Informationen berechnet die Motor-ECU 1 einen
Zündzeitpunkt,
eine Einspritzmenge, ein Drosseleinstellungsausmaß und dergleichen
des Motors 2. Basierend auf Berechnungsergebnissen steuert
die Motor-ECU 1 eine Zündvorrichtung 21 zum
Zünden
von Kraftstoff, eine Einspritzvorrichtung 22 zum Einspritzen
von Kraftstoff und eine elektronische Drossel 4.
-
Für diese
Operationen weist die Motor-ECU 1 eine Schaltung für externe
Eingabe/Ausgabe 11 und einen Mikrocomputer 12 auf.
Der Mikrocomputer 12 weist eine Unterbrechungssteuereinrichtung 14, eine
CPU 15 als eine Anweisungsausführungseinheit sowie ein RAM 16 und
ein ROM 17 als Speicherträger auf.
-
Die
Schaltung für
externe Eingabe/Ausgabe 11 empfängt Informationen von dem Wassertemperatursensor 31 und
dem Drosselsensor 41 und gibt die empfangenen Informationen
zu der CPU 15 aus. Basierend auf einem von dem Kurbelsensor 23 empfangenen
Impulssignal fordert die Schaltung für externe Eingabe/Ausgabe 11 die
Unterbrechungssteuereinrichtung 14 zum Ausgeben eines Unterbrechungssignals
auf. Die Schaltung für
externe Eingabe/Ausgabe 11 empfängt Steuersignale von der CPU 15 und
gibt die Signale zu der Zündvorrichtung 21, der
Einspritzvorrichtung 22 und der elektronischen Drossel 4 aus.
-
Die
CPU 15 liest verschiedene in dem ROM 17 gespeicherte
Programme und führt
sie aus. Die CPU 15 empfängt Signale von dem Wassertemperatursensor 31 und
dem Drosselsensor 41. Basierend auf diesen Signalen berechnet
die CPU 15 einen Zündzeitpunkt,
eine Einspritzmenge, ein Drosseleinstellungsausmaß und dergleichen.
Während
der Berechnung liest und schreibt die CPU 15 Informationen aus
dem und in das RAM 16 wie benötigt. Alternativ liest die
CPU 15 Informationen aus dem ROM 17. Ferner empfängt die
CPU 15 ein Unterbrechungssignal von der Unterbrechungssteuereinrichtung 14 und führt basierend
auf dem empfangenen Unterbrechungssignal bestimmte Programme aus.
-
Die
CPU 15 führt
eine Vielzahl von Programmen auf einer Zeitanteilsgrundlage aus.
Das heißt, die
CPU 15 führt
jeweils nur ein Programm aus. Basierend auf vorbestimmten Programmprioritäten schaltet
die CPU 15 wie benötigt
zwischen auszuführenden
Programmen um. Ferner führt
die CPU 15 OSEK-OS als ein Echtzeitbetriebssystem aus und führt verschiedene
Programme auf dem OSEK-OS aus.
-
Genauer
schaltet die CPU 15 basierend auf Unterbrechungssignalen
von der Unterbrechungssteuereinrichtung 14 zwischen Programmen
um.
-
2 zeigt
Datenstrukturen von Speicherträgern
in einer Unterbrechungssteuereinrichtung 14, einer CPU 15,
einem RAM 16 und einem ROM 17, um Operationen
zum Umschalten zwischen Programmen für die CPU 15 zu erläutern.
-
Die
CPU 15 weist eine Vielzahl von Registern wie beispielsweise
Berechnungsergebnisregister 151, 152 und dergleichen
zum Speichern von Berechnungsergebnissen auf.
-
Das
RAM 16 weist Speicherbereiche wie beispielsweise einen
Stapel 161, eine Bereit-Warteschlange 162 und
einen Steuervariablenbereich 163 zum Steuern des Motors 2 auf.
Die Bereit-Warteschlange 162 weist fünf FIFO-Zwischenspeicher (Zuerst-Hinein-Zuerst-Hinaus-Zwischenspeicher)
auf, das heißt
dritte bis siebte Unterbrechungsregister 143 bis 147 für die nachstehend
zu beschreibende Unterbrechungssteuereinrichtung 14.
-
Das
ROM 17 enthält
einen Unterbrechungsvektor 171, eine Vielzahl von Programmen 172 zur Ausführung in
der CPU 15 und eine Steuerkonstante 173 zum Steuern
des Motors 2. Der Unterbrechungsvektor 171 stellt
Entsprechungsinformationen zwischen einem Unterbrechungssignal von
der Unterbrechungssteuereinrichtung 14 und einem Programm,
dessen Ausführung
die CPU 15 basierend auf dem Unterbrechungssignal beginnt,
bereit.
-
Die
Unterbrechungssteuereinrichtung 14 enthält acht Unterbrechungsregister 140 bis 147 (nulltes
bis siebtes), ein Sperrflagregister bzw. Sperrzustandsmerkerregister 148,
ein IntLvl-Register 149 und ein Vorheriges-IntLvl-Register 150.
-
Die
nullten bis siebten Unterbrechungsregister 140 bis 147 verwenden
das gleiche Datenspeicherformat. 3 zeigt
ein Datenspeicherformat der nullten bis siebten Unterbrechungsregister 140 bis 147.
Jedes der nullten bis siebten Unterbrechungsregister 140 bis 147 speichert
Daten von dem Anfang des Datenspeicherbereichs aus in der Reihenfolge eines
Unterbrechungszustandsmerkers 51, eines Unterbrechungsmaskenzustandsmerkers 52 und
einer Unterbrechungspriorität 53.
-
Das
folgende beschreibt Operationen der Unterbrechungssteuereinrichtung 14.
Die Unterbrechungssteuereinrichtung 14 gemäß dem Ausführungsbeispiel
ist eine bekannte Mehrfachunterbrechungssteuereinrichtung oder -einheit.
-
Die
Unterbrechungssteuereinrichtung 14 empfängt eine Anforderung zum Ausgeben
eines mit einem der nullten bis siebten Unterbrechungsregister 140 bis 147 bestimmten
Unterbrechungssignals. Die Unterbrechungssteuereinrichtung 14 stellt
einen Wert des Unterbrechungszustandsmerkers 51 des bestimmten
Unterbrechungsregisters auf 1 (ein) ein. Die Unterbrechungssteuereinrichtung 14 stellt
einen Wert des Unterbrechungsmaskenzustandsmerkers 52 des
bestimmten Unterbrechungsregisters auf 0 (aus) ein. Gemäß dem Ausführungsbeispiel
wird ein Unterbrechungssignal von der CPU 15 für einen nachstehend
zu beschreibenden Aufgabenebenenprozeß verwendet.
-
Darüber hinaus
empfängt
die Unterbrechungssteuereinrichtung 14 eine Anforderung
zum Ausgeben eines mit einem der nullten bis siebten Unterbrechungsregister 140 bis 147 bestimmten
Unterbrechungssignals von der Schaltung für externe Eingabe/Ausgabe 11.
In diesem Fall stellt die Unterbrechungssteuereinrichtung 14 einen
Wert des Unterbrechungszustandsmerkers 51 des bestimmten
Unterbrechungsregisters auf 1 (ein) ein.
-
In
dieser Art und Weise verwendet die Unterbrechungssteuereinrichtung 14 den
Speicherträger zum
Speichern, daß die
CPU 15 oder die Schaltung für externe Eingabe/Ausgabe 11 ein
Ausgeben von bestimmten Unterbrechungssignalen anfordert.
-
Wenn
sie die Anforderung zum Ausgeben eines Unterbrechungssignals empfängt, dann
bestimmt die Unterbrechungssteuereinrichtung 14 ein dem
derzeit angeforderten Unterbrechungssignal entsprechendes Unterbrechungsregister
aus den nullten bis siebten Unterbrechungsregistern 140 bis 147.
Das heißt,
ein derartiges Unterbrechungsregister enthält den auf 1 eingestellten
Unterbrechungszustandsmerker 51 und den auf 0 eingestellten
Unterbrechungsmaskenzustandsmerker 52. Das dem derzeit
angeforderten Unterbrechungssignal entsprechende Unterbrechungsregister
kann ein Unterbrechungsregister mit freigegebener Unterbrechung sein.
Die Unterbrechungssteuereinrichtung 14 bestimmt daraufhin
ein Unterbrechungsregister mit der höchsten Unterbrechungspriorität aus den
bestimmten Unterbrechungsregistern.
-
Die
Priorität
des Unterbrechungsregisters wird durch einen Wert der Unterbrechungspriorität 53 festgesetzt.
Der Unterbrechungsprioritätswert
wird auf eine von ganzen Zahlen 0 bis 7 eingestellt. Je kleiner
der Wert, desto höher
die Priorität.
Gemäß dem Ausführungsbeispiel
werden die folgenden Werte im voraus gespeichert. Der Wert 0 wird
in der Unterbrechungspriorität 53 des
nullten Unterbrechungsregisters 140 gespeichert. Der Wert
1 wird in der Unterbrechungspriorität 53 des ersten Unterbrechungsregisters 141 gespeichert.
Der Wert 2 wird in der Unterbrechungspriorität 53 des zweiten Unterbrechungsregisters 142 gespeichert.
Der Wert 3 wird in der Unterbrechungspriorität 53 des dritten Unterbrechungsregisters 143 gespeichert.
Der Wert 4 wird in der Unterbrechungspriorität 53 des vierten Unterbrechungsregisters 144 gespeichert.
Der Wert 5 wird in der Unterbrechungspriorität 53 des fünften Unterbrechungsregisters 145 gespeichert.
Der Wert 6 wird in der Unterbrechungspriorität 53 des sechsten
Unterbrechungsregisters 146 gespeichert. Der Wert 7 wird in
der Unterbrechungspriorität 53 des
siebten Unterbrechungsregisters 147 gespeichert.
-
Wie
vorstehend angeführt
wird das Unterbrechungsregister mit der höchsten Unterbrechungspriorität aus den
dem derzeit angeforderten Unterbrechungssignal entsprechenden Unterbrechungsregistern
bestimmt. Die Unterbrechungssteuereinrichtung 14 vergleicht
den Wert der Unterbrechungspriorität 53 des Unterbrechungsregisters
mit einem Wert des IntLvl-Registers 149. Der Wert der Unterbrechungspriorität 53 kann
kleiner als der Wert des IntLvl-Registers 149 sein. Das
heißt,
die Priorität
der Unterbrechungspriorität 53 kann
höher als
die Priorität
des IntLvl-Registers 149 sein. In diesem Fall gibt die
Unterbrechungssteuereinrichtung 14 ein dem bestimmten Unterbrechungsregister
vorzugewiesenes Unterbrechungssignal zu der CPU 15 aus.
-
In
einem Fall kann kein zum Ausgeben eines Unterbrechungssignals aufgefordertes
Unterbrechungsregister vorhanden sein. In einem anderen Fall kann
ein Wert größer als
oder gleich dem Wert des IntLvl-Registers 149 bei allen
Unterbrechungsprioritäten 53 für die zum
Ausgeben eines Unterbrechungssignals aufgeforderten Unterbrechungsregister
eingestellt sein. In diesen Fällen
gibt die Unterbrechungssteuereinrichtung 14 kein Unterbrechungssignal
aus.
-
Den
nullten bis siebten Unterbrechungsregistern 140 bis 147 werden
vorher verschiedene Unterbrechungssignale zugewiesen.
-
Nach
dem Ausgeben des Unterbrechungssignals ändert die Unterbrechungssteuereinrichtung 14 den
Wert des Vorheriges-IntLvl-Registers 150 zu einem
derzeit in dem IntLvl-Register 149 gespeicherten
Wert. Danach gibt die Unterbrechungssteuereinrichtung 14 einen
dem zuletzt ausgegebenen Unterbrechungssignal entsprechenden Prioritätswert zu dem
Vorheriges-IntLvl-Register 150 aus. Das heißt, der
Prioritätswert
ist äquivalent
zu einem Wert der dem Unterbrechungssignal zugewiesenen Unterbrechungspriorität 53 des
Unterbrechungsregisters.
-
In
dieser Art und Weise bestimmt die Unterbrechungssteuereinrichtung 14 dann,
wenn sie eine Anforderung zum Ausgeben eines Unterbrechungssignals
empfängt,
ein Unterbrechungssignal mit der höchsten Priorität aus zur
Ausgabe angeforderten Unterbrechungssignalen. Wenn die Priorität des bestimmten
Unterbrechungssignals höher
ist als die in dem IntLvl-Register 149,
das die Priorität
des zuletzt ausgegebenen Unterbrechungssignals speichert, gespeicherte
Priorität, gibt
die Unterbrechungssteuereinrichtung 14 das Unterbrechungssignal
aus.
-
Jedes
Unterbrechungsregister mit der Unterbrechungspriorität 53 fungiert
als ein Unterbrechungsprioritätsspeicherträger zum
Speichern von Informationen über
die Entsprechung zwischen einem Unterbrechungssignal und seiner
Priorität.
Das IntLvl-Register 149 fungiert
als ein Speicherträger
für die
derzeitige Priorität,
der die Priorität
des zuletzt ausgegebenen Unterbrechungssignals speichert.
-
Die
Unterbrechungssteuereinrichtung 14 kann ein Unterbrechungsanforderungslöschungssignal
von der CPU 15 oder der Schaltung für externe Eingabe/Ausgabe 11 zum
Bestimmen eines der nullten bis siebten Unterbrechungsregister 140 bis 147 empfangen.
In diesem Fall stellt die Unterbrechungssteuereinrichtung 14 einen
Wert des Unterbrechungsmaskenzustandsmerkers 52 für das bestimmte
Unterbrechungsregister auf 1 (ein) ein. Die Unterbrechungssteuereinrichtung 14 wird
derart konditioniert, daß sie
eine Anforderung für
das dem Unterbrechungsregister entsprechende Unterbrechungssignal
nicht annimmt.
-
Das
IntLvl-Register 149 der Unterbrechungssteuereinrichtung 14 ist
zum Neuschreiben seines Werts unter einer Neuschreibsteuerung der
CPU 15 konfiguriert. Wenn die Unterbrechungssteuereinrichtung 14 erfaßt, daß der Wert
des IntLvl-Registers 149 unter der Steuerung der CPU 15 neu
geschrieben wird, führt
die Unterbrechungssteuereinrichtung 14 eine zu der Operation
nach dem Neuschreiben des Unterbrechungszustandsmerkers 51 und
dergleichen wie vorstehend angeführt äquivalente
Operation aus. Diese Neuschreiboperation tritt infolge des Empfangens
eines eine Anforderung zum Ausgeben eines Unterbrechungssignals
darstellenden Signals von der CPU 15 oder der Schaltung
für externe
Eingabe/Ausgabe 11 auf.
-
Das
Sperrzustandsmerkerregister 148 ist zum Neuschreiben seines
Werts unter einer Neuschreibsteuerung der CPU 15 konfiguriert.
Wenn das Sperrzustandsmerkerregister 148 einen auf 1 (ein) eingestellten
Wert enthält,
gibt die Unterbrechungssteuereinrichtung 14 ungeachtet
der Beschreibung der vorstehend angeführten Operationen keines von den
nullten bis siebten Unterbrechungsregistern 140 bis 147 entsprechenden
Unterbrechungssignalen zu der CPU 15 aus. Wenn das Sperrzustandsmerkerregister 148 einen
auf 0 (aus) eingestellten Wert enthält, gibt die Unterbrechungssteuereinrichtung 14 den
nullten bis siebten Unterbrechungsregistern 140 bis 147 entsprechende
Unterbrechungssignale gemäß der Beschreibung
der vorstehend angeführten Operationen
aus.
-
Das
Betriebssystem gemäß dem Ausführungsbeispiel
weist jedem der Unterbrechungssignale, das heißt jeder der Unterbrechungsprioritäten, ein Programm
zu, das die CPU 15 ausführt. 4 zeigt die
Entsprechung zwischen einer Unterbrechungspriorität und einem
der Unterbrechungspriorität
zugewiesenen Programm.
-
In 4 entspricht
jedes von Rechtecken 70 bis 77 einer Unterbrechungspriorität. Einem
in 4 zu dem oberen Ende hin plazierten Rechteck ist
ein kleinerer Unterbrechungsprioritätswert, das heißt eine
höhere
Unterbrechungspriorität,
zugewiesen.
-
Jeder
der Unterbrechungsprioritäten,
deren Wert 3 oder größer ist,
ist ein Aufgabenebenenprozeßprogramm
zugewiesen. Das OSEK-OS schreibt einen Systemaufruf vor, der zum
Aufrufen eines Programms von einem anderen Programm aus verwendet
werden kann. Dieser Systemaufruf ist eine Schnittstelle zum Annehmen
einer Anforderung zum Ausführen
des Aufgabenebenenprozesses. Wie nachstehend beschrieben wird, wird
diese Schnittstelle bei dem Ausführungsbeispiel
als eine Aktivierungsaufgabe bezeichnet. Das Aufgabenebenenprozeßprogramm
ist zum Beginnen der Ausführung
unter Verwendung der Aktivierungsaufgabe konfiguriert.
-
Es
sind fünf
Unterbrechungsprioritäten
vorhanden, denen Aufgabenebenenprozeßprogramme zugewiesen sind:
eine Aufgabe mit höchster
Priorität (Unterbrechungspriorität = 3),
eine Aufgabe mit hoher Priorität
(Unterbrechungspriorität
= 4), eine Aufgabe mit mittlerer Priorität (Unterbrechungspriorität = 5),
eine Aufgabe mit niedriger Priorität (Unterbrechungspriorität = 6) und
eine Leerlaufaufgabe (Unterbrechungspriorität = 7). Jeder Unterbrechungspriorität ist eine
Vielzahl von Aufgabenebenenprozeßprogrammen zugewiesen.
-
Einem
Aufgabenebenenprozeßprogramm sind
Informationen beigefügt,
die angeben, welcher Unterbrechungspriorität das Aufgabenebenenprozeßprogramm
zugewiesen ist. Die Informationen sind in dem ROM 17 gespeichert.
Diese Informationen können
zum Bestimmen der Priorität
des Aufgabenebenenprozeßprogramms
verwendet werden.
-
Unterbrechungsprioritäten, deren
Wert 2 oder kleiner ist, sind Unterbrechungsebenenprozeßprogramme
zugewiesen. Ein Unterbrechungsebenenprozeßprogramm beginnt die Ausführung ohne Vermittlung
der vorstehend angeführten
Aktivierungsaufgabe und basierend auf einem Unterbrechungssignal
von der Unterbrechungssteuereinrichtung 14. Wenn zum Beispiel
die Unterbrechungssteuereinrichtung 14 ein Signal von einer
externen Vorrichtung wie beispielsweise dem Kurbelsensor 23 über die
Schaltung für
externe Eingabe/Ausgabe 11 empfängt, gibt die Unterbrechungssteuereinrichtung 14 ein
Unterbrechungssignal zu der CPU 15 aus, die dann die Ausführung eines
Programms beginnt. Dieses Programm ist äquivalent zu dem Unterbrechungsebenenprozeßprogramm.
Wenn ein Ausführen
einer bestimmten Unterbrechungsanweisung in der CPU es der CPU ermöglicht,
eine der Operation, die bei einem Empfangen eines Unterbrechungssignals
ausgeführt
wird, ähnelnde
Operation auszuführen,
wird ferner ein Programm basierend auf einer Ausführung der
bestimmten Unterbrechungsanweisung ausgeführt. Dieses Programm ist ebenfalls äquivalent
zu dem Unterbrechungsebenenprozeßprogramm.
-
Es
sind drei Unterbrechungsprioritäten
vorhanden, denen Unterbrechungsebenenprozeßprogramme zugewiesen sind:
eine Unterbrechung mit hoher Priorität (Unterbrechungspriorität = 0),
eine Unterbrechung mit mittlerer Priorität (Unterbrechungspriorität = 1) und
eine Unterbrechung mit niedriger Priorität (Unterbrechungspriorität = 2).
-
Das
folgende beschreibt den Übergang
zwischen Ausführungsprogrammen
für die
CPU 15 unter Verwendung der Unterbrechungssteuereinrichtung 14,
die die vorstehend angeführten
Operationen ausführt.
-
5 zeigt
Ausführungszeitabläufe für Aufgaben
A, B und C sowie eine Unterbrechung X in der CPU 15, die
nachstehend zu beschreiben sind. Die Aufgabe A ist ein der Aufgabe
mit hoher Priorität
(Unterbrechungspriorität
4) zugewiesenes Aufgabenebenenprozeßprogramm. Die Aufgabe B ist
ein der Aufgabe mit mittlerer Priorität (Unterbrechungspriorität 5) zugewiesenes
Aufgabenebenenprozeßprogramm.
Die Aufgabe C ist ein der Aufgabe mit niedriger Priorität (Unterbrechungspriorität 6) zugewiesenes
Aufgabenebenenprozeßprogramm.
Die Unterbrechung X ist ein der Unterbrechung mit mittlerer Priorität zugewiesenes
Unterbrechungsebenenprozeßprogramm.
-
5 nimmt
an, daß die
Zeit von der linken Seite zu der rechten Seite abläuft. Ein
Rechteck stellt eine zu jeder Zeit ausgeführte Aufgabe dar.
-
Wie
nachstehend beschrieben wird, ruft die Aufgabe C während der
Ausführung
der Aufgabe C die Aufgabe A auf (zu dem einem Pfeil 61 entsprechenden
Zeitpunkt). Folglich wird die Aufgabe C unterbrochen, um die Ausführung der
Aufgabe A zu beginnen (zu dem einem Pfeil 62 entsprechenden
Zeitpunkt). Wenn die Aufgabe A die Ausführung beendet, beginnt die
Aufgabe C wieder die Ausführung
(zu dem einem Pfeil 63 entsprechenden Zeitpunkt). Danach
wird die Ausführung
der Aufgabe C wieder unterbrochen, um die Ausführung der Unterbrechung X zu
beginnen (zu dem einem Pfeil 64 entsprechenden Zeitpunkt).
-
Danach
ruft die Unterbrechung X die Aufgabe B auf (zu dem einem Pfeil 65 entsprechenden Zeitpunkt).
Nach der Ausführung
der Unterbrechung X beginnt die Aufgabe B die Ausführung (zu
dem einem Pfeil 66 entsprechenden Zeitpunkt). Wenn die Aufgabe
B die Ausführung
beendet, beginnt die Aufgabe C wieder die Ausführung (zu dem einem Pfeil 67 entsprechenden
Zeitpunkt).
-
6 bis 9 zeigen
Flußdiagramme
der Aufgaben A bis C und der Unterbrechung X, die die vorstehend
erwähnten
Operationen ausführen. 6 zeigt
ein Flußdiagramm
der Aufgabe A. In einem Schritt S110 führt die Aufgabe A einen Aufgabe-A-Prozeß aus. Der
Aufgabe-A-Prozeß ist
einer von Prozessen zum Steuern des Motors 2 wie beispielsweise
ein Prozeß zum
Speichern von von dem Drosselsensor 41 empfangenen Informationen
in einem bestimmten Bereich des RAM 16. In einem Schritt
S120 ruft die Aufgabe A eine Beendungsaufgabe auf, um den Prozeß zu beenden.
Die Beendungsaufgabe ist eine durch das OSEK-OS bereitgestellte
Schnittstelle und wird zum Beenden der Programmausführung und
zum Beginnen der Ausführung
des nächsten
Programms verwendet. Die Beendungsaufgabe wird im einzelnen beschrieben.
-
7 zeigt
ein Flußdiagramm
der Aufgabe B. In einem Schritt S130 führt die Aufgabe B einen Aufgabe-B-Prozeß aus. Der
Aufgabe-B-Prozeß ist
einer von Prozessen zum Steuern des Motors 2 wie beispielsweise
ein Prozeß zum
Ausgeben von Steuersignalen zur Zündsteuerung, Kraftstoffeinspritzsteuerung
und Drosselwinkeleinstellung zu der Zündvorrichtung 21,
der Einspritzvorrichtung 22 bzw. der elektronischen Drossel 4.
In einem Schritt S140 ruft die Aufgabe B die Beendungsaufgabe auf,
um den Prozeß zu
beenden.
-
8 zeigt
ein Flußdiagramm
der Aufgabe C. In einem Schritt S150 führt die Aufgabe C einen ersten
Aufgabe-C-Prozeß aus. Der
erste Aufgabe-C-Prozeß ist
einer von Prozessen zum Steuern des Motors 2 wie beispielsweise
ein Teil eines Prozesses zum Berechnen der Einspritzmenge, des Kraftstoffzündzeitpunkts,
des Drosseleinstellungsausmaßes
und dergleichen. Eine derartige Berechnung wird basierend auf Informationen,
die von dem Kurbelsensor 23, dem Wassertemperatursensor 31 und
dem Drosselsensor 41 zugeführt werden und in dem RAM 16 gespeichert
sind, ausgeführt.
-
In
einem Schritt S160 ruft die Aufgabe C die vorstehend erwähnte Aktivierungsaufgabe
auf. Während
des Aufrufs übergibt
die Aufgabe C Informationen zum Bestimmen der Aufgabe A als ein
Argument an die Aktivierungsaufgabe. Der Aktivierungsaufgabenprozeß wird im
einzelnen beschrieben.
-
In
einem Schritt S170 führt
die Aufgabe C einen zweiten Aufgabe-C-Prozeß aus. Wie der erste Aufgabe-C-Prozeß ist der
zweite Aufgabe-C-Prozeß einer
von Prozessen zum Steuern des Motors 2 wie beispielsweise
ein Teil eines Prozesses zum Berechnen der Einspritzmenge, des Kraftstoffzündzeitpunkts,
des Drosseleinstellungsausmaßes
und dergleichen.
-
In
einem Schritt S180 ruft die Aufgabe C die Beendungsaufgabe auf,
um den Prozeß zu
beenden.
-
9 zeigt
ein Flußdiagramm
der Unterbrechung X. Die Unterbrechung X ist ein Programm in dem
Unterbrechungsvektor 171, das dem dem zweiten Unterbrechungsregister 142 zugewiesenen
Unterbrechungssignal entspricht. Wenn sie ein Unterbrechungssignal
von der Unterbrechungssteuereinrichtung 14 empfängt, bestimmt
die CPU 15 ein dem empfangenen Unterbrechungssignal entsprechendes
Programm aus dem Unterbrechungsvektor 171. Die CPU 15 beginnt
die Ausführung
des bestimmten Programms. Entsprechend empfängt die CPU 15 das dem
ersten Unterbrechungsregister 141 zugewiesene Unterbrechungssignal,
um die Ausführung
der Unterbrechung X zu beginnen.
-
Die
CPU 15 sichert einen Kontext unmittelbar vor dem Beginnen
der Ausführung
von Unterbrechungsebenenprozeßprogrammen
wie beispielsweise der Unterbrechung X. Genauer schreibt die CPU 15 temporäre Daten
in ihrem Berechnungsergebnisregister und in dem RAM 16 in
einen Teil des Stapels 161. Die temporären Daten bezeichnen Arbeitsdaten wie
beispielsweise eine durch das zuletzt ausgeführte Programm verwendete temporäre Variable.
-
Die
CPU 15 stellt den Kontext wieder her, wenn das Unterbrechungsebenenprozeßprogramm die
Ausführung
beendet. Genauer schreibt die CPU 15 die in dem Stapel 161 gespeicherten
Daten in die ursprünglichen
Bereiche in dem Berechnungsergebnisregister und dem RAM 16 zurück. Die
Daten in dem Stapel 161 werden durch die unmittelbar vor dem
Beginnen der Ausführung
des Unterbrechungsebenenprozeßprogramms
ausgeführte
Kontextsicherung geschrieben.
-
Wenn
das Unterbrechungsebenenprozeßprogramm
die Ausführung
beendet, schreibt die CPU 15 einen Wert des Unterbrechungszustandsmerkers 51 für das entsprechende
Unterbrechungsregister in der Unterbrechungssteuereinrichtung 14 neu,
um den Wert zu 0 zu ändern.
-
Während der
Ausführung
der Unterbrechung X wird in einem Schritt S210 ein erster Unterbrechung-X-Prozeß ausgeführt. Der
erste Unterbrechung-X-Prozeß ist
einer von Prozessen zum Steuern des Motors 2 wie beispielsweise
ein Teil eines Prozesses zum Speichern der derzeitigen Zeit in dem RAM 16 als
die Zeit zum Empfangen eines Signals von dem Kurbelsensor 23.
-
In
einem Schritt S220 ruft die Unterbrechung X die Aktivierungsaufgabe
auf. Während
des Aufrufs übergibt
die Unterbrechung X Informationen zum Bestimmen der Aufgabe B als
ein Argument an die Aktivierungsaufgabe.
-
In
einem Schritt S230 führt
die Unterbrechung X einen zweiten Unterbrechung-X-Prozeß aus. Wie
der erste Unterbrechung-X-Prozeß ist
der zweite Unterbrechung-X-Prozeß einer
von Prozessen zum Steuern des Motors 2 wie beispielsweise
ein Teil eines Prozesses zum Speichern der derzeitigen Zeit in dem
RAM 16 als die Zeit zum Empfangen eines Signals von dem
Kurbelsensor 23.
-
In
einem Schritt S240 endet die Unterbrechung X. Genauer führt die
Unterbrechung X eine RTI-Anweisung (Rücksprungunterbrechungsanweisung)
aus, um den Wert des IntLvl-Registers 149 in der Unterbrechungssteuereinrichtung 14 zu
dem in dem Vorheriges-IntLvl-Register 150 gespeicherten Wert
neu zu schreiben. Darüber
hinaus schreibt die Unterbrechung X Werte eines Programmzählerzwischenspeichers
und eines Statusregisterzwischenspeichers in dem RAM 16 in
einen Programmzähler bzw.
ein Statusregister in der CPU 15.
-
Es
ist eine Steuerung zum Neuschreiben des Werts des IntLvl-Registers 149 der
Unterbrechungssteuereinrichtung 14 zu dem in dem Vorheriges-IntLvl-Register 150 gespeicherten
Wert bereitgestellt. Diese Steuerung ist äquivalent zum Ausgeben einer Prozeßabschlußmeldung
zu der Unterbrechungssteuereinrichtung 14.
-
Der
Programmzähler
stellt einen Speicherbereich zum Speichern von die Adresse einer
derzeit durch die CPU 15 ausgeführten Anweisung angebenden
Daten bereit. Das Statusregister stellt einen Speicherbereich zum
Speichern von Informationen über
Ausführungszustände (Fehler,
Unterbrechung, normaler Betrieb und dergleichen) eines auf der CPU laufenden
Programms bereit.
-
10 zeigt
ein Flußdiagramm
eines Aufgabenunterbrechungsprogramms. Die CPU 15 führt dieses
Programm über
den Unterbrechungsvektor 171 aus, wenn sie ein dem Aufgabenebenenprozeßprogramm
entsprechendes Unterbrechungssignal empfängt.
-
In
einem Schritt S310 sperrt das Aufgabenunterbrechungsprogramm Unterbrechungen.
Genauer gibt das Aufgabenunterbrechungsprogramm eine Anweisung zu
der Unterbrechungssteuereinrichtung 14 aus, um das Sperrzustandsmerkerregister 148 zu
1 neu zu schreiben. Die Unterbrechungssteuereinrichtung 14 gibt
anschließend
keine den nullten bis siebten Unterbrechungsregistern 140 bis 147 entsprechenden
Unterbrechungssignale aus, bis der Wert des Sperrzustandsmerkerregisters 148 wieder
zu 0 neu geschrieben wird.
-
In
einem Schritt S320 sichert das Aufgabenunterbrechungsprogramm den
Kontext. Genauer schreibt das Aufgabenunterbrechungsprogramm den derzeitigen
Inhalt des Berechnungsergebnisregisters und temporäre Daten
in dem RAM 16 in einen Teil des Stapels 161. Die
temporären
Daten bezeichnen Arbeitsdaten wie beispielsweise eine durch das
zuletzt ausgeführte
Programm verwendete temporäre Variable.
Dieser Sicherungsprozeß schreibt
den Stapelzeigerwert zu einer Adresse an dem Ende, an dem Daten
des Stapels 161 geschrieben werden, neu.
-
In
einem Schritt S330 speichert das Aufgabenunterbrechungsprogramm
insbesondere den derzeitigen Stapelzeigerwert in einem Stapelzeigerzwischenspeicher
des RAM 16.
-
In
einem Schritt S340 erhält
das Aufgabenunterbrechungsprogramm die älteste Aufgaben-ID aus der
Bereit-Warteschlange 162.
-
Wie
vorstehend angeführt
weist die Bereit-Warteschlange 162 so viele FIFO-Zwischenspeicher
auf wie die dritten bis siebten Unterbrechungsregister 143 bis 147,
denen Aufgabenebenenprozeßprogramme
zugewiesen sind. Die FIFO-Zwischenspeicher
entsprechen Unterbrechungssignalen für die dritten bis siebten Unterbrechungsregister 143 bis 147.
Daher weist die Bereit-Warteschlange 162 Ausführungswarteaufgabeninformationen
auf, die eine Entsprechung zwischen einem Aufgabenebenenprozeß und seiner
Priorität
bewahren.
-
Wie
nachstehend beschrieben wird speichert jeder FIFO-Zwischenspeicher
eine Aufgaben-ID auf einer Zuerst-Hinein-Zuerst-Hinaus-Grundlage. Bei der Aufgaben-ID
handelt es sich um Informationen zum Identifizieren eines dem entsprechenden
Unterbrechungsregister zugewiesenen Aufgabenebenenprozeßprogramms.
-
Genauer
liest in einem Schritt S340 das Aufgabenunterbrechungsprogramm Informationen über die
früheste
gespeicherte Aufgaben-ID aus dem einem Unterbrechungssignal, das
die Ausführung
dieser Aufgabenunterbrechung veranlaßt hat, entsprechenden FIFO-Zwischenspeicher.
Das Aufgabenunterbrechungsprogramm löscht die Informationen aus dem
FIFO-Zwischenspeicher.
-
In
einem Schritt S350 gibt das Aufgabenunterbrechungsprogramm eine
Unterbrechung frei. Genauer gibt das Aufgabenunterbrechungsprogramm eine
Anweisung zum Neuschreiben des Sperrzustandsmerkerregisters 148 zu
0 zu der Unterbrechungssteuereinrichtung 14 aus. Der Unterbrechungssteuereinrichtung 14 wird
es anschließend
ermöglicht,
den nullten bis siebten Unterbrechungsregistern 140 bis 147 entsprechende
Unterbrechungssignale auszugeben.
-
In
einem Schritt S360 springt das Aufgabenunterbrechungsprogramm zu
der Aufgabe, um die Ausführung
der Aufgabenunterbrechung zu beenden. Genauer führt das Aufgabenunterbrechungsprogramm
ein der in dem Schritt S340 gelesenen Aufgaben-ID entsprechendes
Aufgabenebenenprozeßprogramm
aus, um die Ausführung
der Aufgabenunterbrechung zu beenden.
-
Die
CPU 15 führt
eine derartige Aufgabenunterbrechung aus, um das zu der in dem FIFO-Zwischenspeicher
in der Bereit-Warteschlange 162 gespeicherten ältesten
Aufgaben-ID äquivalente
Aufgabenebenenprozeßprogramm
entsprechend dem zuletzt empfangenen Unterbrechungssignal auszuführen.
-
Die
Unterbrechung wird in dem Schritt S310 gesperrt und wird in dem
Schritt S350 freigegeben. Folglich wird die Programmausführung zwischen
den Schritten 310 und 360 nicht wegen eines Unterbrechungssignals
von den nullten bis siebten Unterbrechungsregistern 140 bis 147 geändert.
-
Wenn
sie ein Unterbrechungssignal von der Unterbrechungssteuereinrichtung 14 empfängt, führt die
CPU 15 nicht nur das Aufgabenunterbrechungsprogramm aus,
sondern stellt auch einen Hardwareprozeß bereit. Das heißt, die
CPU 15 schreibt den Programmzählerwert in den vorstehend
angeführten Programmzählerzwischenspeicher.
Ferner schreibt die CPU 15 den Statusregisterwert in den
vorstehend angeführten
Statusregisterzwischenspeicher.
-
11 zeigt
ein Flußdiagramm
eines Aufgabenaktivierungsprogramms, einer durch das OSEK-OS bereitgestellten
Schnittstelle zum Annehmen von Anforderungen zur Ausführung von
Aufgabenebenenprozeßprogrammen.
-
In
einem Schritt S410 sperrt das Aufgabenaktivierungsprogramm eine
Unterbrechung. Dieser Prozeß ist äquivalent
zu dem Schritt S310 in 10.
-
In
einem Schritt S420 trägt
das Aufgabenaktivierungsprogramm eine relevante Aufgaben-ID in die
Bereit-Warteschlange 162 ein. Die relevante Aufgaben-ID
entspricht einer in dem von dem Programm, das die Aktivierungsaufgabe
aufgerufen hat, übergebenen
Argument enthaltenen Aufgabenspezifikation. Wenn die Aktivierungsaufgabe
in dem vorstehend angeführten
Schritt S160 der Aufgabe C aufgerufen wird, wird zum Beispiel angenommen,
daß die
Aufgaben-ID der Aufgabe A die relevante Aufgaben-ID ist. Die Eintragung
in der Bereit-Warteschlange 162 wird insbesondere durch
ein Speichern der relevanten Aufgaben-ID in einem der FIFO-Zwischenspeicher
in der Bereit-Warteschlange 162 realisiert. Das folgende
beschreibt, wie festzustellen ist, welcher FIFO-Zwischenspeicher zum Speichern der relevanten
Aufgaben-ID verwendet werden soll. Das ROM 17 speichert
Informationen über
die dem der relevanten Aufgaben-ID entsprechenden Aufgabenprogramm
beigefügte
Unterbrechungspriorität.
Diese Informationen werden aus dem ROM 17 gelesen, um den
FIFO-Zwischenspeicher
basierend darauf, welchem Unterbrechungssignal die Unterbrechungspriorität entspricht,
zu bestimmen.
-
In
einem Schritt S430 fordert das Aufgabenaktivierungsprogramm die
entsprechende Aufgabenunterbrechung an. Genauer gibt das Aufgabenaktivierungsprogramm
ein Steuersignal zu einem der Aufgabe entsprechenden Unterbrechungsregister aus,
so daß der
Wert des Unterbrechungszustandsmerkers 51 auf 1 (ein) eingestellt
wird und der Wert des Unterbrechungsmaskenzustandsmerkers 52 auf 0
(aus) eingestellt wird. Diese Operation ist äquivalent zur Ausgabe einer
Anforderung zum Ausgeben eines Unterbrechungssignals mit den Informationen zum
Bestimmen des Unterbrechungsregisters zu der Unterbrechungssteuereinrichtung 14.
-
In
einem Schritt S440 gibt das Aufgabenaktivierungsprogramm eine Unterbrechung
frei. Dieser Prozeß ist äquivalent
zu dem Schritt S350 in 10. Nach dem Schritt S440 endet
der Aktivierungsaufgabenprozeß.
Die CPU 15 fährt
mit der Ausführung
des Programms, das die Aktivierungsaufgabe aufgerufen hat, fort.
-
Die
CPU 15 führt
das vorstehend angeführte Aufgabenaktivierungsprogramm
aus, um eine Anforderung zum Ausführen des Aufgabenebenenprozeßprogramms
von dem Aufruferprogramm bzw. Aufrufprogramm zu empfangen. Basierend
auf dieser Anforderung speichert die CPU 15 die Aufgaben-ID des
Aufgabenebenenprozesses in dem der Unterbrechungspriorität des Aufgabenebenenprozesses
entsprechenden FIFO-Zwischenspeicher (siehe Schritt S420). In dieser
Art und Weise speichert die Bereit-Warteschlange 162 den
Aufgabenebenenprozeß und
seine Unterbrechungspriorität
einander zugeordnet.
-
Ferner
fordert die CPU 15 die Unterbrechungssteuereinrichtung 14 zum
Ausgeben eines dem Aufgabenebenenprozeß entsprechenden Unterbrechungssignals
auf (siehe Schritt S430).
-
12 zeigt
ein Flußdiagramm
des zum Beenden der Ausführung
des Aufgabenebenenprozeßprogramms
und Beginnen der Ausführung
des nächsten
Programms verwendeten Aufgabenbeendungsprogramms.
-
In
einem Schritt S510 sperrt das Aufgabenbeendungsprogramm eine Unterbrechung.
Dieser Prozeß ist äquivalent
zu dem Schritt S310 in 10.
-
In 520 schreibt
das Aufgabenbeendungsprogramm einen Stapelzeigerzwischenspeicherwert
in den Stapelzeiger. Dies führt
den Stapelzeigerwert zu dem Wert vor dem Beginnen der Ausführung des Programms,
das die Beendungsaufgabe aufgerufen hat, zurück. Genauer kehrt der Stapelzeigerwert
zu dem Wert unmittelbar nach dem Schritt S320 in dem Aufgabenunterbrechungsprogramm
zurück.
-
In
einem Schritt S530 stellt das Aufgabenbeendungsprogramm fest, ob
die Bereit-Warteschlange 162 Aufgaben-IDs mit der gleichen
Unterbrechungspriorität
enthält
oder nicht. Genauer wird es angenommen, daß der FIFO-Zwischenspeicher
in der Bereit-Warteschlange 162 die Aufgaben-ID des Aufgabenebenenprozesses,
der die Beendungsaufgabe aufgerufen hat, speichert. Das Aufgabenbeendungsprogramm
stellt fest, ob der FIFO-Zwischenspeicher derzeit die anderen Aufgaben-IDs
speichert oder nicht. Wenn die anderen Aufgaben-IDs gespeichert sind,
führt das
Aufgabenbeendungsprogramm den Prozeß in einem Schritt S570 aus.
Andernfalls führt das
Aufgabenbeendungsprogramm den Prozeß in einem Schritt S540 aus.
-
In
dem Schritt S540 gibt das Aufgabenbeendungsprogramm ein Unterbrechungsanforderungslöschungssignal
zu der Unterbrechungssteuereinrichtung 14 aus. Das Unterbrechungsanforderungslöschungssignal
enthält Informationen
zum Bestimmen eines der Unterbrechungspriorität des Aufgabenebenenprozesses,
der die Beendungsaufgabe aufgerufen hat, entsprechenden Unterbrechungsregisters.
-
In
einem Schritts S550 stellt das Aufgabenbeendungsprogramm den Kontext
wieder her. Genauer speichert der Stapel 161 einen Berechnungsergebnisregisterwert
und temporäre
Daten über
einen unmittelbar vor der Ausführung
des Aufgabenebenenprozesses, der die Beendungsaufgabe aufgerufen
hat, ausgeführten
Aufgabenebenenprozeß. Das
Aufgabenbeendungsprogramm liest den Berechnungsergebnisregisterwert
und die temporären Daten
aus dem Stapel 161 und führt sie zu den ursprünglichen
Positionen in dem Berechnungsergebnisregister und dem RAM 16 zurück.
-
In
einem Schritt S560 gibt das Aufgabenbeendungsprogramm eine Unterbrechung
frei. Dieser Prozeß ist äquivalent
zu dem Schritt S350 in 10.
-
In
einem Schritt S565 führt
das Aufgabenbeendungsprogramm wie in dem Schritt S240 in 9 eine
RTI-Anweisung aus und beendet daraufhin den Beendungsaufgabenprozeß.
-
In
dem Schritt S570 erhält
das Aufgabenbeendungsprogramm die älteste Aufgaben-ID mit der gleichen
Priorität
aus der Bereit-Warteschlange 162. Genauer speichert der
FIFO-Zwischenspeicher
der Bereit-Warteschlange 162 Aufgaben-IDs für den Aufgabenebenenprozeß, der die
Beendungsaufgabe aufgerufen hat. Das Aufgabenbeendungsprogramm liest
die früheste
gespeicherte Aufgaben-ID aus dem FIFO-Zwischenspeicher und löscht die
Aufgaben-ID aus dem FIFO-Zwischenspeicher.
-
In
einem Schritt S580 gibt das Aufgabenbeendungsprogramm wie in dem
Schritt S550 eine Unterbrechung frei.
-
In
einem Schritt S590 springt das Aufgabenbeendungsprogramm zu der
Aufgabe, um die Ausführung
der Beendungsaufgabe zu beenden. Genauer führt das Aufgabenbeendungsprogramm
ein zu der in dem Schritt S570 gelesenen Aufgaben-ID äquivalentes
Aufgabenebenenprozeßprogramm
aus, um die Ausführung
der Aufgabenunterbrechung zu beenden.
-
Die
CPU 15 führt
das vorstehend angeführte Aufgabenbeendungsprogramm
aus, um die Ausführung
des Aufgabenebenenprozesses zu beenden. Es kann ein Fall vorhanden
sein, in dem die Bereit-Warteschlange 162 den der gleichen
Priorität
wie der des Aufgabenebenenprozesses zugeordneten Aufgabenebenenprozeß speichert.
In diesem Fall führt
die CPU 15 einen der frühesten
gespeicherten Aufgabenebenenprozesse aus (siehe Schritte 570 und 590). Andernfalls
führt die
CPU 15 eine RTI-Anweisung aus (siehe Schritt S565).
-
Das
folgende beschreibt, wie das Ausführen der vorstehend angeführten Programme
einen Wechsel zwischen Ausführungsprogrammen
für die CPU 15 wie
in 5 gezeigt realisiert.
-
Es
wird das folgende angenommen. Die CPU 15 führt die
Aufgabe C aus. Die nullten bis siebten Unterbrechungsregister 140 bis 147 der
Unterbrechungssteuereinrichtung 14 enthalten alle 1en als Werte
der Unterbrechungsmaskenzustandsmerker 52 mit Ausnahme
von 0 für
das sechste Unterbrechungsregister 146. Das IntLvl-Register 149 enthält den Wert
6 (Aufgabe mit niedriger Priorität).
Die Bereit-Warteschlange 162 speichert nur die Aufgaben-ID
der Aufgabe C in dem entsprechenden FIFO-Zwischenspeicher.
-
Das
Ausführen
des Schritts S160 in 8 führt die Aktivierungsaufgabe
aus. Das Ausführen der
Aktivierungsaufgabe speichert die Aufgaben-ID der Aufgabe A (siehe
Schritt S420 in 11) in dem der der Aufgabe A
zugewiesenen Unterbrechungspriorität entsprechenden FIFO-Zwischenspeicher
der Bereit-Warteschlange 162. Ferner werden der Unterbrechungszustandsmerker 51 und
der Unterbrechungsmaskenzustandsmerker 52 des der Unterbrechungspriorität entsprechenden
vierten Unterbrechungsregisters 144 zu 1 bzw. 0 geändert. Dieses Stadium
ist äquivalent
zu dem durch den Pfeil 61 in 5 angegebenen
Zeitpunkt.
-
In
dieser Art und Weise wird die Unterbrechungssteuereinrichtung 14 zum
Empfangen einer Anforderung der dem vierten Unterbrechungsregister 144 entsprechenden
Unterbrechungspriorität
konditioniert. Die Unterbrechungssteuereinrichtung 14 stellt fest,
daß das
vierte Unterbrechungsregister 144 und das sechste Unterbrechungsregister 146 den
auf 1 eingestellten Unterbrechungszustandsmerker 51 und den
auf 0 eingestellten Unterbrechungsmaskenzustandsmerker 52 beibehalten.
Die Unterbrechungssteuereinrichtung 14 vergleicht die Unterbrechungsprioritäten 53 dieser
Unterbrechungsregister, um festzustellen, daß das vierte Unterbrechungsregister 144 die
höchste
Priorität
aufweist. Ferner stellt die Unterbrechungssteuereinrichtung 14 fest,
daß die Unterbrechungspriorität 53 des
vierten Unterbrechungsregisters 144 einen kleineren Wert
als den des IntLvl-Registers 149 enthält. Basierend auf dieser Feststellung
schreibt die Unterbrechungssteuereinrichtung 14 den Wert
des Vorheriges-IntLvl-Registers 150 zu 6, dem derzeitigen
Wert des IntLvl-Registers 149, neu. Die Unterbrechungssteuereinrichtung 14 schreibt
den Wert des IntLvl-Registers 149 zu 4, dem derzeitigen
Wert der Unterbrechungspriorität 53 des
vierten Unterbrechungsregisters 144, neu. Ferner gibt die
Unterbrechungssteuereinrichtung 14 das dem vierten Unterbrechungsregister 144 entsprechende
Unterbrechungssignal zu der CPU 15 aus.
-
Während sie
die Aufgabe C ausführt,
empfängt
die CPU 15 das Unterbrechungssignal, um Werte des Programmzählers und
des Statusregisters in dem Programmzählerzwischenspeicher bzw. dem Statusregisterzwischenspeicher
zu sichern. Darüber hinaus
führt die
CPU 15 das Aufgabenunterbrechungsprogramm wie in 10 gezeigt über den
Unterbrechungsvektor 171 aus. Die CPU 15 gewinnt
die Aufgaben-ID der Aufgabe A wieder und löscht sie. Diese Aufgaben-ID
ist die älteste
in dem dem Unterbrechungssignal entsprechenden FIFO-Zwischenspeicher
der Bereit-Warteschlange 162 gespeicherte Aufgaben-ID.
Die CPU 15 führt
daraufhin die Aufgabe A aus, das heißt die der relevanten Aufgaben-ID entsprechende
Aufgabe. Dieses Stadium ist äquivalent
zu dem durch den Pfeil 62 in 5 angegebenen Zeitpunkt.
-
Wenn
die Aufgabe A die Ausführung
beendet, wird der Schritt S140 in 7 ausgeführt, um
die Ausführung
der Beendungsaufgabe zu beginnen. Die Beendungsaufgabe stellt fest,
ob der der aufrufenden Aufgabe A entsprechende FIFO-Zwischenspeicher leer
ist oder nicht (siehe Schritt S530 in 12). Basierend
auf dieser Feststellung stellt die Beendungsaufgabe den Kontext
wieder her (siehe Schritt S550). Dieser Prozeß stellt das Berechnungsergebnisregister
und dergleichen der CPU 15 und temporäre Daten in dem RAM 16 zu
denjenigen, die bei der Unterbrechung der Aufgabe C verwendet wurden,
wieder her. Die CPU 15 gibt daraufhin ein Unterbrechungsanforderungslöschungssignal
zu der Unterbrechungssteuereinrichtung 14 aus (siehe Schritt
S540). Folglich plaziert die Unterbrechungssteuereinrichtung 14 1
in dem Unterbrechungsmaskenzustandsmerker 52 des vierten
Unterbrechungsregisters 144.
-
Die
CPU 15 führt
eine RTI-Anweisung aus (siehe Schritt S565). Dies führt die
Werte des Programmzählers
und des Statusregisters zu denjenigen zurück, die bei der Unterbrechung
der Aufgabe C verwendet wurden. Der Wert des IntLvl-Registers 149 kehrt
zu 6 zurück,
das heißt
dem Wert des Vorheriges-IntLvl-Registers 150. Die Unterbrechungssteuereinrichtung 14 stellt
daraufhin fest, daß nur
das sechste Unterbrechungsregister 146 den auf 1 eingestellten
Unterbrechungszustandsmerker 51 und den auf 0 eingestellten
Unterbrechungsmaskenzustandsmerker 52 beibehält. Ferner
gibt die Unterbrechungssteuereinrichtung 14 basierend auf
der Tatsache, daß der
gleiche Wert für
die Unterbrechungspriorität 53 des
sechsten Unterbrechungsregisters 146 und die des IntLvl-Registers 149 verwendet
wird, kein Unterbrechungssignal zu der CPU 15 aus.
-
Die
CPU 15 beginnt die Ausführung
der Aufgabe C wieder von der dem Programmzählerwert entsprechenden Position
aus. Dieses Stadium ist äquivalent
zu dem durch den Pfeil 63 in 5 angegebenen
Zeitpunkt.
-
Während die
Aufgabe C ausgeführt
wird, kann die Unterbrechungssteuereinrichtung 14 zum Beispiel
ein Impulssignal von dem Kurbelsensor 23 empfangen. Die
Unterbrechungssteuereinrichtung 14 plaziert den Wert 1
(ein) in dem Unterbrechungszustandsmerker 51 für das dem Impulssignal
entsprechende Unterbrechungsregister (zum Beispiel das erste Unterbrechungsregister 141).
-
In
dieser Art und Weise wird die Unterbrechungssteuereinrichtung 14 zum
Empfangen einer Anforderung der dem ersten Unterbrechungsregister 141 entsprechenden
Unterbrechungspriorität
konditioniert. Die Unterbrechungssteuereinrichtung 14 stellt fest,
daß das
erste Unterbrechungsregister 141 und das sechste Unterbrechungsregister 146 den
auf 1 eingestellten Unterbrechungszustandsmerker 51 und den
auf 0 eingestellten Unterbrechungsmaskenzustandsmerker 52 beibehalten.
Die Unterbrechungssteuereinrichtung 14 vergleicht die Unterbrechungsprioritäten 53 dieser
Unterbrechungsregister, um festzustellen, daß das erste Unterbrechungsregister 141 die
höchste
Priorität
aufweist. Ferner stellt die Unterbrechungssteuereinrichtung 14 fest,
daß die Unterbrechungspriorität 53 des
ersten Unterbrechungsregisters 141 einen kleineren Wert
als den des IntLvl-Registers 149 enthält. Basierend auf dieser Feststellung
schreibt die Unterbrechungssteuereinrichtung 14 den Wert
des Vorheriges-IntLvl-Registers 150 zu 6, dem derzeitigen
Wert des IntLvl-Registers 149, neu. Die Unterbrechungssteuereinrichtung 14 schreibt
den Wert des IntLvl-Registers 149 zu 1, dem derzeitigen
Wert der Unterbrechungspriorität 53 des
ersten Unterbrechungsregisters 141, neu. Ferner gibt die
Unterbrechungssteuereinrichtung 14 das dem ersten Unterbrechungsregister 141 entsprechende
Unterbrechungssignal zu der CPU 15 aus.
-
Während sie
die Aufgabe C ausführt,
empfängt
die CPU 15 das Unterbrechungssignal, um Werte des Programmzählers und
des Statusregisters in dem Programmzählerzwischenspeicher bzw. dem Statusregisterzwischenspeicher
zu sichern. Darüber hinaus
beginnt die CPU 15 die Ausführung des Unterbrechung-X-Programms über den
Unterbrechungsvektor 171. Dieses Stadium ist äquivalent
zu dem durch den Pfeil 64 in 5 angegebenen
Zeitpunkt.
-
Danach
führt die
Unterbrechung X den Schritt S220 in 9 aus, um
die Aktivierungsaufgabe auszuführen.
Das Ausführen
der Aktivierungsaufgabe speichert die Aufgaben-ID der Aufgabe B
in dem der der Aufgabe B zugewiesenen Unterbrechungspriorität entsprechenden
FIFO-Zwischenspeicher
der Bereit-Warteschlange 162 (siehe Schritt S420 in 11).
Ferner ändert
die Aktivierungsaufgabe den Unterbrechungszustandsmerker 51 und den
Unterbrechungsmaskenzustandsmerker 52 in dem der Unterbrechungspriorität entsprechenden fünften Unterbrechungsregister 145 zu
1 bzw. 0. Dieses Stadium ist äquivalent
zu dem durch den Pfeil 65 in 5 angegebenen
Zeitpunkt.
-
In
dieser Art und Weise wird die Unterbrechungssteuereinrichtung 14 zum
Empfangen einer Anforderung der dem fünften Unterbrechungsregister 145 entsprechenden
Unterbrechungspriorität
konditioniert. Die Unterbrechungssteuereinrichtung 14 stellt fest,
daß das
erste Unterbrechungsregister 141, das fünfte Unterbrechungsregister 145 und
das sechste Unterbrechungsregister 146 den auf 1 eingestellten Unterbrechungszustandsmerker 51 und
den auf 0 eingestellten Unterbrechungsmaskenzustandsmerker 52 beibehalten.
Die Unterbrechungssteuereinrichtung 14 vergleicht die Unterbrechungsprioritäten 53 dieser
Unterbrechungsregister, um festzustellen, daß das erste Unterbrechungsregister 141 die höchste Priorität aufweist.
Ferner stellt die Unterbrechungssteuereinrichtung 14 fest,
daß der
gleiche Wert für
die Unterbrechungspriorität 53 des
ersten Unterbrechungsregisters 141 und die des IntLvl-Registers 149 verwendet
wird. Zu dieser Zeit gibt die Unterbrechungssteuereinrichtung 14 daher
kein Unterbrechungssignal zu der CPU 15 aus. Da die Unterbrechung
X höher
priorisiert ist als die Aufgabe B, wird die Aufgabe B während der
Ausführung
der Unterbrechung X nicht ausgeführt.
-
Wenn
die Unterbrechung X die Ausführung beendet,
führt die
CPU 15 eine RTI-Anweisung aus (siehe Schritt S240 in 9).
In dieser Art und Weise kehren die Werte des Programmzählers und
des Statusregisters zu denjenigen zurück, die bei der zweiten Unterbrechung
der Aufgabe C verwendet wurden. Der Wert des IntLvl-Registers 149 kehrt
zu 6 zurück,
das heißt
dem Wert des Vorheriges-IntLvl-Registers 150.
-
Die
Unterbrechungssteuereinrichtung 14 stellt daraufhin fest,
daß nur
das fünfte
Unterbrechungsregister 145 und das sechste Unterbrechungsregister 146 den
auf 1 eingestellten Unterbrechungszustandsmerker 51 und
den auf 0 eingestellten Unterbrechungsmaskenzustandsmerker 52 beibehalten.
Ferner stellt die Unterbrechungssteuereinrichtung 14 fest,
daß die
Unterbrechungspriorität 53 des
fünften
Unterbrechungsregisters 145 einen kleineren Wert als die
Unterbrechungspriorität 53 des sechsten
Unterbrechungsregisters 146 enthält. Die Unterbrechungspriorität 53 des
fünften
Unterbrechungsregisters 145 enthält einen kleineren Wert als den
Wert des IntLvl-Registers 149. Darauf basierend gibt die
Unterbrechungssteuereinrichtung 14 ein dem fünften Unterbrechungsregister 145 entsprechendes Unterbrechungssignal
zu der CPU 15 aus.
-
Die
CPU 15 empfängt
das Unterbrechungssignal, um Werte des Programmzählers und des Statusregisters
in dem Programmzählerzwischenspeicher
bzw. dem Statusregisterzwischenspeicher zu sichern. Darüber hinaus
beginnt die CPU 15 die Ausführung des Aufgabenunterbrechungsprogramms wie
in 10 gezeigt über
den Unterbrechungsvektor 171. Die CPU 15 gewinnt
die Aufgaben-ID der Aufgabe B wieder und löscht sie. Diese Aufgaben-ID ist
die älteste
in dem dem Unterbrechungssignal entsprechenden FIFO-Zwischenspeicher
der Bereit-Warteschlange 162 gespeicherte
Aufgaben-ID. Die CPU 15 führt daraufhin die Aufgabe B
aus, das heißt
die der relevanten Aufgaben-ID entsprechende Aufgabe. Dieses Stadium
ist äquivalent
zu dem durch den Pfeil 66 in 5 angegebenen
Zeitpunkt.
-
Wenn
die Aufgabe B die Ausführung
beendet, wird die Beendungsaufgabe ausgeführt. Zu dem durch den Pfeil 67 angegebenen
Zeitpunkt endet der Prozeß für die Aufgabe
B, um den Prozeß für die Aufgabe
C wieder zu beginnen. Dieser Prozeß ähnelt dem Prozeß, der ausgeführt wird,
wenn die Aufgabe A zu dem durch den Pfeil 63 angegebenen
Zeitpunkt endet, um die Ausführung
der Aufgabe C zu beginnen.
-
Es
ist die Realisierung des Wechsels zwischen den Ausführungsprogrammen
für die
CPU 15 wie in 5 gezeigt beschrieben worden.
-
In 5 wechselt
die Aufgabe C zu der Aufgabe A, wenn die Aktivierungsaufgabe die
Unterbrechungssteuereinrichtung 14 zu dem durch den Pfeil 61 angegebenen
Zeitpunkt zum Ausgeben eines Unterbrechungssignals auffordert. Gemäß einer
bekannten Aktivierungsaufgabe führt
die CPU 15 einen Softwareprozeß aus, um Prioritäten zwischen
Aufgabenebenenprozessen zu vergleichen. Basierend auf dem Ergebnis
realisiert die CPU 15 einen auszuführenden Aufgabenebenenprozeß. Im Gegensatz
dazu ermöglicht
es das Ausführungsbeispiel
der Unterbrechungssteuereinrichtung 14, Unterbrechungsprioritäten miteinander
zu vergleichen.
-
In
einem Fall kehrt die Aufgabe A zu der Aufgabe C zur Ausführung zurück. In einem
anderen Fall wechselt die Unterbrechung X zu der Aufgabe B zur Ausführung. In
noch einem anderen Fall kehrt die Aufgabe B zu der Aufgabe C zur
Ausführung
zurück. In
diesen Fällen
führt die
CPU 15 eine RTI-Anweisung in der Beendungsaufgabe (siehe
Schritt S565 in 12) oder direkt (siehe Schritt
S240 in 9) aus. In dieser Art und Weise
vergleicht die Unterbrechungssteuereinrichtung 14 Unterbrechungsprioritäten miteinander.
Basierend auf dem Vergleichsergebnis wechselt die CPU 15 die
Ausführungsaufgaben. Gemäß einer
bekannten Beendungsaufgabe führt die
CPU 15 wie bei der bekannten Aktivierungsaufgabe einen
Softwareprozeß zum
Vergleichen von Prioritäten
zwischen Aufgabenebenenprozessen aus. Basierend auf dem Ergebnis
realisiert die CPU 15 einen auszuführenden Aufgabenebenenprozeß. Im Gegensatz
dazu ermöglicht
es das Ausführungsbeispiel
der Unterbrechungssteuereinrichtung 14, Unterbrechungsprioritäten miteinander
zu vergleichen.
-
Wenn
sie zum Ausführen
des Aufgabenebenenprozesses aufgefordert wird, führt die CPU 15 die Aktivierungsaufgabe
aus, um die Unterbrechungssteuereinrichtung 14 zum Ausgeben
eines dem Aufgabenebenenprozeß entsprechenden
Unterbrechungssignals aufzufordern. Wenn sie Anforderungen annimmt,
bestimmt die Unterbrechungssteuereinrichtung 14 die am
höchsten
priorisierte Anforderung der angenommenen Anforderungen. Wenn die bestimmte
Anforderung einen kleineren Wert der Unterbrechungspriorität 53 als
den Wert des IntLvl-Registers 149 aufweist, gibt die Unterbrechungssteuereinrichtung 14 ein
die bestimmte Anforderung betreffendes Unterbrechungssignal aus.
Die CPU führt
einen dem Unterbrechungssignal von der Unterbrechungssteuereinrichtung 14 entsprechenden
Prozeß aus.
Mit anderen Worten ermöglicht
es die CPU 15 der Unterbrechungssteuereinrichtung 14,
Prioritäten der
Aufgabenebenenprozesse zu vergleichen. Die Verwendung der Mehrfachunterbrechungsfunktion der
Unterbrechungssteuereinrichtung 14 kann die durch die CPU 15,
die über
eine Vielzahl von Aufgaben zur Ausführung wechselt, zur Aufgabenplanung verbrauchte
Zeit vermindern.
-
Wenn
der Aufgabenebenenprozeß die
Ausführung
abschließt,
führt die
CPU 15 eine RTI-Anweisung aus. Die Unterbrechungssteuereinrichtung 14 bestimmt
das am höchsten
priorisierte Unterbrechungssignal der zur Ausgabe angeforderten
Unterbrechungssignale. Die Unterbrechungssteuereinrichtung 14 gibt
das bestimmte Unterbrechungssignal aus, wenn sein Wert der Unterbrechungspriorität 53 kleiner
als der Wert des IntLvl-Registers 149 ist.
Entsprechend ermöglicht
es die CPU der Unterbrechungssteuereinrichtung 14, Prioritäten der
Aufgabenebenenprozesse zu vergleichen.
-
Nachstehend
auf das Beispiel in 5 Bezug nehmend beschreibt das
folgende einen Fall, in dem während
der Ausführung
der Aufgabe B eine Aktivierungsaufgabe aufgerufen wird. Es wird
angenommen, daß diese
Aktivierungsaufgabe ein Argument in Form von einer der gleichen
Unterbrechungspriorität
wie für
die Aufgabe B zugewiesenen Aufgabe D aufweist. In diesem Fall speichert
die Ausführung
der Aktivierungsaufgabe die Aufgaben-ID der Aufgabe D in dem der
Aufgabe B entsprechenden FIFO-Zwischenspeicher.
Wenn die Aufgabe B endet, wird die Beendungsaufgabe in dem Schritt
S530 in 12 ausgeführt, um festzustellen, daß eine andere
Aufgaben-ID in dem FIFO-Zwischenspeicher
für die
gleiche Unterbrechungspriorität
wie bei Aufgabe B enthalten ist. In dem Schritt S570 liest die Beendungsaufgabe
die entsprechende Aufgaben-ID der Aufgabe D aus dem FIFO-Zwischenspeicher.
In dem Schritt S590 beginnt die Aufgabe D die Ausführung.
-
Wenn
ein Aufgabenverarbeitungsprogramm endet, kann der FIFO-Zwischenspeicher
mit der gleichen Unterbrechungspriorität aufeinanderfolgend eine Aufgaben-ID
eines anderen Aufgabenverarbeitungsprogramms speichern. In einem
derartigen Fall wird das andere Aufgabenverarbeitungsprogramm aufeinanderfolgend
ausgeführt,
ohne den Kontext des vorigen Aufgabenverarbeitungsprogramms zu sichern,
eine Unterbrechung für
die Unterbrechungssteuereinrichtung 14 anzufordern oder
eine Unterbrechungsanforderung zu löschen. Der Grund folgt. Der
FIFO-Zwischenspeicher enthält
die Aufgaben-ID für
ein Aufgabenverarbeitungsprogramm mit der gleichen Priorität wie für das derzeit
ausgeführte
Aufgabenverarbeitungsprogramm. Dies bedeutet, daß Aufgabenverarbeitungsprogramme
in dem FIFO-Zwischenspeicher die Ausführung immer von Anfang an beginnen.
In dieser Art und Weise ist es möglich,
Prozeßlasten
bei der CPU wie beispielsweise das Sichern von Kontexten zu vermindern.
-
Gemäß dem Ausführungsbeispiel
wird entweder der Wert 1 oder 0 für den Unterbrechungsmaskenzustandsmerker 52 der
Unterbrechungssteuereinrichtung 14 verwendet. Es wird angenommen, daß die Unterbrechungssteuereinrichtung 14 eine Anforderung
zum Ausgeben eines Unterbrechungssignals für den Aufgabenebenenprozeß mit einer
gegebenen Unterbrechungspriorität
empfängt.
Selbst wenn die Unterbrechungssteuereinrichtung 14 eine andere
Anforderung zum Ausgeben eines Unterbrechungssignals für den Aufgabenebenenprozeß mit der
gleichen Unterbrechungspriorität
empfängt,
wird der Wert des Unterbrechungsmaskenzustandsmerkers 52 nicht
geändert.
Es wird angenommen, daß dann,
wenn jedesmal einer von Aufgabenebenenprozessen mit der Unterbrechungspriorität endet,
ein zu dem Schritt S540 in 12 äquivalenter
Prozeß immer
den Unterbrechungsmaskenzustandsmerker 52 des entsprechenden
Unterbrechungsregisters zu 1 ändert.
In diesem Fall scheint es, daß die
Unterbrechungssteuereinrichtung 14 nicht zur Ausgabe von nachfolgenden
Unterbrechungssignalen aufgefordert wird.
-
Das
Ausführungsbeispiel
löst dieses
Problem, das auftritt, wenn Aufgabenebenenprozesse mit der gleichen
Unterbrechungspriorität
in einer mehrfachen Art und Weise angefordert werden, durch das
folgende. Selbst wenn einer der Aufgabenebenenprozesse abgeschlossen
ist, wird kein Unterbrechungsregister gelöscht, und daraufhin wird der
später
angeforderte Aufgabenebenenprozeß aufeinanderfolgend ausgeführt.
-
(Zweites Ausführungsbeispiel)
-
Das
folgende beschreibt ein zweites Ausführungsbeispiel der vorliegenden
Erfindung. Das zweite Ausführungsbeispiel
unterscheidet sich in dem folgenden von dem ersten Ausführungsbeispiel.
Die CPU 15 schreibt das IntLvl-Register 149 der Unterbrechungssteuereinrichtung 14 neu,
um die Priorität des
derzeit ausgeführten
Aufgabenebenenprozesses künstlich
auf eine bestimmte Priorität
zu erhöhen.
-
Es
kann notwendig werden, die Priorität des derzeit ausgeführten Aufgabenebenenprozesses künstlich
auf eine bestimmte Priorität
zu erhöhen.
Es sind zum Beispiel Aufgabenebenenprozesse mit verschiedenen Prioritäten zum
Verwenden des gleichen Betriebsmittels der Motor-ECU 1 konfiguriert.
Das heißt,
das Betriebsmittel wird durch Aufgabenebenenprozesse mit verschiedenen
Prioritäten
gemeinsam genutzt. Das Betriebsmittel der Motor-ECU 1 bezeichnet
eine durch die CPU 15 verwendete physikalische Vorrichtung
in der Motor-ECU 1. Das Betriebsmittel umfaßt das RAM 16 des
Mikrocomputers 12, einen bestimmten Bereich in EEPROM (nicht
gezeigt), die Schaltung für
externe Eingabe/Ausgabe 11 und eine Kommunikationsvorrichtung
zum Kommunizieren mit einer anderen ECU in einem Fahrzeug (nicht
gezeigt).
-
Während in
diesem Fall ein Aufgabenebenenprozeß mit einer niedrigen Unterbrechungspriorität ausgeführt wird,
kann angefordert werden, einen anderen Aufgabenebenenprozeß mit einer
höheren Unterbrechungspriorität auszuführen. Es
kann ein Bedarf daran bestehen, zu verhindern, daß das durch den
niedrig priorisierten Aufgabenebenenprozeß verwendete Betriebsmittel
durch den anderen Aufgabenebenenprozeß mit Unterbrechungen verwendet wird.
Das heißt,
ein Aufgabenebenenprozeß kann das
gemeinsam genutzte Betriebsmittel ausschließlich verwenden müssen.
-
Zum
Lösen dieses
Problems stellt das OSEK-OS gemäß dem Ausführungsbeispiel
ein Betriebsmittelaneignungsprogramm und ein Betriebsmittelfreigabeprogramm
bzw. Betriebsmittelzugriffsfreigabeprogramm bereit. Diese Programme
fungieren als eine Schnittstelle zum ausschließlichen Verwenden des Betriebsmittels,
indem ein konkurrierender Zugriff auf das Betriebsmittel zwischen
Aufgabenebenenprozessen vermieden wird.
-
Der
Aufgabenebenenprozeß mit
einer niedrigen Unterbrechungspriorität ruft das Betriebsmittelaneignungsprogramm
auf, um mit einem ausschließlichen
Verwenden des Betriebsmittels zu beginnen. Der Aufgabenebenenprozeß ruft das
Betriebsmittelzugriffsfreigabeprogramm auf, um das verwendete Betriebsmittel
für die
anderen Aufgabenebenenprozesse verfügbar zu machen. Es wird ein
Argument an das Betriebsmittelaneignungsprogramm und das Betriebsmittelzugriffsfreigabeprogramm übergeben. Das
Argument bestimmt ein Betriebsmittel, dessen ausschließliche Verwendung
zu beginnen oder zu beenden ist.
-
13 zeigt
ein Flußdiagramm
des Betriebsmittelaneignungsprogramms.
-
Wenn
das Betriebsmittelaneignungsprogramm aufgerufen wird, sperrt die
CPU 15 in einem Schritt S610 eine Unterbrechung. Dieser
Prozeß ist äquivalent
zu dem Schritt S310 in 10.
-
In
einem Schritt S620 ermöglicht
es der Prozeß dem
RAM 16, den derzeitigen Wert in dem IntLvl-Register 149 der
Unterbrechungssteuereinrichtung 14 zu speichern.
-
In
einem Schritt S630 schreibt der Prozeß den Wert des IntLvl-Registers 149 zu
einer Ebene des zu erhaltenden Betriebsmittels neu. Das zu erhaltende
Betriebsmittel ist eines, das derzeit zur ausschließlichen
Verwendung vorgesehen ist, und wird als ein Argument von einem Aufrufer
des Betriebsmittelaneignungsprogramms übergeben. Die Betriebsmittelebene
ist ein jedem Betriebsmittel der Motor-ECU 1 zugewiesener
Wert der Unterbrechungspriorität.
Dieser Wert ist gleich der höchsten
Unterbrechungspriorität
von Unterbrechungsprioritäten
für Aufgabenebenenprozesse,
die das Betriebsmittel gemeinsam nutzen. Die Betriebsmittelebenen
werden in dem Entwurfsstadium der Motor-ECU 1 vorbestimmt.
Das ROM 17 speichert die Informationen über die Betriebsmittelebenen.
-
In
einem Schritt S640 gibt der Prozeß eine Unterbrechung frei.
Dieser Prozeß ist äquivalent
zu dem Schritt S350 in 10. Das Programm beendet daraufhin
die Ausführung.
Die CPU 15 beginnt wieder die Ausführung des Aufrufprogramms.
-
Die
CPU 15 führt
das Betriebsmittelaneignungsprogramm aus. Folglich speichert das
IntLvl-Register 149 einen eine höhere Priorität als die Unterbrechungspriorität des tatsächlich ausgeführten Aufgabenebenenprozesses
angebenden Wert.
-
Zu
dieser Zeit wird es berücksichtigt,
daß die CPU 15 eine
Anforderung zu der Unterbrechungssteuereinrichtung 14 ausgibt,
um ein dem anderen das Betriebsmittel verwendenden Aufgabenebenenprozeß entsprechendes
Unterbrechungssignal auszugeben. Der Wert des IntLvl-Registers 149 gibt
eine Priorität
an, die höher
als die oder gleich der Unterbrechungspriorität des Unterbrechungssignals
ist. Dies liegt daran, daß der
Wert des IntLvl-Registers 149 die höchste Priorität von Prioritäten für das Betriebsmittel
gemeinsam nutzende Aufgabenebenenprozesse angibt. Es ist kein Aufgabenebenenprozeß vorhanden,
der eine höhere
Priorität
als die höchste Priorität angibt
und das Betriebsmittel verwendet.
-
Infolge
des Vergleichs zwischen dem IntLvl-Register 149 und dem
Wert der Unterbrechungspriorität 53 für das dem
Unterbrechungssignal entsprechende Unterbrechungsregister gibt die
Unterbrechungssteuereinrichtung 14 kein Unterbrechungssignal
aus. Der Aufgabenebenenprozeß,
der das Betriebsmittelaneignungsprogramm aufgerufen hat, wird dazu
in die Lage versetzt, das Betriebsmittel zu verwenden, indem die
Verwendung durch die anderen Aufgabenebenenprozesse ausgeschlossen wird.
-
14 zeigt
ein Flußdiagramm
des Betriebsmittelzugriffsfreigabeprogramms.
-
Wenn
das Betriebsmittelzugriffsfreigabeprogramm aufgerufen wird, sperrt
die CPU 15 in einem Schritt S650 eine Unterbrechung. Dieser
Prozeß ist äquivalent
zu dem Schritt S310 in 10.
-
Wenn
das Betriebsmittel erhalten wird, speichert das RAM 16 den
Wert des IntLvl-Registers 149. In einem Schritt S660 schreibt
der Prozeß den
Wert in das IntLvl-Register 149.
-
In
einem Schritt S670 gibt der Prozeß eine Unterbrechung frei.
Dieser Prozeß ist äquivalent
zu dem Schritt S350 in 10. Das Programm beendet daraufhin
die Ausführung.
Die CPU 15 beginnt wieder die Ausführung des Aufrufprogramms.
-
Die
Ausführung
des Betriebsmittelzugriffsfreigabeprogramms führt den Wert des IntLvl-Registers 149 zu
dem vor der Betriebsmittelaneignung verwendeten Wert zurück. Es kann
eine Anforderung zum Ausgeben eines dem das Betriebsmittel verwendenden
Aufgabenebenenprozeß entsprechenden Unterbrechungssignals
zwischen einem Aufruf des Betriebsmittelaneignungsprogramms und
einem Aufruf des Betriebsmittelzugriffsfreigabeprogramms vorhanden
sein. In einem derartigen Fall kann der Aufgabenebenenprozeß unmittelbar
nach der Ausführung
des Betriebsmittelzugriffsfreigabeprogramms ausgeführt werden.
Das heißt,
die anderen Aufgabenebenenprozesse werden dazu in die Lage versetzt, das
Betriebsmittel zu verwenden.
-
(Drittes Ausführungsbeispiel)
-
Das
folgende beschreibt ein drittes Ausführungsbeispiel der vorliegenden
Erfindung. Die folgende Beschreibung deckt nur einen Unterschied
des dritten Ausführungsbeispiels
gegenüber
dem zweiten Ausführungsbeispiel
ab. Gemäß dem dritten
Ausführungsbeispiel
stellt das OSEK-OS wie bei dem zweiten Ausführungsbeispiel das Betriebsmittelaneignungsprogramm
und das Betriebsmittelzugriffsfreigabeprogramm als Schnittstellen
zum künstlichen Erhöhen der
Priorität
des derzeit ausgeführten
Aufgabenebenenprozesses auf eine bestimmte Priorität bereit.
-
Das
Betriebsmittelaneignungsprogramm gemäß dem dritten Ausführungsbeispiel
unterscheidet sich jedoch in dem folgenden von dem gemäß dem zweiten
Ausführungsbeispiel.
Das Betriebsmittelaneignungsprogramm ermöglicht eine ausschließliche Verwendung
des Betriebsmittels, indem ein Wert der Unterbrechungspriorität 53 für das Unterbrechungsregister
in der Unterbrechungssteuereinrichtung 14 zu einer Priorität, die niedriger
als die oder gleich der Priorität
des derzeit ausgeführten
Aufgabenebenenprozesses ist, neu geschrieben wird.
-
Unter
einer Neuschreibsteuerung der CPU 15 schreibt die Unterbrechungssteuereinrichtung 14 gemäß dem Ausführungsbeispiel
Werte der Unterbrechungsprioritäten 53 für die dritten
bis siebten Unterbrechungsregister 143 bis 147 neu.
Die Unterbrechungssteuereinrichtung 14 kann erfassen, daß der Wert
der Unterbrechungspriorität 53 unter
der Steuerung der CPU 15 neu geschrieben wird. Wie bei
dem ersten Ausführungsbeispiel
beschrieben führt
die Unterbrechungssteuereinrichtung 14 infolge des Empfangens eines
eine Anforderung zum Ausgeben eines Unterbrechungssignals darstellenden
Signals von der CPU 15 oder der Schaltung für externe
Eingabe/Ausgabe 11 eine zu der Operation nach dem Neuschreiben
des Unterbrechungszustandsmerkers 51 und dergleichen äquivalente
Operation aus.
-
15 zeigt
ein Flußdiagramm
des Betriebsmittelaneignungsprogramms.
-
Wenn
das Betriebsmittelaneignungsprogramm aufgerufen wird, sperrt die
CPU 15 in einem Schritt S705 eine Unterbrechung. Dieser
Prozeß ist äquivalent
zu dem Schritt S310 in 10.
-
In
einem Schritt S710 speichert das Programm die Unterbrechungspriorität des derzeit
ausgeführten
Aufgabenebenenprozesses in dem RAM 16.
-
In
einem Schritt S715 stellt das Programm fest, ob das zu erhaltende
Betriebsmittel einen Prioritätswert
von 7 (äquivalent
zu der Priorität
der Leerlaufaufgabe) aufweist oder nicht. Wenn die Priorität 7 ist,
führt das
Programm den Prozeß in
einem Schritt S775 aus. Wenn die Priorität nicht 7 ist, führt das
Programm den Prozeß in
einem Schritt S720 aus.
-
In
dem Schritt S720 stellt das Programm fest, ob das zu erhaltende
Betriebsmittel einen Prioritätswert
von 6 (äquivalent
zu der Priorität
der Aufgabe mit niedriger Priorität) aufweist oder nicht. Wenn
die Priorität
6 ist, führt
das Programm den Prozeß in
einem Schritt S765 aus. Wenn die Priorität nicht 6 ist, führt das
Programm den Prozeß in
einem Schritt S725 aus.
-
In
dem Schritt S725 stellt das Programm fest, ob das zu erhaltende
Betriebsmittel einen Prioritätswert
von 5 (äquivalent
zu der Priorität
der Aufgabe mit mittlerer Priorität) aufweist oder nicht. Wenn
die Priorität
5 ist, führt
das Programm den Prozeß in
einem Schritt S755 aus. Wenn die Priorität nicht 5 ist, führt das
Programm den Prozeß in
einem Schritt S730 aus.
-
In
dem Schritt S730 stellt das Programm fest, ob das zu erhaltende
Betriebsmittel einen Prioritätswert
von 4 (äquivalent
zu der Priorität
der Aufgabe mit hoher Priorität)
aufweist oder nicht. Wenn die Priorität 4 ist, führt das Programm den Prozeß in einem Schritt
S745 aus. Wenn die Priorität
nicht 4 ist, führt das
Programm den Prozeß in
einem Schritt S735 aus.
-
In
dem Schritt S710 speichert das RAM 16 den Unterbrechungsprioritätswert für den derzeit ausgeführten Aufgabenebenenprozeß. In dem Schritt
S735 stellt das Programm fest, ob der in dem RAM 16 gespeicherte
Unterbrechungsprioritätswert größer als
3 (eine niedrigere Priorität
als die Aufgabe mit höchster
Priorität)
ist oder nicht. Wenn der Unterbrechungsprioritätswert größer als 3 ist, führt das Programm
den Prozeß in
einem Schritt S740 aus. Wenn der Unterbrechungsprioritätswert kleiner
als oder gleich 3 ist, führt
das Programm den Prozeß in dem
Schritt S775 aus.
-
In
dem Schritt S740 weist das Programm der Unterbrechungspriorität für die Aufgabe
mit höchster Priorität den Wert
7 zu. Genauer stellt das Programm eine Steuerung zum Neuschreiben
des Werts der Unterbrechungspriorität 53 für das dritte
Unterbrechungsregister 143 zu 7 bereit.
-
In
dem Schritt S710 speichert das RAM 16 den Unterbrechungsprioritätswert für den derzeit ausgeführten Aufgabenebenenprozeß. In dem Schritt
S745 stellt das Programm fest, ob der in dem RAM 16 gespeicherte
Unterbrechungsprioritätswert größer als
4 (geringer priorisiert als die Aufgabe mit hoher Priorität) ist oder
nicht. Wenn der Unterbrechungsprioritätswert größer als 4 ist, führt das
Programm den Prozeß in
einem Schritt S750 aus. Wenn der Unterbrechungsprioritätswert kleiner
als oder gleich 4 ist, führt
das Programm den Prozeß in
dem Schritt S775 aus.
-
In
dem Schritt S750 weist das Programm der Unterbrechungspriorität für die Aufgabe
mit hoher Priorität
den Wert 7 zu. Genauer stellt das Programm eine Steuerung zum Neuschreiben
des Werts der Unterbrechungspriorität 53 für das dritte
Unterbrechungsregister 144 zu 7 bereit.
-
In
dem Schritt S710 speichert das RAM 16 den Unterbrechungsprioritätswert für den derzeit ausgeführten Aufgabenebenenprozeß. In dem Schritt
S755 stellt das Programm fest, ob der in dem RAM 16 gespeicherte
Unterbrechungsprioritätswert größer als
5 (geringer priorisiert als die Aufgabe mit mittlerer Priorität) ist oder
nicht. Wenn der Unterbrechungsprioritätswert größer als 5 ist, führt das
Programm den Prozeß in
einem Schritt S760 aus. Wenn der Unterbrechungsprioritätswert kleiner
als oder gleich 5 ist, führt
das Programm den Prozeß in
dem Schritt S775 aus.
-
In
dem Schritt S760 weist das Programm der Unterbrechungspriorität für die Aufgabe
mit mittlerer Priorität
den Wert 7 zu. Genauer stellt das Programm eine Steuerung zum Neuschreiben
des Werts der Unterbrechungspriorität 53 für das dritte
Unterbrechungsregister 145 zu 7 bereit.
-
In
dem Schritt S710 speichert das RAM 16 den Unterbrechungsprioritätswert für den derzeit ausgeführten Aufgabenebenenprozeß. In dem Schritt
S765 stellt das Programm fest, ob der in dem RAM 16 gespeicherte
Unterbrechungsprioritätswert größer als
6 (geringer priorisiert als die Aufgabe mit niedriger Priorität) ist oder
nicht. Wenn der Unterbrechungsprioritätswert größer als 6 ist, führt das
Programm den Prozeß in
einem Schritt S770 aus. Wenn der Unterbrechungsprioritätswert kleiner
als oder gleich 5 ist, führt
das Programm den Prozeß in
dem Schritt S775 aus.
-
In
dem Schritt S770 weist das Programm der Unterbrechungspriorität für die Aufgabe
mit niedriger Priorität
den Wert 7 zu. Genauer stellt das Programm eine Steuerung zum Neuschreiben
des Werts der Unterbrechungspriorität 53 für das dritte
Unterbrechungsregister 146 zu 7 bereit.
-
In
dem Schritt S775 gibt das Programm eine Unterbrechung frei. Dieser
Prozeß ist äquivalent
zu dem Schritt S350 in 10. Nach dem Schritt S775 beendet
das Programm die Ausführung.
Die CPU 15 beginnt wieder mit der Ausführung des Aufrufaufgabenebenenprozesses.
-
Es
wird ein Unterbrechungssignal mit einer Priorität, die höher als die Unterbrechungspriorität des derzeit
ausgeführten
Aufgabenebenenprozesses (das heißt, des Aufgabenebenenprozesses,
der das Betriebsmittelaneignungsprogramm aufgerufen hat) ist und
niedriger als die oder gleich der Priorität des zu erhaltenden Betriebsmittels
ist, angenommen. Die CPU 15 führt das vorstehend angeführte Betriebsmittelaneignungsprogramm
aus, um den Wert der Unterbrechungspriorität 53 für das dem
Unterbrechungssignal entsprechende Unterbrechungsregister zu 7 (eine
Leerlaufaufgabe mit der niedrigsten Priorität) zu ändern.
-
Es
wird ein Fall betrachtet, in dem die CPU 15 die Unterbrechungssteuereinrichtung 14 zum Ausgeben
eines dem anderen das Betriebsmittel verwendenden Aufgabenebenenprozeß entsprechenden
Unterbrechungssignals auffordert. Zu dieser Zeit wird der Wert 7
in der Unterbrechungspriorität 53 des dem
Unterbrechungssignal entsprechenden Unterbrechungsregisters plaziert.
Der Wert des IntLvl-Registers 149 entspricht der Priorität für den Aufgabenebenenprozeß, der das
Betriebsmittelaneignungsprogramm aufgerufen hat.
-
Infolge
des Vergleichs zwischen dem IntLvl-Register 149 und dem
Wert der Unterbrechungspriorität 53 für das dem
Unterbrechungssignal entsprechende Unterbrechungsregister gibt die
Unterbrechungssteuereinrichtung 14 kein Unterbrechungssignal
aus. Der Aufgabenebenenprozeß,
der das Betriebsmittelaneignungsprogramm aufgerufen hat, wird dazu
in die Lage versetzt, das Betriebsmittel zu verwenden, indem die
Verwendung durch die anderen Aufgabenebenenprozesse ausgeschlossen wird.
-
16 zeigt
ein Flußdiagramm
des Betriebsmittelzugriffsfreigabeprogramms gemäß dem Ausführungsbeispiel. Wenn das Betriebsmittelzugriffsfreigabeprogramm
aufgerufen wird, sperrt die CPU 15 in einem Schritt S805
eine Unterbrechung. Dieser Prozeß ist äquivalent zu dem Schritt S310
in 10.
-
In
einem Schritt S810 stellt das Programm fest, ob die bei der Betriebsmittelaneignung
gespeicherte Priorität
3 (die Aufgabe mit höchster
Priorität angebend)
ist oder nicht. Das heißt,
die Priorität
ist äquivalent
zu dem in dem Schritt S710 des letzten Betriebsmittelzugriffsfreigabeprogramms
in dem RAM 16 gespeicherten Wert des IntLvl-Registers 149.
Wenn die Priorität
3 ist, führt
das Programm den Prozeß in
einem Schritt S850 aus. Andernfalls führt das Programm den Prozeß in einem
Schritt S815 aus.
-
In
dem Schritt S815 stellt das Programm fest, ob die bei der Betriebsmittelaneignung
gespeicherte Priorität
4 (die Aufgabe mit hoher Priorität
angebend) ist oder nicht. Wenn die Priorität 4 ist, führt das Programm den Prozeß in einem
Schritt S845 aus. Andernfalls führt
das Programm den Prozeß in
einem Schritt S820 aus.
-
In
dem Schritt S820 stellt das Programm fest, ob die bei der Betriebsmittelaneignung
gespeicherte Priorität
5 (die Aufgabe mit mittlerer Priorität angebend) ist oder nicht.
Wenn die Priorität
5 ist, führt
das Programm den Prozeß in
einem Schritt S840 aus. Andernfalls führt das Programm den Prozeß in einem Schritt
S825 aus.
-
In
dem Schritt S825 stellt das Programm fest, ob die bei der Betriebsmittelaneignung
gespeicherte Priorität
6 (die Aufgabe mit niedriger Priorität angebend) ist oder nicht.
Wenn die Priorität
6 ist, führt
das Programm den Prozeß in
einem Schritt S835 aus. Andernfalls führt das Programm den Prozeß in einem Schritt
S830 aus.
-
In
dem Schritt S830 schreibt das Programm den Wert der Unterbrechungspriorität für die Aufgabe mit
niedriger Priorität
zu 6 neu. Das heißt,
die Priorität ist äquivalent zu
der Unterbrechungspriorität 53 für das sechste
Unterbrechungsregister 146.
-
In
dem Schritt S835 schreibt das Programm den Wert der Unterbrechungspriorität für die Aufgabe mit
mittlerer Priorität
zu 5 neu. Das heißt,
die Priorität ist äquivalent
zu der Unterbrechungspriorität 53 für das fünfte Unterbrechungsregister 145.
-
In
dem Schritt S840 schreibt das Programm den Wert der Unterbrechungspriorität für die Aufgabe mit
hoher Priorität
zu 4 neu. Das heißt,
die Priorität
ist äquivalent
zu der Unterbrechungspriorität 53 für das vierte
Unterbrechungsregister 144.
-
In
dem Schritt S845 schreibt das Programm den Wert der Unterbrechungspriorität für die Aufgabe mit
höchster
Priorität
zu 3 neu. Das heißt,
die Priorität ist äquivalent
zu der Unterbrechungspriorität 53 für das dritte
Unterbrechungsregister 143.
-
In
dem Schritt S850 gibt der Prozeß eine
Unterbrechung frei. Dieser Prozeß ist äquivalent zu dem Schritt S350
in 10. Das Programm beendet daraufhin die Ausführung. Die
CPU 15 beginnt wieder mit der Ausführung des Aufrufaufgabenebenenprozesses.
-
Es
wird ein Unterbrechungssignal mit einer Priorität, die höher als die Unterbrechungspriorität des das
Betriebsmittelzugriffsfreigabeprogramm aufrufenden Aufgabenebenenprozesses
ist und niedriger als die oder gleich der Priorität des zu
erhaltenden Betriebsmittels ist, angenommen. Die CPU 15 führt das
vorstehend angeführte
Betriebsmittelaneignungsprogramm aus, um den Wert der Unterbrechungspriorität 53 für das dem
Unterbrechungssignal entsprechende Unterbrechungsregister zu dem
Wert zurückzuführen, der
verwendet wurde, bevor das Betriebsmittelaneignungsprogramm aufgerufen
wurde. Folglich enthalten die Unterbrechungsprioritäten 53 der
dritten bis siebten Unterbrechungsregister 143 bis 147 Werte
3, 4, 5, 6 bzw. 7. Der Aufgabenebenenprozeß weist zum Beispiel eine höhere Unterbrechungspriorität auf und
verwendet das Betriebsmittel. Es kann eine Anforderung zum Ausgeben
eines einem derartigen Aufgabenebenenprozeß entsprechenden Unterbrechungssignals
zwischen einem Aufruf des Betriebsmittelaneignungsprogramms und einem
Aufruf des Betriebsmittelzugriffsfreigabeprogramms vorhanden sein.
In diesem Fall wird der Aufgabenebenenprozeß unmittelbar nach der Ausführung des
Betriebsmittelzugriffsfreigabeprogramms ausgeführt. Das heißt, die
anderen Aufgabenebenenprozesse werden dazu in die Lage versetzt,
das Betriebsmittel zu verwenden.
-
(Viertes Ausführungsbeispiel)
-
Das
folgende beschreibt ein viertes Ausführungsbeispiel der vorliegenden
Erfindung. Die folgende Beschreibung deckt nur einen Unterschied
des vierten Ausführungsbeispiels
gegenüber
dem ersten Ausführungsbeispiel
ab. Gemäß dem ersten
Ausführungsbeispiel
ist dem gleichen Unterbrechungssignal eine Vielzahl von Typen von
Aufgabenebenenprozessen zugewiesen. Gemäß dem vierten Ausführungsbeispiel
ist einem Unterbrechungssignal nur ein Aufgabenebenenprozeß zugewiesen.
Darüber
hinaus ist einer Priorität
nur ein Aufgabenebenenprozeß zugewiesen.
Daher ist die gesamte Anzahl von in der CPU 15 ausgeführten Aufgabenebenenprozessen gleich
der Anzahl von Unterbrechungsregistern für die Aufgabenebenenprozesse.
-
Wenn
jeder Aufgabenebenenprozeß in
dieser Art und Weise mit der Priorität und dem Unterbrechungssignal
versehen ist, wird die Aufgabenplanung unter Verwendung der Mehrfachunterbrechungsfunktion
ausgeführt. 17 zeigt
ein Datenspeicherformat für
Unterbrechungsregister in der Unterbrechungssteuereinrichtung 14 gemäß dem vierten
Ausführungsbeispiel.
-
Die
Unterbrechungssteuereinrichtung 14 enthält ein Unterbrechungsregister
für Aufgabenebenenprozesse.
Das Unterbrechungsregister umfaßt Datenbereiche
wie beispielsweise einen Unterbrechungszustandsmerker 51,
einen Unterbrechungsmaskenzustandsmerker 52, eine Unterbrechungspriorität 53 und
einen Zähler 54.
Die gleichen Daten wie bei dem ersten Ausführungsbeispiel beschrieben sind
in dem Unterbrechungszustandsmerker 51, dem Unterbrechungsmaskenzustandsmerker 52 und
der Unterbrechungspriorität 53 enthalten.
-
Die
Operationen der Unterbrechungssteuereinrichtung 14 gemäß dem vierten
Ausführungsbeispiel
sind die gleichen wie die der Unterbrechungssteuereinrichtung 14 gemäß dem ersten
Ausführungsbeispiel.
Die Unterbrechungssteuereinrichtung 14 schreibt jedoch
die in dem Unterbrechungsregister gespeicherten Werte wie folgt
neu, wenn sie eine Anforderung zum Ausgeben eines Unterbrechungssignals
empfängt
und ein Unterbrechungsanforderungslöschungssignal empfängt.
-
Es
wird angenommen, daß die
Unterbrechungssteuereinrichtung 14 ein eine Anforderung zum
Ausgeben eines Unterbrechungssignals für den Aufgabenebenenprozeß darstellendes
Signal von der CPU 15 empfängt. Basierend auf in dem Anforderungssignal
enthaltenen Informationen stellt die Unterbrechungssteuereinrichtung 14 fest,
welches der nullten bis siebten Unterbrechungsregister 140 bis 147 das
Anforderungssignal bestimmt. Der Zähler 54 des bestimmten
Unterbrechungsregisters speichert einen Wert. Die Unterbrechungssteuereinrichtung 14 erhöht diesen
Wert um eine Stufe (zum Beispiel 1). Basierend auf der Anforderung
zum Ausgeben des Unterbrechungssignals zu dieser Zeit werden der Unterbrechungszustandsmerker 51 und
der Unterbrechungsmaskenzustandsmerker 52 auf Werte 1 (ein)
bzw. 0 (aus) eingestellt.
-
Die
Unterbrechungssteuereinrichtung 14 empfängt ein Unterbrechungsanforderungslöschungssignal
von der CPU 15 oder der Schaltung für externe Eingabe/Ausgabe 11.
Basierend auf in dem Anforderungssignal enthaltenen Informationen stellt
die Unterbrechungssteuereinrichtung 14 fest, welches der
nullten bis siebten Unterbrechungsregister 140 bis 147 das
Anforderungssignal bestimmt. Der Zähler 54 des bestimmten
Unterbrechungsregisters speichert einen Wert. Die Unterbrechungssteuereinrichtung 14 erniedrigt
diesen Wert um eine Stufe (zum Beispiel 1). Der Zähler 54 kann
einen Wert (zum Beispiel 0) enthalten, der den Zustand angibt, daß die Anforderung
für das
dem Unterbrechungsregister entsprechende Unterbrechungssignal nicht
angenommen wird. In einem derartigen Fall schreibt die Unterbrechungssteuereinrichtung 14 den
Wert des Unterbrechungszustandsmerkers 51 zu 0 neu.
-
Diese
Operationen der Unterbrechungssteuereinrichtung 14 ermöglichen
dem Zähler 54,
als ein Zählwertspeicherträger zum
Speichern von Zähldaten
für jedes
Unterbrechungssignal zu fungieren.
-
Gemäß dem Ausführungsbeispiel
weist das RAM 16 keinen Bereich für die Bereit-Warteschlange 162 auf.
-
Mit
Bezug darauf führt
gemäß dem Ausführungsbeispiel
während
der Ausführung
der Aufgabenunterbrechung wie in 10 gezeigt
die CPU 15 den Prozeß in
dem Schritt S340 nicht aus. Statt dessen beginnt die CPU 15 in
dem Schritt S360 nur die Ausführung
der dem empfangenen Unterbrechungssignal entsprechenden Aufgabe.
-
Ferner
führt die
CPU 15 während
der Ausführung
der Aktivierungsaufgabe wie in 11 gezeigt
den Prozeß in
dem Schritt S420 nicht aus.
-
Überdies
führt die
CPU 15 während
der Ausführung
der Beendungsaufgabe wie in 12 gezeigt
den Prozeß in
den Schritten 530, 570, 580 und 590 nicht
aus. Statt dessen führt
die CPU 15 den Prozeß in
dem Schritt S520 und daraufhin in dem Schritt S540 aus.
-
Bei
diesem Aufbau empfängt
die Unterbrechungssteuereinrichtung 14 eine Anforderung
zum Ausgeben des einem Aufgabenebenenprozeß entsprechenden Unterbrechungssignals.
Die Unterbrechungssteuereinrichtung 14 erhöht einen
Zähldatenwert
für das
Unterbrechungssignal um eine Stufe. Die Unterbrechungssteuereinrichtung 14 wird
dazu konfiguriert, den Zähldatenwert
für das
Unterbrechungssignal zu einem bestimmten Zeitpunkt nach der Ausgabe
eines gegebenen Unterbrechungssignals zu der Anweisungsausführungseinheit
um eine Stufe zu erniedrigen. Genauer wird der bestimmte Zeitpunkt zum
Ausführen
des Prozesses in dem Schritt S540 in 12 verwendet.
-
In
dieser Art und Weise spiegelt der Zähler 54 selbst dann
die Anzahl von Ausführungsanforderungen
wider, wenn eine Anforderung zum Beginnen einer Vielzahl von Vorkommen
des gleichen Aufgabenebenenprozeßprogramms ausgegeben wird.
-
Daher
kann die CPU 15 die Aufgabenplanung für eine Vielzahl von Vorkommen
des gleichen Aufgabenebenenprozesses ohne Verwendung der Bereit-Warteschlange 162 realisieren.
Gemäß dem Ausführungsbeispiel
muß die
CPU 15 Anforderungen nicht durch Software (genauer den
vorstehend angeführten
Prozeß in
den Schritten 340, 360 und 570) zählen, um
den gleichen Aufgabenebenenprozeß auszuführen. Verarbeitungslasten bei
der CPU 15 werden vermindert. Es besteht kein Bedarf daran, festzustellen
(genauer dem vorstehend angeführten Prozeß in 530),
ob ein Unterbrechungssignal angefordert werden muß oder nicht.
Verarbeitungslasten bei der CPU 15 werden weiter vermindert.
-
Es
kann vorzuziehen sein, den bestimmten Zeitpunkt nach dem Ausgeben
eines Unterbrechungssignals zu der Anweisungsausführungseinheit
derart festzusetzen, daß der
Zeitpunkt einem Zeitpunkt zum Ausgeben des Unterbrechungssignals entspricht.
-
(Andere Ausführungsbeispiele)
-
Bei
den vorstehend angeführten
Ausführungsbeispielen
führen
der Kontextsicherungsprozeß in
dem Schritt S320 in 10 und der Kontextwiederherstellungsprozeß in dem
Schritt S550 in 12 Lese- und Schreibprozesse
zum Bewegen von Daten zwischen den Registern der CPU 15 und
dem RAM 16 aus. Die vorliegende Erfindung muß jedoch
nicht immer darauf beschränkt
sein.
-
Ein
bekannter Mikrocomputer weist zum Beispiel eine Vielzahl von CPU-Registersätzen zum
Sichern oder Wiederherstellen von Kontexten, wenn ein Unterbrechungssignal
auftritt, auf. Zum Sichern von Kontexten, wenn eine Unterbrechung
auftritt, ändert
der Mikrocomputer den zu verwendenden derzeitigen Registersatz zu
einem anderen Registersatz. Zum Wiederherstellen von Kontexten nimmt
der Mikrocomputer die Verwendung des ursprünglichen Registersatzes wieder
auf.
-
Es
kann vorzuziehen sein, einen derartigen Mikrocomputer mit einer
Vielzahl von Registersätzen als
den Mikrocomputer 12 gemäß den vorstehend angeführten Ausführungsbeispielen
zu verwenden. In dem vorstehend beschriebenen Schritt S320 kann der
derzeit verwendete Registersatz zu einem anderen nicht verwendeten
Registersatz geändert
werden. In dem Schritt S570 kann der derzeit verwendete Registersatz
zu dem zuletzt verwendeten Registersatz geändert werden. In dieser Art
und Weise ist es möglich,
den Bedarf für
den Prozeß daran
zu beseitigen, Daten zwischen dem RAM 16 und den Registern
zu bewegen, wenn Kontexte gesichert und wiederhergestellt werden.
-
Es
wird für
den Fachmann offensichtlich sein, daß verschiedene Änderungen
bei den vorstehend beschriebenen Ausführungsbeispielen der vorliegenden
Erfindung ausgebildet werden können.
Der Schutzbereich der vorliegenden Erfindung soll jedoch durch die
folgenden Patentansprüche
festgelegt werden.
-
Eine
Unterbrechungssteuereinrichtung (14) bestimmt das am höchsten priorisierte
Unterbrechungssignal einer Vielzahl von zur Ausgabe angeforderten
Unterbrechungssignalen und gibt es aus. Eine CPU (15) führt einen
einem Unterbrechungssignal von der Unterbrechungssteuereinrichtung
entsprechenden Prozeß aus
und führt
durch ein OS bereitgestellte Programme aus. Basierend auf einem Empfang
einer Anforderung zum Ausführen
eines Aufgabenebenenprozesses fordert die CPU die Unterbrechungssteuereinrichtung
zum Ausgeben eines dem Aufgabenebenenprozeß entsprechenden Unterbrechungssignals
auf.