-
Die
Erfindung betrifft ein Verfahren zum Betreiben eines Steuergerätes und
ein Steuergerät
mit zumindest einem nichtflüchtigen
Speicher.
-
In
modernen Kraftfahrzeugen gibt es eine Vielzahl von elektronischen
Steuergeräten
zur Steuerung und Regelung einzelner Fahrzeugkomponenten. Die Steuergeräte sind
typischerweise an ein gemeinsames Kommunikationsnetzwerk im Kraftfahrzeug
gekoppelt zum Austausch von Daten untereinander. Dabei gibt es Steuergeräte, die
neu programmierbar ausgebildet sind und die dadurch auf eine neuere
Version der jeweiligen Steuergerätesoftware aktualisiert
werden können.
Dabei wird ein Programmiergerät
mit dem Kommunikationsnetzwerk des Kraftfahrzeugs oder direkt mit
dem zu programmierenden Steuergerät verbunden. Mittels des Programmiergerätes wird
dem jeweiligen Steuergerät
die neue Version der Steuergerätesoftware
zur Neuprogrammierung zugeführt.
-
Die
Aufgabe, die der Erfindung zugrunde liegt, ist es, ein Verfahren
zum Betreiben eines Steuergerätes
und ein Steuergerät
zu schaffen, das eine effiziente Speichernutzung ermöglicht.
-
Die
Aufgabe wird gelöst
durch die Merkmale der unabhängigen
Patentansprüche.
Vorteilhafte Ausgestaltungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
-
Die
Erfindung zeichnet sich aus durch ein Verfahren zum Betreiben eines
Steuergerätes
und ein Steuergerät
mit zumindest einem nichtflüchtigen Speicher,
in dem ein erstes Programm gespeichert ist, wobei der nichtflüchtige Speicher
mittels einer Ausführung
des ersten Programms verwaltet wird, wobei bei dem Verfahren bzw.
der Vorrichtung das erste Programm zu mindest teilweise komprimiert
im nichtflüchtigen
Speicher abgespeichert wird und vor dessen Ausführung dekomprimiert wird.
-
Mittels
der komprimierten Abspeicherung des ersten Programms im nichtflüchtigen
Speicher, ist der dem ersten Programm zugeordnete benötigte Speicherbedarf
besonders gering. Dadurch kann der nicht vom ersten Programm belegte
Speicherplatz des nichtflüchtigen
Speichers für
andere Programme und/oder Daten zur Verfügung gestellt werden, wodurch
der gesamte vom nichtflüchtigen
Speicher zur Verfügung
gestellte Speicherplatz besonders effizient genutzt werden kann.
Mittels der Dekomprimierung kann die ursprüngliche Kodierung des ersten Programms
verlustfrei wiederhergestellt werden, so dass die dem ersten Programm
gesamte zugeordnete Funktionalität
zur Verfügung
steht. Dabei kann das dekomprimiert vorliegende erste Programm mehrere Programmfunktionen
umfassen, die zur Verwaltung des nichtflüchtigen Speichers verwendet
werden können.
Dabei ist der jeweiligen Ausführung
der Programmfunktion jeweils eine vorgegebenen Funktionalität zugeordnet.
-
Gemäß einer
vorteilhaften Ausgestaltung wird ein komprimierter Programmanteil
des ersten Programms dekomprimiert und in einen flüchtigen Speicher
kopiert und aus diesem ausgeführt.
-
Der
komprimierte Programmanteil des ersten Programms umfasst, alle Programmteile
des ersten Programms, die komprimiert im nichtflüchtigen Speicher abgespeichert
sind. Ist das gesamte erste Programm im komprimierten Zustand im
nichtflüchtigen
Speicher abgespeichert, umfasst der komprimierte Programmanteil
das ganze erste Programm.
-
Der
flüchtige
Speicher ist bevorzugt als Speicher wahlfreien Zugriffs ausgebildet,
so dass besonders geeignet der komprimierte Programmanteil des ersten
Programms nach dessen Dekomprimierung in den flüchtigen Speicher kopiert werden
kann. Dies ist besonders dann vorteilhaft, wenn der flüchtige Spei cher
zumindest teilweise unbenutzt ist und nicht durch andere Programme
und/oder Daten belegt ist.
-
Wird
der komprimierte Programmanteil des ersten Programms dekomprimiert
und in den flüchtigen
Speicher kopiert, liegt besonders vorteilhaft die gesamte Funktionalität des komprimierten
Programmanteils des ersten Programms im flüchtigen Speicher vor. Erst
im nichtkomprimierten Zustand kann der zuvor komprimiert abgespeicherte
Programmanteil des ersten Programms ausgeführt werden.
-
Gemäß einer
weiteren vorteilhaften Ausgestaltung wird der komprimierte Programmanteil
des ersten Programms zumindest teilweise dekomprimiert und in den
flüchtigen
Speicher kopiert und aus diesem ausgeführt.
-
Nach
der zumindest teilweisen Dekomprimierung des komprimierten Programmanteils
des ersten Programms und dessen Abspeicherung in dem flüchtigen
Speicher, ist das zumindest teilweise dekomprimierte erste Programm
ausführbar.
Besonders vorteilhaft werden nur die Programmanteile des ersten
Programms dekomprimiert, die auch zu einem vorgegebenen Zeitpunkt
benötigt
werden. Dadurch ergibt sich eine besonders schnelle und zugleich
effiziente Ausführung
der dekomprimierten Programmanteile des ersten Programms.
-
Gemäß einer
weiteren vorteilhaften Ausgestaltung wird der komprimierte Programmanteil
des ersten Programms mittels eines nichtkomprimierten Programmanteils
des ersten Programms dekomprimiert.
-
Umfasst
das erste Programm neben dem komprimierten Programmanteil auch nichtkomprimierte
Programmanteile, die ohne vorherige Dekomprimierung ausgeführt werden
können,
so ist es besonders vorteilhaft, wenn mittels einer Ausführung der
nichtkomprimierten Programmanteile die komprimierten Programmanteile
des ersten Programms dekomprimiert werden. Dies hat den Vorteil,
dass die eigentliche Dekomprimierungsfunktionalität dekomprimiert
im ersten Programm gespeichert ist und somit besonders schnell ausgeführt werden
kann.
-
Gemäß einer
weiteren vorteilhaften Ausgestaltung wird der nichtkomprimierte
Programmanteil des ersten Programms aus dem nichtflüchtigen
Speicher ausgeführt.
-
Eine
Ausführung
des nichtkomprimierten Programmanteils des ersten Programms aus
dem nichtflüchtigen
Speicher kann besonders schnell durchgeführt werden, da es bereits im
nichtflüchtigen Speicher
gespeichert ist. Eine besonders schnelle Dekomprimierung kann erreicht
werden, wenn mittels der Ausführung
des nichtkomprimierten Programmanteils der komprimierte Programmanteil
dekomprimiert wird.
-
Ausführungsbeispiele
der Erfindung sind im Folgenden anhand der schematischen Zeichnungen näher erläutert. Es
zeigen:
-
1 eine
schematische Darstellung eines Steuergerätes,
-
2 eine
weitere schematische Darstellung eines Steuergerätes.
-
Elemente
gleicher Konstruktion oder Funktion sind figurenübergreifend mit den gleichen
Bezugszeichen gekennzeichnet.
-
In 1 ist
ein Steuergerät
CU dargestellt, das beispielsweise Verwendung in einem Kraftfahrzeug
findet. Beispielsweise kann das Steuergerät als ESP-Steuergerät oder als
Steuergerät
zur Steuerung der Anzeigen eines Armaturenbrettes des Kraftfahrzeugs
ausgebildet sein. Das Steuergerät
CU umfasst einen nichtflüchtigen
Speicher NV_MEM und einen flüchtigen
Speicher V_MEM. Beide Speicher können beispielsweise
in einem Mikrocontroller uC integriert sein, der Bestandteil des
Steuergerätes
CU ist. Der nichtflüchtige
Speicher NV_MEM und/oder der flüchtige
Speicher V_MEM können
grundsätzlich
aber auch als externe Speicherbauelemente außerhalb des Mikrocontrollers
uC im Steuergerät
CU ausgebildet sein.
-
Der
nichtflüchtige
Speicher NV_MEM ist beispielsweise als Flash-Speicher ausgebildet
und speichert Daten und/oder Programme resistent und dauerhaft,
auch ohne permanente Spannungsversorgung. Der als Flash-Speicher
ausgebildete nichtflüchtige
Speicher NV_MEM ist neuprogrammierbar ausgebildet. Ein zuvor in
dem nichtflüchtigen
Speicher NV_MEM abgespeicherter Datensatz oder ein Programm kann
zunächst
gelöscht
werden und nachfolgend durch einen anderen Datensatz und/oder durch
eine aktuellere Version des Programms und/oder durch ein anderes
Programm ersetzt werden. Dabei ist der nichtflüchtige Speicher NV_MEM typischerweise
sektorweise löschbar
oder programmierbar ausgebildet, wobei einem Sektor mehrere Speicherzellen
zugeordnet sind.
-
Der
flüchtige
Speicher V_MEM ist beispielsweise als Random-Access-Memory (RAM-Speicher) ausgebildet.
Somit kann typischerweise jede Speicherzelle des flüchtigen
Speichers V_MEM über
Ihre zugeordnete Adresse entweder lesend oder schreibend angesprochen
werden. Der flüchtige
Speicher V_MEM muss dabei typischerweise nicht sequentiell oder
in Sektoren ausgelesen werden, sondern erlaubt einen wahlfreien
Zugriff. Dabei ist der flüchtige Speicher
V_MEM typischerweise ausgebildet, Daten und/oder Software-Programme
nur so lange abzuspeichern, so lange eine ausreichende Spannungsversorgung
des flüchtigen
Speichers V_MEM gewährleistet
ist. Der flüchtige
Speicher V_MEM ist somit nicht dazu geeignet, Daten und/oder Software-Programme dauerhaft
abzuspeichern.
-
Zusätzlich umfasst
das Steuergerät
eine Kommunikationsschnittstelle IF, die das Steuergerät beispielsweise
mit einem Kommunikationsnetzwerk des Kraftfahrzeugs koppelt. Die
Kommunikationsschnittstelle IF ist typischerweise Bestandteil des
Mikrocontrollers uC, kann grundsätzlich
aber auch außerhalb
des Mikrocontrollers uC im Steuergerät CU angeordnet sein. Über die
Kommunikationsschnittstelle IF können
Daten vom Mikrocontroller uC übermittelt,
wie auch von diesem empfangen werden. Beispielsweise ist die Kommunikationsschnittstelle
IF als Controller-Area-Network-Schnittstelle (CAN-Schnittstelle) oder
Serial-Communication-Interface (SCI-Schnittstelle) ausgebildet. Grundsätzlich sind
aber auch andere dem Fachmann bekannte Kommunikationsschnittstellen
denkbar.
-
Der
nichtflüchtige
Speicher NV_MEM umfasst in 1 zwei Programme,
die mittels einer Central-Processing-Unit CPU in dem Mikrocontroller uC
abgearbeitet werden. Das erste Programm FL ist als sogenannter Flash-Loader
ausgebildet und das zweite Programm APPL ist als Anwendungsprogramm
ausgebildet. Mittels des zweiten Programms APPL wird die Hauptfunktionalität des Steuergerätes CU umgesetzt.
Am Beispiel eines ESP-Steuergerätes wird
beispielsweise die Drehzahl-Überwachung und
Drehzahl-Regelung der Räder
des Kraftfahrzeugs mittels der Abarbeitung des zweiten Programms
APPL umgesetzt, so dass ein unkontrolliertes Ausbrechen des Kraftfahrzeugs
aus der vorgegebenen Fahrrichtung verhindert wird.
-
Das
als Flash-Loader ausgebildete erste Programm FL umfasst typischerweise
mehrere Programmfunktionen, die zum Verwalten des nichtflüchtigen
Speichers NV_MEM verwendet werden können, so z. B. zum Löschen, zum
Programmieren oder zum Verifizieren. Mittels einer Abarbeitung der
jeweiligen Programmfunktion des ersten Programms FL kann der nichtflüchtige Speicher
NV_MEM beispielsweise zumindest teilweise verifiziert und/oder gelöscht werden
und/oder eine mittels der Kommunikationsschnittstelle IF zugeführte neuere
Version des zweiten Programms APPL zumindest teilweise neuprogrammiert
werden. Grundsätzlich
sind weitere dem Fachmann bekannte Funktionen zum Verwalten des
nichtflüchtigen
Speichers NV_MEM denkbar. Die Programmfunktion des ersten Programms
FL, die abgearbeitet werden soll, wird typischerweise mittels eines
Programmiergerätes
vorgegeben, das mit dem Kommunikationsnetzwerk des Kraftfahrzeugs
gekoppelt ist. Dabei ist das erste Programm FL dazu ausgebildet,
mittels des Programmiergerätes
angesteuert zu werden und mit diesem Daten auszutauschen. Beispielsweise
umfasst das erste Programm FL Treiberfunktionen zur Ansteuerung
der Kommunikations-Schnittstelle IF, so z. B. Treiberfunktionen
der CAN-Schnittstelle. Ferner umfasst das erste Programm FL typischerweise
Initialisierungsfunktionen als Programmfunktionen, die mittels der
Treiberfunktionen die Verbindung zum Programmiergerät ermöglicht.
Die Initialisierungsfunktionen sind des Weiteren dazu ausgebildet,
die von dem Programmiergerät übermittelten
Befehle zu interpretieren und abhängig von dem empfangenen Befehl
Programmfunktionen auszuführen.
-
Ist
der nichtflüchtige
Speicher NV_MEM dazu ausgebildet, entweder einen lesenden oder einen
schreibenden Zugriff zu einem vorgegebenen Zeitpunkt zu zulassen,
wird vor der Ausführung
der jeweiligen Programmfunktion des ersten Programms FL, die einen
schreibenden Zugriff, so z. B. einen löschenden oder programmierenden
Zugriff, auf den nichtflüchtigen
Speicher NV_MEM umfasst, die jeweilige Programmfunktion vor deren
Ausführung
in den flüchtigen
Speicher V_MEM kopiert und aus diesem zur Ausführung gelesen. Programmfunktionen des
ersten Programms FL, die keinen schreibenden Zugriff auf den nichtflüchtigen
Speicher NV_MEM umfassen, können
weiterhin aus dem nichtflüchtigen Speicher
NV_MEM ausgeführt
werden.
-
Neben
den Programmfunktionen des ersten Programms FL, die in den flüchtigen
Speicher V_MEM kopiert werden, wird zur Ausführung der jeweiligen Programmfunktionen
typischerweise eine Laufzeitumgebung benötigt, die beispielsweise die Adresszuordnung
und Reservierung für
Programmvariablen im flüchtigen
Speicher V_MEM umfasst.
-
Typischerweise
sollte das ursprüngliche
erste Programm FL im nichtflüchtigen
Speicher NV_MEM durch eine Ausführung
der je weiligen Programmfunktion des ersten Programms FL nicht gelöscht und/oder
verändert
werden.
-
In 2 ist
ein erstes Ausführungsbeispiels des
Steuergerätes
CU dargestellt. Das Steuergerät CU
umfasst den nichtflüchtigen
Speicher NV_MEM mit dem in ihm abgespeicherten ersten Programm FL und
zweiten Programm APPL. Das erste Programm FL ist in einen nichtkomprimierten
Programmanteil und in einen komprimierten Programmanteil (schraffiert
dargestellt) unterteilt. Dem komprimierten Programmanteil des ersten
Programms FL sind beispielsweise die Programmfunktionen zum Verwalten des
nichtflüchtigen
Speichers NV_MEM zugeordnet, wobei mittels der Komprimierung, so
z. B. mittels ZIP-Komprimierung,
der Speicherbedarf im Vergleich zur 1 deutlich
kleiner ist, so z. B. halbiert im Vergleich zur ursprünglichen
Speichergröße des ersten Programms
FL. Dem nichtkomprimierten Programmanteil des ersten Programms FL
sind typischerweise die Initialisierungsfunktionen des ersten Programms
FL zugeordnet.
-
Am
Beispiel einer Löschfunktion,
soll im Folgenden das Verfahren zum Betreiben des Steuergerätes näher erläutert werden.
-
Wird
mittels des mit dem Kommunikationsnetzwerk des Kraftfahrzeugs verbundenen
Programmiergerätes
ein Löschbefehl
zum Löschen
des Speicherbereiches des zweiten Programms APPL vorgegeben, wird
der Löschbefehl
zunächst
mittels der Initialisierungsfunktionen des ersten Programms FL interpretiert.
Die Initialisierungsfunktionen sind typischerweise dem nichtkomprimierten
Programmanteil des ersten Programms FL zugeordnet (nichtschraffierter
Bereich in 2) und müssen somit vor deren Ausführung typischerweise
nicht dekomprimiert werden. Umfassen die Initialisierungsfunktionen
keine Programmfunktionen mit schreibenden Zugriff auf den nichtflüchtigen
Speicher NV_MEM, können
diese direkt aus dem nichtflüchtigen
Speicher NV_MEM ausgeführt
werden. Dem vom Programmiergerät übermittelten
Löschbefehl
ist typischerweise eine korrespondierende Löschfunktion im ersten Programm
FL zugeordnet, welche typischerweise im komprimierten Programmanteil
des ersten Programms FL vorliegt (schraffierter Bereich des ersten Programms
FL in 2). Somit wird vor der Ausführung der Löschfunktion, diese zunächst dekomprimiert
(durch Pfeil in 2 dargestellt).
-
Typischerweise
erfolgt die Dekomprimierung der jeweiligen Programmfunktion oder
die Dekomprimierung des gesamten komprimierten Programmsanteils
des ersten Programms FL mittels einer Dekomprimierungsfunktion,
die typischerweise im nichtkomprimierten Programmanteil des ersten
Programms FL vorliegt. Da die Dekomprimierungsfunktion typischerweise
keinen schreibenden Zugriff auf den nichtflüchtigen Speicher NV_MEM ausführt, kann
auch diese direkt aus dem nichtflüchtigen Speicher NV_MEM ausgeführt werden.
Grundsätzlich kann
die Dekomprimierungsfunktion zunächst
aber auch in den flüchtigen
Speicher V_MEM kopiert werden und danach aus diesem ausgeführt werden.
-
Die
jeweilige Initialisierungsfunktion ruft somit vor der Ausführung der
Löschfunktion
zunächst die
jeweilige Dekomprimierungsfunktion auf zur Dekomprimierung der Löschfunktion.
Mittels der Dekomprimierungsfunktion kann bevorzugt die bereits dekomprimierten
Anteile der Löschfunktion
in den flüchtigen
Speicher V_MEM kopiert werden, so dass am Ende der Dekomprimierung
die gesamte Löschfunktion
dekomprimiert im flüchtigen
Speicher V_MEM vorliegt (durch Pfeil in 2 dargestellt). Erst
jetzt ist die Löschfunktion
mittels der Central-Processing-Unit ausführbar und kann von der jeweiligen
Initialisierungsfunktion zur Ausführung aufgerufen werden.
-
Typischerweise
werden alle Programmfunktionen, die im komprimierten Programmanteil
des ersten Programms FL vorliegen, vor deren Ausführung zunächst dekomprimiert
und in den flüchtigen Speicher
V_MEM kopiert. Dabei können
im komprimierten Programmanteil des ersten Programms FL auch Programmfunktionen
vorliegen, die keinen schreibenden Zugriff auf den nichtflüchtigen
Speicher NV_MEM umfassen, so z. B. Verifikationsfunktionen und Funktionen
zum Auslesen von Versionsnummern.
-
Die
Dekomprimierung kann derart erfolgen, dass nur die mittels des Programmiergerätes vorgegebenen
Programmfunktionen vor deren Ausführung dekomprimiert werden
und in den flüchtigen
Speicher V_MEM kopiert werden. Grundsätzlich kann aber auch der gesamte
komprimierte Programmanteil des ersten Programms FL zunächst dekomprimiert
werden und in den flüchtigen
Speicher V_MEM kopiert werden, bevor vorgegebene Programmfunktionen aus
dem nun dekomprimiert vorliegenden komprimierten Programmanteil
des ersten Programms FL aus dem flüchtigen Speicher V_MEM ausgeführt werden.
-
In 3 ist
ein weiteres Ausführungsbeispiel dargestellt,
in dem das als Flash-Loader ausgebildete erste Programm FL in einem
nichtflüchtigen
Speicher ROM abgespeichert, der als Read-Only-Memory ausgebildet
ist. Das zweite Programm APPL ist weiterhin in dem als Flash-Speicher
ausgebildeten nichtflüchtigen
Speicher NV_MEM abgespeichert. Das hat den Vorteil, dass der gesamte
Speicherbereich des als Flash-Speicher ausgebildeten nichtflüchtigen
Speichers NV_MEM für
das zweite Programm APPL und/oder weiterer Datensätze zur
Verfügung
steht. Durch die zumindest teilweise komprimierte Abspeicherung
des ersten Programms FL in dem als Read-Only-Memory ausgebildeten
nichtflüchtigen
Speicher ROM, kann dieser effizient genutzt werden und sogar mit
geringerem Speicherplatz ausgebildet sein.
-
Die
Dekomprimierung der komprimierten Programmanteile des ersten Programms
FL im Read-Only-Memory erfolgt analog zur Darstellung in 2.
-
- CU
- Steuergerät
- NV_MEM
- nichtflüchtiger
Speicher
- V_MEM
- flüchtiger
Speicher
- FL
- erstes
Programm
- APPL
- zweites
Programm
- IF
- Kommunikationsschnittstelle
- CPU
- Central-Processing-Unit
- uC
- Mikrocontroller