-
Die
vorliegende Erfindung betrifft ein Verfahren zur Teilinitialisierung
eines Echtzeit-Rechengeräts,
das über
ein Kommunikationssystem mit weiteren Rechengeräten in Verbindung steht. In
dem Rechengerät
werden verschiedene Funktionalitäten durch
Abarbeiten eines Computerprogramms in unterschiedlichen festen Zeitrastern
realisiert. Eine Kommunikation zu den weiteren Rechengeräten wird in
einem festen Kommunikationsraster ausgeführt. Zeitraster, die langsamer
als das Kommunikationsraster sind, können aus dem Computerprogramm heraus über das
Kommunikationsraster beeinflusst, insbesondere gestartet und beendet,
werden.
-
Die
Erfindung betrifft außerdem
ein Echtzeit-Rechengerät,
das über
ein Kommunikationssystem mit weiteren Rechengeräten in Verbindung steht. In
dem Rechengerät
sind verschiedene Funktionalitäten
durch Abarbeiten eines Computerprogramms in unterschiedlichen festen
Zeitrastern realisierbar. Das Rechengerät kommuniziert mit den weiteren
Rechengeräten
in einem festen Kommunikationsraster. Zeitraster, die langsamer
als das Kommunikationsraster sind, sind aus dem Computerprogramm
heraus über
das Kommunikationsraster beeinflussbar.
-
Die
vorliegende Erfindung betrifft schließlich auch ein auf einem Rechengerät, insbesondere
auf einem Mikroprozessor eines Steuergeräts für ein Kraftfahrzeug, ablauffähiges Initialisierungs-Programm
zur Initialisierung eines Teils eines ebenfalls auf dem Rechengerät ablauffähigen Computerprogramms.
-
Aus
der
DE 42 03 704 C3 ist
ein Verfahren zur Initialisierung eines Rechnernetzwerkes umfassend
mehrere Rechengeräte,
die über
ein Kommunikationssystem miteinander in Verbindung stehen. In dieser
Druckschrift ist jedoch weder davon die Rede, dass es sich um Echtzeit-Rechengeräte handelt, noch
dass in den Rechengeräten
ein Computerprogramm in unterschiedlichen festen Zeitrastern abgearbeitet
wird.
-
Aus
der
DE 40 37 143 A1 ist
ein Rechennetzwerk umfassend mehrere Rechengeräte, die über ein Kommunikationssystem
miteinander in Verbindung stehen, bekannt. In dieser Druckschrift
wird beschrieben, wie ein zentrales Rechengerät nach dem Einschalten des
Rechennetzwerkes den übrigen
Rechengeräten
Adressen zuteilt, so dass danach eine Kommunikation zwischen den
Rechengeräten
möglich
ist. In dieser Druckschrift ist weder offenbart, dass das Rechennetzwerk
Echtzeit-Rechengeräte umfasst,
noch das in den Rechengeräten
Computerprogramme in unterschiedlichen festen Zeitrastern abgearbeitet
werden.
-
Aus
der
DE 195 00 957
A1 ist ein Verfahren zur Steuerung von technischen Vorgängen oder
Prozessen auf Grundlage eines multitaskingfähigen Echtzeit-Betriebssystems
bekannt. Zur Realisierung der Steuerung wird ein Computerprogramm
auf einem Rechengerät,
insbesondere auf einem Mikrorechner eines Steuergeräts für ein Kraftfahrzeug,
abgearbeitet. Das Computerprogramm ist in mehrere Aufgabenprogramme
(sog. Tasks) unterteilt, denen jeweils verschiedene Prioritäten zugeordnet
sind. In dieser Druckschrift wird von einem Stand der Technik ausgegangen,
bei dem im Rahmen der Abarbeitung des Computerprogramms höherpriore
Tasks niederpriore Tasks jederzeit unterbrechen können (sog. preemptives
Scheduling oder preemptives Multitasking). Demgegenüber wird
in der
DE 195 00 957
A1 vorgeschlagen, dass die höherprioren Tasks die niederprioren
Tasks nur an bestimmten, von einem Anwender bei der Erstellung des
Computerprogramms festgelegten Programmstellen unterbrechen kann. Bezüglich des
Aufbaus und der Funktionsweise eines multitaskingfähigen Echtzeit-Betriebssystems wird
ausdrücklich
auf diese Druckschrift Bezug genommen.
-
Aus
dem Stand der Technik ist es außerdem bekannt,
mehrere Rechengeräte
in einem Rechengeräteverbund
anzuordnen, in dem die Rechengeräte
untereinander über
mindestens ein Kommunikationssystem miteinander verbunden sind.
Ein Rechengeräteverbund
wird beispielsweise in einem Kraftfahrzeug eingesetzt. Weit verbreitet
ist der Einsatz eines Rechengeräteverbunds
jedoch auch in Schienen- oder Luftfahrzeugen. Als Kommunikationssysteme
werden vorzugsweise Bussysteme eingesetzt, über die Informativen zwischen
den Rechengeräten nach
einem bestimmten Protokoll ausgetauscht werden können, beispielsweise CAN (Controller
Area Network)-, TTCAN (Time Triggered CAN)- oder FlexRay.
-
Beim
Einsatz der Rechengeräte
in Kraftfahrzeugen sind die Rechengeräte als Steuergeräte ausgebildet.
Die einzelnen Steuergeräte
haben verschiedene Aufgaben und steuern und/oder regeln Komponenten
oder Funktionen in dem Fahrzeug. In den Steuergeräten wird
zur Erfüllung
ihrer bestimmungsgemäßen Funktionalitäten ein
Computerprogramm in unterschiedlichen festen Zeitrastern abgearbeitet. Wichtige
oder sicherheitskritische Computerprogramme (z.B. zur Steuerung
der Einspritzung einer Brennkraftmaschine) werden vorzugsweise in schnellen
Zeitrastern abgearbeitet, wohingegen weniger kritische Computerprogramme
(z.B. zur Realisierung einer Lambda-Regelung einer Abgasreinigungsanlage)
in langsameren Zeitrastern ablaufen können. Die schnellen Zeitraster
werden auch als preemptive Zeitraster bezeichnet. Sie können andere Zeitraster
unterbrechen. Die langsameren Zeitraster werden auch als kooperative
Zeitraster bezeichnet. Die preemptiven Zeitraster werden aufgesetzt,
d.h. durch Hardware-Timer gestartet, wohingegen die kooperativen
Zeitraster nicht durch Timer, sondern durch Software gestartet werden.
-
Ein
Computerprogramm oder bestimmte Teile davon können sich in verschiedenen
Zuständen befinden.
Bei ausgeschalteter Zündung
ist das Steuergerät
in einem deaktivierten Zustand, in dem keine Versorgungsspannung
an dem Steuergerät
anliegt. Durch Einschalten der Zündung
wird die Versorgungsspannung zumindest teilweise an das Steuergerät angelegt
und es geht in einen aktiven Zustand über. Mit dem Einschalten der
Zündung
sollte auch das auf dem Steuergerät ablauffähige Computerprogramm initialisiert
werden, damit es für
eine Abarbeitung bereit steht. Im einfachsten Fall wird das gesamte
Computerprogramm beim Einschalten der Zündung initialisiert und steht
zur Abarbeitung bereit.
-
Mit
zunehmendem Funktionsumfang der Computerprogramme kann es jedoch
vorkommen, dass nicht das gesamte Computerprogramm, sondern nur
Teile davon initialisiert werden. Ein Teilinitialisierung kann beispielsweise
aus Zeitgründen
erforderlich sein, da von dem Betätigen der Zündung bis zum Starten der Brennkraftmaschine
kein allzu lange Zeit verstreichen darf, so dass die Zeit zwischen
dem Betätigen
der Zündung
und dem Starten der Brennkraftmaschine nicht zur Initialisierung
des gesamten Computerprogramms ausreicht. Die Initialisierung kann
aber auch bewusst auf diejenigen Teile des Computerprogramms beschränkt werden,
die zunächst
benötigt
werden. Die zunächst
nicht initialisierten Teile des Computerprogramms können dann später bei
Bedarf oder sobald die dafür
erforderliche Zeit zur Verfügung
steht oder nach Ablauf einer vorgebbaren Zeitdauer nachträglich teilinitialisiert
werden.
-
Bei
der Teilinitialisierung kann entweder ein weiterer Teil des Computerprogramms
oder der gesamte restliche Teil des Computerprogramms nachträglich initialisiert
werden. Das gesamte Computerprogramm kann also auch im Rahmen mehrerer nacheinander
ausgeführter
Teilinitialisierung initialisiert werden.
-
Eine
elementare Anforderung an Steuergeräte in einem Steuergeräteverbund
ist die Aufrechterhaltung der Kommunikation mit den anderen Steuergeräten des
Verbunds über
das Kommunikationssystem, da sonst der Ablauf der Computerprogramme und
damit die Steuerungs- und/oder Regelungsaufgaben der Steuergeräte empfindlich
gestört
werden. Die gängigen
Protokolle (z.B. CAN, TTCAN, FlexRay, etc.) benötigen ein jeweils spezifisches
zeitliches Verhalten. Die Umsetzung in der Steuergerätesoftware
bedient sich zur Darstellung dieses Verhaltens einem Echtzeitbetriebssystem
mit festen Zeitrastern. Auf den festen Zeitrastern wird das zeitliche
Verhalten aufgebaut. Die laufende Kommunikation erfordert eine Aufrechterhaltung
der festen Zeitraster. Als Folge der Notwendigkeit von festen Zeitrastern
für die Aufrechterhaltung
der Kommunikation müssen
diese Zeitraster für
die gesamte Dauer des Betriebs des Steuergeräts in einem teilinitialisierten
Zustand, während
der nachträglichen
Teilinitialisierung und auch nach Abschluss der Teilinitialisierung
ungestört
aktiv bleiben.
-
Theoretisch
wäre eine
Teilinitialisierung beispielsweise dadurch realisierbar, dass die
verschiedenen nachträglich
zu initialisierenden Funktionen des Computerprogramms aus dem nicht
initialisierten Zustand gezielt in den initialisierten Zustand überführt werden,
wobei der Übergang
in jedem Einzelfall derart erfolgen muss, dass die laufende Kommunikation
nicht beeinträchtigt
wird. Ein derartiges gezieltes Überführen jeder
einzelnen Funktion in den initialisierten Zustand ist bei einem
Umfang größerer Computerprogramme
mit mehreren 100 Funktionen, einigen 1.000 Programmmodulen und einigen
100.000 Programmzeilen an Quellcode, wie er beispielsweise in Steuergeräten von
Kraftfahrzeugen vorliegt, nicht mit einem annehmbarem Aufwand und
innerhalb einer annehmbaren Zeitdauer realisierbar.
-
Der
vorliegenden Erfindung liegt deshalb die Aufgabe zugrunde, bei einem
Rechengerät
als Teil eines Rechengeräteverbunds
eine Möglichkeit
zu schaffen, auch relativ umfangreiche auf dem Rechengerät ablauffähige Computerprogramme
nachträglich
sicher und zuverlässig
teilinitialisieren zu können,
ohne dadurch eine Kommunikation zwischen den Rechengeräten des
Rechengeräteverbunds
zu beeinträchtigen.
-
Zur
Lösung
dieser Aufgabe schlägt
die vorliegende Erfindung ausgehend von dem Verfahren der eingangs
genannten Art vor, dass das Rechengerät zur Initialisierung eines
Teils des Computerprogramms in einen Metazustand überführt wird,
in dem
- – das
Kommunikationsraster aufrecht erhalten wird;
- – alle
zu initialisierenden Zeitraster, die langsamer als das Kommunikationsraster
sind, angehalten werden;
- – in
einer Reihenfolge von dem langsamsten zu dem schnellsten zu initialisierenden
Zeitraster hin nacheinander alle zu initialisierenden Zeitraster initialisiert
werden; und
- – nach
der Initialisierung aller zu initialisierenden Zeitraster das Kommunikationsraster
in einen initialisierten Zustand umgeschaltet wird, ohne die Kommunikation
zu den weiteren Rechengeräten zu
beeinträchtigen.
-
Vorteile der
Erfindung
-
Erfindungsgemäß wird also
vorgeschlagen, das Rechengerät
in einen Metazustand zu bringen, der zwischen einem teilinitialisierten
Zustand und einem initialisierten Zustand liegt. In dem initialisierten Zustand
kann das Computerprogramm durchaus noch nicht initialisierte Funktionen
umfassen, die dann bei einer weiteren Teilinitialisierung zu einem späteren Zeitpunkt
nachträglich
initialisiert werden können.
Es ist also denkbar, das erfindungsgemäße Verfahren mehrmals hintereinander
auf verschiedene Teile des Computerprogramms anzuwenden, bis schließlich alle
Teile initialisiert sind.
-
Ein
wichtiger Aspekt der vorliegenden Erfindung ist darin zu sehen,
dass in dem Metazustand sämtliche
zu initialisierenden Teile des Computerprogramms mit Ausnahme des
Kommunikationsrasters einfach abgeschaltet werden. Das ist ohne
eine Beeinträchtigung
der Kommunikation zwischen den Rechengeräten möglich, da die Kommunikation über das
Kommunikationsraster erfolgt und damit ein Echtzeitbetrieb aufrecht
erhalten bleibt. Durch die Abschaltung der zu initialisierenden
Zeitraster kann eine Initialisierung dieser Zeitraster ausgeführt werden,
ohne in Konflikt mit Zeitrastern aus dem teilinitialisierten Zustand
zu geraten.
-
In
dem Metazustand werden nacheinander beginnend bei den langsamen
zu den schnellen Zeitrastern hin sämtliche zu initialisierenden
Zeitraster initialisiert. Sobald alle Zeitraster bis auf das Kommunikationsraster
initialisiert sind, erfolgt der eigentliche Zustandswechsel in den
initialisierten Zustand. Dazu wird als letztes das Kommunikationsraster
initialisiert, indem es einfach auf den neuen initialisierten Zustand
umgeschaltet wird. Das Kommunikationsraster wird derart umgeschaltet,
dass die Kommunikation zwischen den Rechengeräten nicht beeinträchtigt wird.
Dies kann beispielsweise durch Umschalten von Tasktabellen erfolgen.
Danach werden alle Zeitraster wieder frei gegeben und die langsameren Zeitraster
können
im initialisierten Zustand aus dem Computerprogramm heraus über das
Kommunikationsraster beeinflusst, d.h. gestartet und beendet, werden.
-
Streng
genommen werden die Funktionalitäten
des Computerprogramms initialisiert. Da aber keine Funktionalität für sich alleine
ausgeführt
wird, sondern zusammen mit anderen Funktionalitäten ein Zeitraster bildet,
scheint es aus der Sicht des Betriebssystems als würden die
Zeitraster initialisiert. Tatsächlich
sind es aber einzelne funktionale Blöcke innerhalb des Zeitrasters,
während
andere Blöcke
innerhalb derselben Zeitraster unverändert von dem teilinitialisierten
in den initialisierten Zustand übernommen
werden können.
Da aber ein Zeitraster immer die Summe der beinhalteten Funktionalitäten darstellt,
wird also dementsprechend mit jedem beliebigen funktionalen Teil
innerhalb eines Zeitrasters auch das beinhaltende Zeitraster initialisiert.
Das Zeitraster stellt gewissermaßen eine Art Überfunktionalität dar. Aus
diesem Grund wird vorliegend von der (Teil-) Initialisierung der
Zeitraster und nicht der Funktionalitäten gesprochen.
-
Gemäß einer
vorteilhaften Weiterbildung der vorliegenden Erfindung wird vorgeschlagen,
dass die zu initialisierenden Zeitraster während des Metazustandes aperiodisch
initialisiert werden. Durch die Abschaltung der zu initialisierenden
Zeitraster kann eine aperiodische Initialisierung dieser Zeitraster ausgeführt werden,
ohne in Konflikt mit Zeitrastern aus dem teilinitialisierten Zustand
zu geraten. Die Kommunikation zwischen den Rechengeräten wird durch
die aperiodische Initialisierung nicht beeinträchtigt, da die Kommunikation über das
Kommunikationsraster erfolgt und damit ein Echtzeitbetrieb aufrecht
erhalten bleibt. Durch diese Weiterbildung kann der Tatsache Rechnung
getragen werden, dass die Initialisierung der einzelnen Zeitraster
u.U. unterschiedlich lange dauert.
-
Gemäß einer
bevorzugten Ausführungsform der
vorliegenden Erfindung wird vorgeschlagen, dass in dem Metazustand über das
Kommunikationsraster ein erstes Aufgabenprogramm (sog. Task) zur
Initialisierung zumindest des langsamsten zu initialisierenden Zeitrasters
aufgerufen wird. Gemäß dieser
Ausführungsform
erfolgt die Initialisierung der zu initialisierenden Zeitraster
also nicht unmittelbar aus dem Kommunikationsraster heraus, sondern
mittelbar über
mindestens eine Task.
-
Vorteilhafterweise
wird jedes zu initialisierende Zeitraster von einem eigenen Aufgabenprogramm (Task)
initialisiert, wobei jeweils aus einem abgearbeiteten Aufgabenprogramm
heraus ein weiteres Aufgabenprogramm zur Initialisierung des nächsten Zeitrasters
in der vorgegebenen Reihenfolge aufgerufen wird bis alle zu initialisierenden
Zeitraster initialisiert sind.
-
Als
eine weitere Lösung
der Aufgabe der vorliegenden Erfindung wird ausgehend von dem Echtzeit-Rechengerät der eingangs
genannten Art vorgeschlagen, dass das Rechengerät Mittel zur Initialisierung
eines Teils des Computerprogramms aufweist, welche das Rechengerät zur Teilinitialisierung
in einen Metazustand versetzen, wobei die Mittel zur Teilinitialisierung
umfassen:
- – Mittel
zur Aufrechterhaltung des Kommunikationsrasters;
- – Mittel
zum Anhalten aller zu initialisierenden Zeitraster, die langsamer
als das Kommunikationsraster sind;
- – Mittel
zur Initialisierung aller zu initialisierenden Zeitraster nacheinander
in einer Reihenfolge von dem langsamsten zu dem schnellsten zu initialisierenden
Zeitraster hin; und
- – Mittel
zum Umschalten des Kommunikationsrasters in einen initialisierten
Zustand nach der Initialisierung aller zu initialisierenden Zeitraster,
ohne die Kommunikation zu den weiteren Rechengeräten zu beeinträchtigen.
-
Gemäß einer
vorteilhaften Weiterbildung der vorliegenden Erfindung wird vorgeschlagen,
dass das Rechengerät
Mittel zur Ausführung
des erfindungsgemäßen Verfahrens
aufweist.
-
Gemäß einer
bevorzugten Ausführungsform der
vorliegenden Erfindung wird vorgeschlagen, dass die Mittel zur Initialisierung
eines Teils des Computerprogramms als ein Initialisierungs-Programm
realisiert sind. Das Initialisierungs-Programm ist vorzugsweise
auf einem Speicherelement, insbesondere auf einem Read-Only-Memory,
einem Random-Access-Memory oder einem Flash-Memory, abgelegt. Das
Initialisierungs-Programm wird vorzugsweise durch ein bestimmtes
auslösendes
Ereignis, z.B. Betätigung
der Klemme 15 (Betätigung
der Zündung
in einem Kraftfahrzeug) oder Aufruf einer bestimmten noch nicht
initialisierten Funktionalität
des Computerprogramms, ausgelöst.
Das Initialisierungs-Programm hält
zunächst
sämtliche
zu initialisierenden Zeitraster mit Ausnahme des Kommunikationsrasters an.
Anschließend
wird über
das Kommunikationsraster eine erste Initialisierungstask aufgerufen.
Diese Task beginnt mit der Teilinitialisierung und initialisiert das
langsamste zu initialisierende Zeitraster. Nach Beendigung der ersten
Task wird eine zweite Task aufgerufen, welche die Teilinitialisierung
fortsetzt und das zweitlangsamste Zeitraster initialisiert. Nach
Beendigung der zweiten Task werden nacheinander weitere Tasks zur
Initialisierung der übrigen
Zeitraster in der vorgegebenen Reihenfolge aufgerufen, bis das schnellste
zu initialisierende Zeitraster, das jedoch langsamer als das Kommunikationsraster
ist, initialisiert wurde. Anschließend sorgt das Initialisierungs-Programm
dafür,
dass als letztes das Kommunikationsraster von dem teilinitialisierten
Zustand in den initialisierten Zustand umgeschaltet wird, ohne dass
die Echtzeitkommunikation beeinträchtigt oder unterbrochen wird.
-
Gemäß einer
besonders bevorzugten Ausführungsform
der Erfindung wird vorgeschlagen, dass das Rechengerät als ein
Steuergerät
für ein Kraftfahrzeug
zur Steuerung und/oder Regelung bestimmter Kraftfahrzeug-Funktionen
ausgebildet ist. Insbesondere bei Kraftfahrzeug-Steuergeräten bietet das
erfindungsgemäße Verfahren
aufgrund der umfangreichen Funktionalitäten der dort eingesetzten Computerprogramme
enorme Vorteile. Mit dem erfindungsgemäßen Verfahren ist eine sichere
und zuverlässige
Teilinitialisierung eines Computerprogramms mit einem großen Funktionsumfang,
wie es in einem Kraftfahrzeug-Steuergerät eingesetzt wird, praktisch überhaupt
erst möglich.
-
Von
besonderer Bedeutung ist die Realisierung des erfindungsgemäßen Verfahrens
in der Form eines Initialisierungs-Programms, das auf einem Rechengerät, insbesondere
auf einem Mikroprozessor eines Steuergeräts für ein Kraftfahrzeug, ablauffähig ist.
Das Initialisierungs-Programm ist zur Initialisierung eines Teils
eines ebenfalls auf dem Rechengerät ablauffähigen Computerprogramms vorgesehen. Dabei
ist das Initialisierungs-Programm zur Ausführung des erfindungsgemäßen Verfahrens
geeignet, wenn es auf dem Rechengerät abläuft. In diesem Fall wird also
die Erfindung durch ein Initialisierungs-Programm realisiert, so
dass dieses Programm in gleicher Weise die Erfindung darstellt wie
das Verfahren, zu dessen Ausführung
das Programm geeignet ist.
-
Gemäß einer
bevorzugten Weiterbildung der vorliegenden Erfindung wird vorgeschlagen,
dass das Initialisierungs-Programm
auf einem Speicherelement gespeichert ist. Als Speicherelement kann insbesondere
ein elektrisches Speichermedium zur Anwendung kommen, beispielsweise
ein Read-Only-Memory, ein Random-Access-Memory oder ein Flash-Memory.
-
Zeichnungen
-
Weitere
Merkmale, Anwendungsmöglichkeiten
und Vorteile der Erfindung ergeben sich aus der nachfolgenden Beschreibung
von Ausführungsbeispielen
der Erfindung, die in der Zeichnung dargestellt sind. Dabei bilden
alle beschriebenen oder dargestellten Merkmale für sich oder in beliebiger Kombination
den Gegenstand der Erfindung, unabhängig von ihrer Zusammenfassung
in den Patentansprüchen
oder deren Rückbeziehung
sowie unabhängig von
ihrer Formulierung bzw. Darstellung in der Beschreibung bzw. in
der Zeichnung. Es zeigen:
-
1:
ein Ablaufdiagramm eines erfindungsgemäßen Verfahrens zur Teilinitialisierung
eines Echtzeit-Rechengeräts;
-
2:
einen Rechengeräteverbund
umfassend mehrere Echtzeit-Rechengeräte, die über ein Kommunikationssystem
miteinander in Verbindung stehen; und
-
3:
ein erfindungsgemäßes Echtzeit-Rechengerät zur Teilinitialisierung
eines auf dem Rechengerät
ablauffähigen
Computerprogramms.
-
Beschreibung
der Ausführungsbeispiele
-
Die
vorliegende Erfindung geht aus von mehreren Echtzeit-Rechengeräten 1,
die über
ein Kommunikationssystem 2 miteinander in Verbindung stehen
(vgl. 2). Ein solcher Rechnergeräteverbund wird beispielsweise
in einem Kraftfahrzeug eingesetzt, wobei die Rechengeräte 1 dann
als Steuergeräte
ausgebildet sind. Die einzelnen Steuergeräte 1 haben verschiedene
Aufgaben und Steuern und/oder Regeln bestimmte Komponenten und/oder
Funktionen in dem Kraftfahrzeug. Über das Kommunikationssystem 2 können die
Steuergeräte 1 nach
dem CAN(Controller Area Network)-Protokoll
oder nach einem beliebig anderen Protokoll untereinander Daten austauschen.
-
In
den Steuergeräten 1 werden
zur Erfüllung ihrer
bestimmungsgemäßen Steuerungs-
bzw. Regelungsfunktion Computerprogramme in unterschiedlichen festen
Zeitrastern mit einer Wiederholfrequenz von 10ms, 20ms, 50ms, 1000ms
abgearbeitet (vgl. 1). Wichtige oder sicherheitskritische
Funktionen, z.B. zur Steuerung der Einspritzung einer Brennkraftmaschine
eines Kraftfahrzeugs, werden vorzugsweise in schnellen Zeitrastern
(z.B. 10ms) abgearbeitet. Weniger kritische Funktionen, z.B. zur Realisierung
einer Lambda-Regelung einer Abgasreinigungsanlage eines Kraftfahrzeugs,
können
dagegen in langsameren Zeitrastern (z.B. 1000ms) ablaufen. Die schnellen
Zeitraster werden auch als preemptive Zeitraster bezeichnet. Sie
können
andere Zeitraster unterbrechen. Die langsameren Zeitraster werden
auch als kooperative Zeitraster bezeichnet. Die preemptiven Zeitraster
werden aufgesetzt, d.h. durch Hardware-Timer gestartet, wohingegen die
kooperativen Zeitraster nicht durch Timer, sondern durch Software
gestartet werden.
-
Ein
Computerprogramm oder bestimmte Teile davon, sogenannte Aufgabenprogramme
oder Tasks, können
sich in verschiedenen Zuständen
A und C befinden (vgl. 1). Der Zustand A entspricht beispielsweise
einem teilinitialisierten Zustand, in dem ausgewählte Steuergeräte 1 in
einen Stromsparmodus geschaltet und ausgewählte Steuergerätefunktionen
teilinitialisiert sind. Der teilinitialisierte Zustand A kann beispielsweise
dadurch ausgelöst
werden, dass sich bei einem sogenannten Keyless-Go-System eine berechtigte Person dem abgestellten
Kraftfahrzeug nähert.
Die Berechtigung der Person wird von dem Kraftfahrzeug beispielsweise über eine
entsprechend codierte Karte, welche die Person mit sich führt, berührungslos
detektiert. Es ist aber auch denkbar, dass ein Steuergerät 1 in
den teilinitialisierten Zustand A wechselt, sobald in einem deaktivierten
Zustand bestimmte Komponenten (z.B. das Autoradio) in dem Kraftfahrzeug
betätigt
werden. Durch die Teilinitialisierung ausgewählter Steuergeräte 1 in
dem Kraftfahrzeug kann ein nachfolgender Startvorgang (Betätigung der
Zündung,
Klemme 15) deutlich verkürzt werden.
-
Der
Zustand C entspricht einem Normalbetrieb eines Steuergerätes 1,
in dem das auf dem Steuergerät 1 ablaufende
Computerprogramm vollständig
initialisiert ist und die vollständige
Funktionalität
des Steuergerätes 1 zur
Verfügung
steht. Es ist jedoch auch durchaus denkbar, dass in dem Zustand C
zwar mehr Zeitraster initialisiert sind als in dem Zustand A, dass
aber noch nicht alle Zeitraster 10, 20, 50,...1000 initialisiert
sind. In diesem Fall könnte
das erfindungsgemäße Verfahren
zur Teilinitialisierung noch ein- oder mehrmals durchlaufen werden,
bis schließlich
eine vollständige
Initialisierung des Steuergeräts 1 erzielt
ist. Das erfindungsgemäße Verfahren
zur Teilinitialisierung kann also sequentiell mehrmals hintereinander
ausgeführt
werden, wobei bei jeder Ausführung
zusätzliche
Zeitraster 10, 20, 50,...1000 initialisiert
werden.
-
Um
das Kraftfahrzeug aus dem Zustand A heraus zu starten, wird zunächst die
Zündung
(Klemme 15) betätigt.
Das oder die Steuergeräte 1 des Kraftfahrzeugs
müssen
vor dem Start in den Normalbetrieb (Zustand C) überführt werden. Dazu ist es erforderlich,
dass die in dem Zustand A noch nicht initialisierten Steuergeräte 1,
die aber zur Ausführung des
Startvorgangs benötigt
werden, nachträglich
initialisiert werden. Das erfindungsgemäße Verfahren dient zur nachträglichen
Initialisierung bestimmter Steuergeräte oder Steuergerätefunktionen,
indem die dafür
erforderlichen Zeitraster in den Normalbetrieb überführt werden.
-
Das
erfindungsgemäße Verfahren
wird nachfolgend anhand der 1 näher erläutert: Zunächst befindet
sich das Steuergerät 1 in
dem teilinitialisierten Zustand A (t < t1). In dem
Zustand A ist die Zündung
(Klemme 15) noch nicht aktiviert und es fehlen noch wichtige
Versorgungsspannungen. In den Zeitrastern 10, 20, 50,
...1000 sind nur die für
den Zustand A notwendigen Funktionalitäten konfiguriert. Dies entspricht
nicht dem vollständigen
Funktionsumfang für
den Normalbetrieb C. Es wurden nur ausgewählte Rechnerkerne von Rechengeräten 1 und
die zum Aufbau des Kommunikationssystem 2 notwendigen Computerprogrammteile
initialisiert. Alle übrigen
Teile des Computerprogramms sind noch nicht initialisiert. Es laufen
mehrere Zeitraster 10, 20, 50,...1000,
welche zu dem Zustand A gehören und
daher alle in der gleichen Weise schraffiert sind. Die Zeitraster 10, 20, 50...1000 werden periodisch aufgerufen,
was dadurch erkennbar ist, dass sie von links beginnend mehrfach
abgearbeitet werden. Die in 1 dargestellten
Zeitraster 10, 20, 50,...1000 haben
von unten nach oben hin zunehmende Betriebssystemprioritäten.
-
Das
Steuergerät 1 nimmt
an dem Rechnerverbund teil und verwendet das 10ms-Zeitraster 10 als
Kommunikationsraster. Das Kommunikationsraster darf keine zu großen zeitlichen
Schwankungen (sog. Jittering) oder gar Unterbrechungen aufweisen.
-
Über einen
Kommunikationscontroller (z.B. CAN-Bus) empfängt das Steuergerät 1 zum
Zeitpunkt t1 von einem zentralen Gateway-Modul
des Rechnerverbundes über
das Kommunikationssystem 2 eine Botschaft, wonach die Zündung aktiviert
worden ist, sog. Klemmenstatuswechsel (KL15 über CAN). Dadurch werden die
nachfolgenden Aktionen in dem Steuergerät 1 veranlasst:
- a) Schließen
des Hauptrelais des Kraftfahrzeugs, damit die Versorgungsspannungen überall in
dem Steuergerät 1 anliegen;
- b) nachträgliches
Initialisieren der noch nicht initialisierten Hardware und Software
des Steuergeräts 1;
- c) Wechsel so schnell wie möglich
in den Normalzustand C; und
- d) dabei stets unverändertes
Weiterbetreiben der Kommunikation über das Kommunikationssystem 2 mittels
des Kommunikationsrasters 10.
-
Um
diese Anforderungen zu erfüllen,
führt das
Steuergerät 1 bzw.
das auf dem Steuergerät 1 abgearbeitete
Initialisierungs-Programm die folgenden Schritte zur Teilinitialisierung
aus:
Das Steuergerät 1 wird
aus dem teilinitialisierten Zustand A in einen Metazustand B umgeschaltet.
In dem Metazustand B werden alle noch nicht initialisierten Hardware-
und Software-Teile des Steuergerätes 1 initialisiert,
um schnellstmöglich
in den Normalzustand C zu wechseln. Gleichzeitig wird die Kommunikation
in dem Metazustand B unverändert aufrechterhalten.
-
Zunächst werden
alle zu initialisierenden Zeitraster 20, 50,...1000 mit
Ausnahme des Kommunikationsrasters 10 angehalten. Dies
kann beispielsweise dadurch erfolgen, dass sie nicht mehr über das Kommunikationsraster 10 aufgerufen
werden, wie das in dem teilinitialisierten Zustand A der Fall war (vgl.
Pfeile von dem Kommunikationsraster 10 zu den Zeitrastern 20, 50,...1000,
durch welche der Aufruf dieser Zeitraster 20, 50,...1000 symbolisiert
wird). Lediglich das Kommunikationsraster 10 des teilinitialisierten
Zustands A wird in dem Metazustand B weiter periodisch abgearbeitet
(vgl. Schraffur der Kommunikationsraster 10 in dem Metazustand
B, welche der Schraffur in dem teilinitialisierten Zustand A entspricht).
Während
des Metazustands B können
also für
den teilinitialisierten Zustand A fremde Zeitraster, die beispielsweise
zu dem Normalbetrieb C gehören, aperiodisch
aufgerufen werden, ohne dabei in Konflikt mit Zeitrastern des teilinitialisierten
Zustands A zu geraten.
-
Gleichzeitig
geht über
das Kommunikationsraster 10 eine Botschaft (vgl. Pfeil 3)
an eine Hintergrundtask 4 mit einer niedrigen Betriebssystempriorität, das Hauptrelais
zu schließen,
auf stabile Spannungsverhältnisse
in dem Steuergerät 1 zu
warten und nacheinander alle Zeitraster 20, 50,...1000 des Normalbetriebs
C in der Reihenfolge von langsamen zu schnellen Zeitrastern hin
zu initialisieren. Dazu wird aus der Hintergrundtask 4 heraus
eine Initialisierungstask 5 aufgerufen (vgl. Pfeil 6),
welche das langsamste Zeitraster 1000 initialisiert. Nach
erfolgter Initialisierung des Zeitrasters 1000 werden aus der
Initialisierungstask 5 heraus weitere Initialisierungstasks 7, 8 aufgerufen
(vgl. Pfeile 9), welche die schnelleren Zeitraster 20, 50 initialisieren.
Während des
Metazustandes B werden also die Zeitraster 20, 50,...1000 mit
der vollständigen
Funktionalität
des Normalbetriebs C sukzessive abgearbeitet, d.h. in den Normalzustand
C überführt. Der
Wechsel von dem teilinitialisierten Zustand A in den Normalzustand
C ist durch die unterschiedliche Schraffierung der initialisierten
Zeitraster 10, 20, 50,...1000 erkennbar.
Damit wird der Normalzustand C initialisiert, während das Kommunikationsraster 10 des
teilinitialisierten Zustands A weiterhin den Echtzeitbetrieb aufrechterhält.
-
Nach
der vollständigen
Initialisierung der Zeitraster 20, 50,...1000 bis
zu dem 20ms-Zeitraster 20 wird eine weitere Hintergrundtask 11 aufgerufen (vgl.
Pfeil 12), aus der heraus der eigentliche Zustandswechsel
in dem Steuergerät 1 zum
Zeitpunkt t2 erfolgt. Das Kommunikationsraster 10 wird
in den neuen Modus C geschaltet, indem beispielsweise Tasktabellen
für den
teilinitialisierten Zustand A durch Tasktabellen für den Normalzustand
C ersetzt werden. Anschließend
werden wieder alle Zeitraster 20, 50,...1000 freigegeben.
Dadurch wird das Kommunikationsraster 10 des teilinitialisierten
Zustands A durch das Kommunikationsraster 10 des Normalzustandes
C ersetzt, und die langsameren Zeitraster 20, 50,...1000 können in
dem Normalzustand C wieder aus dem Kommunikationsraster 10 heraus
aufgerufen werden. Zudem können
die höherprioren, schnelleren
Zeitraster (nicht dargestellt) wieder gestartet werden.
-
Nun
läuft das
gesamte System in dem Normalzustand C so als habe es den teilinitialisierten
Zustand A mit der unvollständigen
Spannungsversorgung und den Metazustand B mit der Initialisierung nie
gegeben. Trotzdem wurde über
die gesamte Teilinitialisierungsphase hinweg die Echtzeit des Kommunikationsbetriebs
stets aufrechterhalten, was durch die Äquidistanz der Kommunikationsraster 10 während des
Metazustands B sichtbar ist.
-
In 3 ist
ein Echtzeit-Rechengerät 1,
das nach dem erfindungsgemäßen Verfahren
teilinitialisiert werden kann, dargestellt. Das Rechengerät 1 ist vorzugsweise
als ein Kraftfahrzeug-Steuergerät
ausgebildet. Das Steuergerät 1 ist über einen
Kommunikationskontroller 13, der beispielsweise als eine CAN-Bus-Schnittstelle
ausgebildet ist, an das Kommunikationssystem 2 angeschlossen.
In dem Steuergerät 1 ist
ein Mikroprozessor 14 vorgesehen, der zur Abarbeitung eines
Computerprogramms 18 geeignet ist. Durch Abarbeitung des
Computerprogramms 18 auf dem Mikroprozessor 14 kann
das Steuergerät 1 seine
bestimmungsgemäße Steuerungs-
und/oder Regelungsfunktion erfüllen.
Durch die Abarbeitung des Computerprogramms 18 wird außerdem die Kommunikation
des Steuergeräts 1 mit
anderen Steuergeräten 1 des
Rechnerverbundes über
das Kommunikationssystem 2 koordiniert.
-
Das
Computerprogramm 18 ist auf einem Speicherelement 15 gespeichert,
das vorzugsweise als ein elektrisches Speichermedium, beispielsweise als
ein Read-Only-Memory, ein Random-Access-Memory oder als ein Flash-Memory, ausgebildet
ist. Zur Abarbeitung des Computerprogramms 18 in dem Mikroprozessor 14 wird
es entweder als ganzes oder befehlsweise über eine Datenverbindung 16 zu
dem Mikroprozessor 14 übertragen.
Die Ergebnisse von Berechnungen, die von dem Mikroprozessor 14 ausgeführt wurden,
oder Daten, die über
das Kommunikationssystem 2 und den Kommunikationskontroller 13 von
anderen Steuergeräten 1 empfangen
wurden, können über die
Datenverbindung 16 in dem Speicherelement 15 abgelegt
werden.
-
Zusätzlich zu
dem Computerprogramm 18 ist in dem Speicherelement 15 auch
ein Initialisierungs-Programm 17 abgelegt, das zu dem Zeitpunkt t1 (vgl. 1) aufgerufen
und zur Abarbeitung über die
Datenverbindung 16 an den Mikroprozessor 14 übertragen
wird. Das Initialisierungs-Programm 17 ist zur
Ausführung
des erfindungsgemäßen Verfahrens geeignet,
wenn es auf dem Mikroprozessor 14 abläuft.