-
Die
Erfindung betrifft ein Verfahren zum Speichern von Informationsdaten
gemäß dem Oberbegriff
des Anspruchs 1, eine Vorrichtung, um dieses Verfahren durchzuführen, ein
Computerprogramm sowie ein Computerprogrammprodukt.
-
Stand der Technik
-
Viele
automotive Steuergeräte
sind updatefähig,
das heißt,
es kann eine neue Software-Version aufgespielt werden. Dieser Vorgang
wird auch als Flashen bezeichnet, da der Code einer neuen Software-Version
im Flash-ROM (Read Only Memory) abgelegt wird. Meist existieren
im Flash-Speicher zwei separate, ausführbare Programme, nämlich der Bootloader
und die Fahrsoftware.
-
Normalerweise
wird gefordert oder durch die Entwicklung bedingt, dass Daten im
Bootloader geschrieben werden müssen,
die auch von der Fahrsoftware gelesen werden können und umgekehrt. Außerdem können diese
Daten für
eine Rückläuferanalyse
relevant sein.
-
Diese
Funktionalistät
wird bislang durch Schreiben dieser Daten in einen Datenspeicher,
beispielsweise in Form eines EEPROM oder Flash-ROM (Daten-Flash)
durch den Bootloader realisiert. Mit der Einführung der Flash-Technologie
zur Abspeicherung von persistenten, also nicht flüchtigen
Daten wurden Dateiverwaltungssysteme notwendig, bei denen die Daten
immer wieder an anderen Stellen abgelegt werden. Dadurch sind in
der Software komplexere Verwaltungsalgorithmen für Daten notwendig geworden.
Außerdem
sind bei manchen Prozessoren Timing-Probleme durch die Verwendung
von Flash zur Speicherung von Daten aufgetreten.
-
Vor
diesem Hintergrund werden mit der vorliegenden Erfindung ein Verfahren
zum Speichern von Informationsdaten, weiterhin eine Vorrichtung, die
dieses Verfahren verwendet sowie schließlich ein entsprechendes Computerprogramm
und ein Computerprogrammprodukt gemäß den unabhängigen Patentansprüchen vorgestellt.
Vorteilhafte Ausgestaltungen ergeben sich aus den jeweiligen Unteransprüchen und
der nachfolgenden Beschreibung.
-
Vorteile der Erfindung
-
Der
vorliegenden Erfindung liegt die Erkenntnis zu Grunde, dass Informationsdaten
als Bestandteil eines Betriebsprogramms abgespeichert werden können. Dadurch
können
erforderliche Informationsdaten zuverlässig abgelegt und ausgewertet
werden. Wird das Verfahren im Zusammenhang mit einem Bootloader
eingesetzt, so lässt
sich eine Notwendigkeit des Schreibens nicht-flüchtiger Daten durch den Bootloader
in einen wie oben erwähnten
Datenspeicher umgehen.
-
Die
vorliegende Erfindung schafft ein Verfahren zum Speichern von Informationsdaten
in einen Speicher mit mindestens zwei Speicherbereichen, welches
dadurch gekennzeichnet ist, dass die Informationsdaten und ein erster
Abschnitt eines Betriebsprogramms in einen der mindestens zwei Speicherbereiche
des Speichers und die Informationsdaten und ein zweiter Abschnitt
des Betriebsprogramms in einen weiteren der mindestens zwei Speicherbereiche
des Speichers geschrieben werden.
-
Gemäß einer
Ausgestaltung können
in dem einen der mindestens zwei Speicherbereiche bereits vorhandene
Informationsdaten überprüft werden,
bevor der weitere der mindestens zwei Speicherbereiche beschrieben
wird. Dadurch kann sichergestellt werden, dass auch bei einem fehlgeschlagenen Schreibversuch
kein Verlust der Informationsdaten auftritt.
-
Ferner
kann eine Anordnung der Informationsdaten in den mindestens zwei
Speicherbereichen vorbestimmt sein. Dadurch lässt sich das Schreiben der
Informationsdaten und des Betriebsprogramms in den Speicher steuern.
-
Das
Betriebsprogramm kann Informationen über die Anordnung der Informationsdaten
in den mindestens zwei Speicherbereichen aufweisen. Dies erleichtert
es dem Betriebsprogramm, auf die Informationsdaten zuzugreifen.
-
Gemäß einer
Ausgestaltung kann das Betriebsprogramm Lücken aufweisen, in die die
Informationsdaten geschrieben werden können. Somit können geeignete
Abschnitte im Betriebsprogramm vordefiniert werden, an denen die
Informationsdaten eingebunden werden können.
-
Das
Verfahren kann folgende Schritte aufweisen:
Löschen eines
ersten Speicherbereichs des Speichers;
Schreiben der Informationsdaten
in den ersten Speicherbereich;
Schreiben des ersten Abschnitts
des Betriebsprogramms in den ersten Speicherbereich;
Löschen eines
zweiten Speicherbereichs des Speichers;
Schreiben der Informationsdaten
in den zweiten Speicherbereich; und
Schreiben des zweiten Abschnitts
des Betriebsprogramms in den zweiten Speicherbereich.
-
Diese
Vorgehensweise eignet sich für
den Fall, dass die Informationsdaten im zweiten Speicherbereich
intakt sind.
-
Alternativ
kann das Verfahren folgende Schritte aufweisen:
Löschen eines
zweiten Speicherbereichs des Speichers;
Schreiben der Informationsdaten
in den zweiten Speicherbereich;
Löschen eines ersten Speicherbereichs
des Speichers;
Schreiben der Informationsdaten in den ersten Speicherbereich;
Schreiben
des zweiten Abschnitts des Betriebsprogramms in den zweiten Speicherbereich;
und
Schreiben des ersten Abschnitts des Betriebsprogramms in
den ersten Speicherbereich.
-
Diese
Vorgehensweise eignet sich beispielsweise für den Fall, dass die Informationsdaten
im zweiten Speicherbereich nicht intakt sind.
-
Ferner
kann ein dritter Speicherbereich vorherige Informationsdaten aufweist.
Dadurch kann der Speicher sowohl neue als auch vorherige Informationsdaten
aufweisen.
-
Zumindest
die in einen der mindestens zwei Speicherbereiche geschriebenen
Informationsdaten können
mit weiteren Informationsdaten verglichen werden. Somit können beispielsweise
Rückschlüsse auf
fehlgeschlagene Schreibversuche gezogen werden.
-
Das
Verfahren kann von einem Startprogramm eines Steuergerätes ausführbar sein
und es kann sich bei dem Betriebsprogramm um eine Betriebssoftware
des Steuergeräts
und beiden Informationsdaten um nicht-flüchtige Daten handeln. Dadurch
kann vermieden werden, dass das Schreiben von nichtflüchtigen
Daten im Bootloader eines Steuergerätes zu Schwierigkeiten mit
der Architektur des Steuergerätes
oder zu Problemen mit dem Systemverhalten führt.
-
Bei
dem Speicher kann es sich um einen Flash-Speicher und bei den Speicherbereichen
um Sektoren des Flash-Speichers handeln.
-
Eine
erfindungsgemäße Vorrichtung
führt alle
Schritte des erfindungsgemäßen Verfahrens durch.
-
Das
erfindungsgemäße Computerprogramm mit
Programmcodemitteln ist dazu ausgelegt alle Schritte des erfindungsgemäßen Verfahrens
durchzuführen,
wenn dieses Computerprogramm auf einem Computer oder einer entsprechenden
Recheneinheit, insbesondere einer erfindungsgemäßen Vorrichtung, durchgeführt wird.
-
Das
erfindungsgemäße Computerprogrammprodukt
mit Programmcodemitteln, die auf einem computerlesbaren Datenträger gespeichert sind,
ist zur Durchführung
des erfindungsgemäßen Verfahrens
vorgesehen, wenn dieses Computerprogramm auf einem Computer oder
einer entsprechenden Recheneinheit, insbesondere einer erfindungsgemäßen Vorrichtung,
durchgeführt
wird.
-
Weitere
Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der
Beschreibung und den beiliegenden Zeichnungen.
-
Es
versteht sich, daß die
vorstehend genannten und die nachstehend noch zu erläuternden Merkmale
nicht nur in der jeweils angegebenen Kombination, sondern auch in
anderen Kombinationen oder in Alleinstellung verwendbar sind, ohne
den Rahmen der vorliegenden Erfindung zu verlassen.
-
Die
Erfindung ist anhand von Ausführungsbeispielen
in den Zeichnungen schematisch dargestellt und wird im Folgenden
unter Bezugnahme auf die Zeichnungen ausführlich beschrieben.
-
Figurenbeschreibung
-
1 zeigt
eine schematische Darstellung einer Ausführungsform der erfindungsgemäßen Vorrichtung;
-
2 zeigt
eine schematische Darstellung eines Speichers gemäß einer
erfindungsgemäßen Ausführungsform;
-
3 zeigt
eine schematische Darstellung von Speicherbereichen gemäß einer
erfindungsgemäßen Ausführungsform;
und
-
4 zeigt
eine schematische Darstellung einer Ausführungsform des erfindungsgemäßen Verfahrens.
-
1 zeigt
eine Vorrichtung mit einer Schreibeinrichtung 102 und einem
Speicher 104 gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Die Schreibeinrichtung ist ausgebildet,
um Informationsdaten 106 in den Speicher 104 zu
schreiben. Ferner ist die Schreibeinrichtung 102 ausgebildet,
um ein Betriebsprogramm in den Speicher 104 zu schreiben.
Der Speicher 104 ist ausgebildet, um die Informationsdaten 106 und
das Betriebsprogramm zu speichern. Der Speicher 104 weist
mindestens zwei Speicherbereiche auf. Die Informationsdaten 106 werden
in jeden der mindestens zwei Speicherbereiche des Speichers 104 gespeichert. Das
Betriebsprogramm kann in mehrere Abschnitte aufgeteilt werden, die
auf die mindestens zwei Speicherbereiche des Speichers verteilt
werden können.
-
Bei
dem Speicher 104 kann es sich um einen Flash-Speicher handeln.
Der Flash-Speicher. ist in eine Mehrzahl von Spei cherbereichen oder
Sektoren unterteilt. Ein Sektor weist bei einem Automotive-Speicher
im allgemeinen eine Größe von einigen hundert
Bytes bis zu wenigen Kilobytes auf. Jeder Sektor weist eine Mehrzahl
von Speicherzellen auf. Jede Speicherzelle in einem Sektor kann
einmalig beschrieben werden. Vor dem nächsten Beschreiben muss der
gesamte Sektor gelöscht
werden.
-
Die
Vorrichtung kann beispielsweise Teil eines automotive Steuerungsgerätes sein.
In diesem Fall kann es sich bei dem Betriebsprogramm um eine Fahrsoftware
handeln, die beispielsweise von einem Startprogramm in Form eines
Bootloader in den Speicher 104 geschrieben wird. Bei der
Schreibeinrichtung 102 kann es sich um einen Prozessor
handeln, der ausgebildet ist, um den Bootloader auszuführen.
-
Der
Bootloader kann die Aufgabe haben, nach einem Systemstart zu entscheiden,
ob die Fahrsoftware gestartet oder ersetzt werden soll und gegebenenfalls
ein Ersetzen der Fahrsoftware durchzuführen. Der Bootloader kann entweder
direkt nach dem Systemstart zur Ausführung kommen oder kann durch
die Fahrsoftware aufgerufen werden. Es kann ebenfalls möglich sein,
den Bootloader durch eine neue Software-Version zu ersetzen. Da der Bootloader
im Allgemeinen nicht ausgetauscht werden soll, sollte er einfach
konzipiert sein, damit er möglichst keine
Fehler enthält.
-
Die
Fahrsoftware kann eine von dem Steuergerät geforderte Funktionalität erfüllen.
-
Bei
den Informationsdaten 106 kann es sich um nichtflüchtige Daten
handeln. Solche Daten können
beispielsweise Informationen über
die Identifikation einer Werkstatt und eines Werkstatt-Testers,
z. B. eines Diagnose-Geräts,
ein Datum und eine Art eines Updates, eine Software-Version oder
Software-Versionen und eine Version von Datenständen sowie eine Anzahl aller,
erfolgloser oder erfolgreicher Softwareupdates, aufweisen.
-
2 zeigt
eine schematische Darstellung eines Flash-Speichers 104. Gemäß diesem
Ausführungsbeispiel
weist der Speicher 104 acht Sektoren auf. Von den Sektoren
sind die ersten vier sowie der siebte Sektor mit Bezugszeichen 206a, 206b, 206c, 206d, 206g versehen.
-
Die
Sektoren 206a, 206b, 206c, 206d, 206g sind
durch senkrechte Linien gekennzeichnet. Im ersten Sektor 206a kann
der Bootloader angeordnet sein. Beim Abspeichern einer neuen Fahrsoftware wird
diese im Allgemeinen in mehreren Sektoren des Flash-Speichers 104 abgelegt.
Beispielsweise kann die Fahrsoftware in weiteren fünf Sektoren 206c, 206d... 206g gespeichert
werden. Dazu kann die Fahrsoftware in einzelne Abschnitte Fahr-SW
1, ..., Fahr-SW 5 unterteilt sein. Beispielsweise kann der Abschnitt
Fahr-SW 1 in dem dritten Sektor 206c und der Abschnitt
Fahr-SW 5 in dem siebten Sektor 206g des Speichers 104 gespeichert
sein.
-
3 zeigt
die Sektoren 206c, 206d des in 2 gezeigten
Speichers 104. In beiden Sektoren 206c, 206d sind
die Informationsdaten 106 gespeichert. Der erste Abschnitt
der Fahrsoftware Fahr-SW 1 314 ist in dem Sektor 206c gespeichert.
Der zweite Abschnitt der Fahrsoftware Fahr-SW 2 316 ist
in dem Sektor 206d gespeichert. Gemäß diesem Ausführungsbeispiel
sind die Informationsdaten 106 jeweils am Anfang eines
Sektors 206c, 206d angeordnet und die Abschnitte 312, 314 der
Fahrsoftware füllen die
Sektoren 206c, 206d auf. Es sei darauf hingewiesen,
dass die Daten 106 auch am Ende der Sektoren 206c und/oder 206d stehen
können.
Ausserdem können
weitere Sektoren davor und/oder dazwischen eingefügt werden.
-
Das
erfindungsgemäße Verfahren
zum Speichern von Informationsdaten in einen Speicher basiert auf
der Abspeicherung der Daten durch den Bootloader als Bestandteil
der Fahrsoftware und einem nachfolgenden Vergleich dieser Daten
durch die Fahrsoftware mit ihren zuvor gespeicherten Daten.
-
Gemäß einem
Ausführungsbeispiel
sind in der Fahrsoftware keine vorgesehenen ungenutzten Stellen
vorhanden. Der Bootloader nutzt in diesem Fall nicht die volle Sektorgröße aus,
um die Fahrsoftware 314, 316 abzuspeichern. In
den nicht benutzen Bereichen werden die Daten 106 abgelegt.
Diese Stellen der Informationsablage sollen der Fahrsoftware bekannt
sein, sofern diese darauf zugreifen soll. Des Weiteren soll durch
die Compilierung, das Linken und die Integration sichergestellt
werden, dass die Fahrsoftware mit diesen „Lücken” funktioniert.
-
Gemäß einem
alternativen Ausführungsbeispiel
können
in der Fahrsoftware Lücken
vorhanden sein, die dem Bootloader bekannt sind. Die Lücken können fester
Größe sein.
In die Lücken
werden entsprechende Daten im Rahmen des Software Update eingetragen.
-
In
beiden Ausführungsbeispielen
legt der Bootloader bestimmte Daten 106 an zuvor bekannten
Stellen zusammen mit der Fahrsoftware 314, 316 in
mindestens zwei Sektoren 206c, 206d des Flash 104 ab,
wie es in 3 für die zwei Sektoren 206c, 206d veranschaulicht
ist.
-
In 2 ist
das Ausführungsbeispiel
dargestellt, bei dem in der Fahrsoftware keine Lücken vorhanden sind. Bei dem
anderen Ausführungsbeispiel, bei
dem die Fahrsoftware Lücken
aufweist, können die
Daten 106 an einer oder mehreren Stellen in der Fahrsoftware
abgespeichert werden. Natürlich
können
die Daten 106 auch an anderen Stellen, beispielsweise am
Ende der Sektoren 206c, 206d stehen oder aufgeteilt
werden.
-
Bei
dem erfindungsgemäßen Verfahren
handelt es sich um ein sicheres Verfahren, bei dem in zwei Sektoren 206c, 206d zusammen
mit der Fahrsoftware 314, 316 Daten 106 abgespeichert
werden. Für
die Zuverlässigkeit
des erfindungsgemäßen Verfahrens
ist die Reihenfolge der Schreibvorgänge wichtig, in der insbesondere
die Informationsdaten 106 in den Speicher 104 geschrieben
werden. Ein wichtiges zu berücksichtigendes
Szenario sind mehrere, aufeinander folgende Spannungsausfälle. Diese
dürfen
nicht dazu führen,
dass Information, wie beispielsweise die Anzahl der erfolglosen
Update-Versuche, die in den Daten 106 enthalten sein kann,
verloren geht.
-
4 zeigt
ein Ablaufdiagramm mit Schritten des erfindungsgemäßen Verfahrens
gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. Ein erster Verfahrensschritt 452 kann
die Anweisung „Lösche Sektor
1” aufweisen.
Dabei kann es sich um den in 3 gezeigten
Sektor 206c handeln. Ein zweiter Verfahrensschritt 454 kann
die Anweisung „Schreibe
Daten in Sektor 1” aufweisen.
Ein dritter Verfahrensschritt 456 kann die Anweisung „Schreibe
Fahrsoftware in Sektor 1” aufweisen.
Ein vierter Verfahrensschritt 458 kann die Anweisung „Lösche Sektor
2” aufweisen.
Dabei kann es sich um den in 3 gezeigten
Sektor 206d handeln. Ein fünfter Verfahrensschritt 460 kann
die Anweisung „Schreibe
Daten in Sektor 2” aufweisen.
Ein sechster Verfahrensschritt 462 kann die Anweisung „Schreibe Fahrsoftware
in Sektor 2” aufweisen.
-
Diese
Reihenfolge der Verfahrensschritte 452, 454, 456, 458, 460, 462 soll
nur dann verwendet werden, wenn die Daten 106 in Sektor
2 intakt sind. Dies kann beispielsweise durch eine Checksumme überprüft werden.
Sind die Daten 106 in Sektor 2 nicht intakt, so soll die
Reihenfolge der Verfahrensschritte 452, 454, 456, 458, 460, 462 geändert werden.
-
Beispielsweise
kann in diesem Fall zuerst der Schritt „Lösche Sektor 2”, dann
der Schritt „Schreibe
Daten in Sektor 2”,
dann der Schritt „Lösche Sektor
1”, dann
der Schritt „Schreibe
Daten in Sektor 1”,
dann der Schritt „Schreibe
Fahrsoftware in Sektor 1” und
schließlich
der Schritt „Schreibe
Fahrsoftware in Sektor 2” ausgeführt werden.
Bei dieser Reihenfolge sind nach dem zweiten Schritt die neuen Daten 106 bereits
auf dem Speichermedium 104 vorhanden. Sie können durch
eine Steuergeräte-Software
oder durch ein Auslesen des Speichers 104, beispielsweise
durch eine Rückläuferanalyse
ermittelt werden.
-
Gemäß weiteren
Ausführungsbeispielen sind
auch andere Reihenfolgen der Verfahrensschritte möglich. Insbesondere,
wenn mehrere Sektoren zum Abspeichern des Codes der Fahrsoftware
erforderlich sind. Wenn mehrere Sektoren benötigt beziehungsweise genutzt
werden, können
die Daten 106 auch in anderen als den ersten beiden Sektoren
abgespeichert werden.
-
Gemäß einem
weiteren Ausführungsbeispiel werden
Reihenfolgen der Verfahrensschritte definiert, die die neuen und
die vorherigen Daten 106 gleichzeitig auf dem Flash-Speicher 104 belassen.
-
Der
erfindungsgemäße Ansatz
beinhaltet neben dem Layout auf dem Flash-Speicher auch einen Vergleich
der Daten mit vorhandenen persistenten Daten durch die Fahrsoftware.
Nach einem erfolgreichen Flashen der Fahrsoftware kann diese durch Vergleich
der vom Bootloader beim Update geschriebenen Daten und der im Daten-Flash
vorhandenen persistenten Daten Rückschlüsse ziehen.
Beispielsweise können
vom Bootloader übermittelte
Daten, wie die Anzahl erfolgloser Updateversuche, verarbeitet und
in den Bereich im Daten-Flash mit den persistenten Daten übernommen
werden.
-
Neben
den bereits beschriebenen Vorteilen weist das erfindungsgemäße Verfahren
eine Reihe weiterer Vorteile auf. Insbesondere können der Bootloader und die
Softwarearchitektur einfacher werden, da der Bootloader keine persistenten
Daten im Daten-Flash abspeichern muss. Timing-Probleme, die durch
den Einsatz der Flash-Technologie für die Datenspeicherung entstehen
können,
existieren nicht im Bootloader. Es gibt insbesondere kein Warten beim
Zustandswechsel. Ferner ist es nicht erforderlich, dass der Bootloader
Code für
diese Funktionalität
enthält.
Somit kann weniger Speicher verwendet werden. Die Protokolle der
Steuergeräte
mit den Testern können
unverändert
bleiben. Der Code kann als Datenstrom von „vorne bis hinten” vom Tester
zum Steuergerät übermittelt
werden.
-
Die
beschriebenen Ausführungsbeispiele sind
nur beispielhaft gewählt
und können
miteinander kombiniert werden. Insbesondere können die beschriebenen Verfahrensschritte
auch in anderen als den beschriebenen Reihenfolgen ausgeführt werden, sofern
ein sicheres Abspeichern der Informationsdaten gewährleistet
bleibt. Zudem können
beliebige Speicher eingesetzt werden, die für den Anwendungsfall geeignet
sind, für
den das erfindungsgemäße Verfahren
eingesetzt wird.
-
- 102
- Schreibeinrichtung
- 104
- Speicher
- 106
- Informationsdaten
- 206a,
206b, 206c, 206d, 206g
- Speicherbereiche
- 314,
316
- Abschnitte
des Betriebsprogramms
- 452,
454, 456, 458, 460, 462
- Verfahrensschritte