-
TECHNISCHES GEBIET
-
Die vorliegende Offenbarung bezieht sich auf ein Firmware-Aktualisierungsverfahren eines Flash-Bootloaders in einer MCU für ein Fahrzeug.
-
STAND DER TECHNIK
-
Gegenwärtig werden verschiedene elektronische Geräte, die für den Komfort eines Benutzers vorgesehen sind, entsprechend der Entwicklung der Technik in einem Fahrzeug eingesetzt. Es gibt eine Aktualisierungstechnik (auch „Neuprogrammierung“ genannt) zur Aktualisierung der Firmware einer Mikrocontrollereinheit (engl. Micro Controller Unit - MCU), die in einem Fahrzeugsteuergerät zur Steuerung verschiedener elektronischer Geräte eingebaut ist. In jüngster Zeit ist bei der Firmware-Aktualisierungstechnik eine Technik zur Verhinderung eines Firmware-Downgrade-Angriffs gefordert, bei dem ein Angreifer versucht, die Firmware auf eine niedrigere Version als die aktuelle Firmware-Version zu aktualisieren.
-
Die Firmware der MCU ist in einem Flash-Speicher gespeichert, und die Firmware wird von einem Flash-Bootloader aktualisiert. Aufgrund der Eigenschaften des Flash-Speichers lädt der Flash-Bootloader die Firmware nach dem Flash-Löschvorgang herunter. Die Versionsinformationen der Firmware befinden sich in der Firmware, so dass die Versionsinformationen nur nach dem Herunterladen der Firmware von einer Diagnosevorrichtung auf die MCU identifiziert werden können. Dementsprechend wird im Stand der Technik die im aktuellen Flash-Speicher gespeicherte Version der Firmware gelesen, um im flüchtigen Speicher (RAM) als aktuelle Version gespeichert zu werden, und die aktuelle Version und eine neue Version der heruntergeladenen Firmware werden verglichen, um festzustellen, ob die Version herabgestuft wurde.
-
KURZFASSUNG DER ERFINDUNG
-
Wenn die im RAM gespeicherten Daten aufgrund einer während eines Firmware-Aktualisierungsprozesses unbeabsichtigt verursachten Situation mit Batterieabschaltung gelöscht werden, gehen die aktuellen Versionsinformationen der Firmware verloren, so dass es schwierig ist, festzustellen, ob die Version herabgestuft wurde.
-
Wenn z. B. die Batterieabschaltung auftritt, bevor die Firmware nach dem Flash-Löschvorgang heruntergeladen wurde, bleiben die Versionsinformationen nicht nur im Flash-Speicher, sondern auch im RAM erhalten. Als weiteres Beispiel wird festgestellt, dass die Version herabgestuft wurde, obwohl die Firmware nach dem Flash-Löschen heruntergeladen wird. In diesem Fall wird die falsche Firmware heruntergeladen, so dass eine gegenwärtig im Flash-Speicher gespeicherte Version der Firmware nicht zuverlässig ist und eine Version vor dem Herunterladen als aktuelle Version erkannt werden muss, um die nächste Firmware zu aktualisieren. Es gibt jedoch keine Möglichkeit, die Version vor dem Herunterladen als aktuelle Version zu erkennen. Als weiteres Beispiel kann die Batterieabschaltung vor der Überprüfung der Firmware-Integrität (Signaturprüfung) auftreten, obwohl die Firmware nach dem Flash-Löschen heruntergeladen und bestätigt wird, dass die Version nicht herabgestuft wurde. Die Versionsinformationen in der Firmware, deren Integrität nicht überprüft wurde, sind nicht zuverlässig, so dass die Version vor dem Herunterladen als aktuelle Version erkannt werden muss, um die nächste Firmware zu aktualisieren. Es gibt jedoch keine Möglichkeit, die Version vor dem Herunterladen als aktuelle Version zu erkennen.
-
Dementsprechend besteht eine durch die vorliegende Offenbarung zu lösende Aufgabe darin, ein Firmware-Aktualisierungsverfahren bereitzustellen, das einen Firmware-Downgrade-Angriff verhindert, indem die aktuelle Version der Firmware genau erkannt wird, auch wenn während des Firmware-Aktualisierungsprozesses eine Situation mit unbeabsichtigter Batterieabschaltung auftritt.
-
Die durch die vorliegende Offenbarung zu lösende technische Aufgabe ist nicht auf die oben genannten technischen Aufgaben beschränkt, und weitere technische Aufgaben, die oben nicht genannt sind, können von dem Fachmann anhand der nachfolgenden Beschreibungen klar verstanden werden.
-
Zur Lösung der oben beschriebenen technischen Aufgaben umfasst gemäß einem Aspekt der vorliegenden Offenbarung ein Firmware-Aktualisierungsverfahren eines Flash-Bootloaders, bei dem die Firmware einen Header-Block und einen Trailer-Block mit aktuellen Versionsinformationen enthält, Folgendes: (a) Speichern von aktuellen Versionsinformationen, die im Trailer-Block der in einem Flash-Speicher gespeicherten Firmware enthalten sind; (b) Löschen eines Sektors, in dem sich der Header-Block befindet, während ein Sektor, in dem sich der Trailer-Block befindet, im Flash-Speicher beibehalten wird; (c) Schreiben eines Header-Blocks einer herunterzuladenden neuen Firmware in den Flash-Speicher; (d) Bestimmen, ob ein Downgrade durchzuführen ist, indem aktuelle Versionsinformationen der neuen Firmware, die in dem geschriebenen Header-Block enthalten sind, und die gespeicherten aktuellen Versionsinformationen verglichen werden; (e) Löschen eines Sektors, in dem sich der Trailer-Block befindet, aus dem Flash-Speicher, wenn kein Downgrade durchgeführt wurde; und (f) Schreiben eines Trailer-Blocks der neuen Firmware in den Flash-Speicher.
-
Das Firmware-Aktualisierungsverfahren umfasst ferner das Hinzufügen der gespeicherten aktuellen Versionsinformationen in dem geschriebenen Header-Block als vorherige Versionsinformationen, wenn als Ergebnis der Bestimmung in Schritt (d) kein Downgrade durchgeführt wurde.
-
Das Firmware-Aktualisierungsverfahren umfasst ferner das Hinzufügen einer CRC, die auf den aktuellen Versionsinformationen und den vorherigen Versionsinformationen der neuen Firmware basiert, zum geschriebenen Header-Block.
-
Das Firmware-Aktualisierungsverfahren umfasst ferner das Verifizieren einer Integrität der neuen Firmware und das Hinzufügen der gespeicherten aktuellen Versionsinformationen in den geschriebenen Trailer-Block als vorherige Versionsinformationen, wenn die Integrität verifiziert ist.
-
Das Firmware-Aktualisierungsverfahren umfasst ferner das Hinzufügen einer CRC, die auf den aktuellen Versionsinformationen und den vorherigen Versionsinformationen der neuen Firmware basiert, zu dem geschriebenen Trailer-Block.
-
Das Firmware-Aktualisierungsverfahren umfasst ferner das Beibehalten eines Sektors, in dem sich der Trailer-Block befindet, in dem Flash-Speicher und das Löschen eines Sektors, in dem sich der Header-Block befindet, wenn als Ergebnis der Bestimmung in Schritt (d) kein Downgrade durchgeführt wurde.
-
Das Firmware-Aktualisierungsverfahren umfasst ferner das Löschen eines Sektors, in dem sich der Trailer-Block befindet, aus dem Flash-Speicher, wenn die Integrität nicht verifiziert ist; das Wiederherstellen eines Trailer-Blocks mit vorherigen Versionsinformationen eines im Flash-Speicher gespeicherten Header-Blocks als aktuelle Versionsinformationen; und das Löschen eines Sektors, in dem sich der Header-Block befindet, während ein Sektor, in dem sich der Trailer-Block befindet, im Flash-Speicher beibehalten wird.
-
Das Firmware-Aktualisierungsverfahren umfasst ferner das Bestätigen der Gültigkeit eines Header-Blocks einer im Flash-Speicher gespeicherten Firmware; und das Bestätigen der Gültigkeit eines Trailer-Blocks einer im Flash-Speicher gespeicherten Firmware.
-
Wenn die Gültigkeit des Header-Blocks oder des Trailer-Blocks bestätigt wird, werden aktuelle Versionsinformationen, vorherige Versionsinformationen, die im Header-Block oder Trailer-Block enthalten sind, und eine CRC, die auf den aktuellen Versionsinformationen und den vorherigen Versionsinformationen basiert, verwendet.
-
Das Firmware-Aktualisierungsverfahren umfasst ferner das Löschen eines Sektors, in dem sich der Trailer-Block befindet, aus dem Flash-Speicher vor Schritt (a), wenn die Gültigkeit des Header-Blocks bestätigt wird und bestätigt wird, dass der Trailer-Block nicht gültig ist; und das Wiederherstellen eines Trailer-Blocks mit vorherigen Versionsinformationen eines im Flash-Speicher gespeicherten Header-Blocks als aktuelle Versionsinformationen.
-
In Schritt (a) werden die aktuellen Versionsinformationen im RAM gespeichert.
-
Der Header-Block und der Trailer-Block sind so konfiguriert, dass sie sich in verschiedenen Sektoren des Flash-Speichers befinden.
-
Gemäß der vorliegenden Offenbarung wird die aktuelle Version der Firmware korrekt erkannt, auch wenn die unbeabsichtigte Situation mit Batterieabschaltung während des Firmware-Aktualisierungsprozesses auftritt, so dass ein Firmware-Downgrade-Angriff verhindert wird.
-
Die Auswirkungen der vorliegenden Offenbarung sind nicht auf die oben genannten Auswirkungen beschränkt, und weitere Auswirkungen, die oben nicht genannt sind, können von dem Fachmann anhand der folgenden Beschreibungen klar verstanden werden.
-
Die vorstehende Zusammenfassung dient lediglich der Veranschaulichung und soll in keiner Weise einschränkend sein. Zusätzlich zu den oben beschriebenen illustrativen Aspekten, Ausführungsformen und Merkmalen werden weitere Aspekte, Ausführungsformen und Merkmale durch Bezugnahme auf die Zeichnungen und die nachfolgende ausführliche Beschreibung ersichtlich.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
- 1 ist eine Ansicht, die einen schematischen Aufbau einer MCU für ein Fahrzeug gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung zeigt;
- 2 zeigt einen Aufbau einer herunterzuladenden Firmware gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung;
- 3 zeigt einen Aufbau einer normalerweise in einem Flash-Speicher neuprogrammierten Firmware gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung;
- 4A und 4B zeigen Flussdiagramme eines Firmware-Aktualisierungsverfahrens gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung;
- 5A bis 5K sind Ansichten zur Erläuterung eines Prozessbeispiels zur erfolgreichen Durchführung der Firmware-Neuprogrammierung gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung;
- 6A und 6B sind Ansichten zur Erläuterung eines Prozessbeispiels zur Durchführung einer Firmware-Neuprogrammierung nach dem Auftreten der Batterieabschaltung an einem Punkt A in 4A;
- 7A und 7B sind Ansichten zur Erläuterung eines Prozessbeispiels zur Durchführung einer Firmware-Neuprogrammierung nach dem Auftreten der Batterieabschaltung an einem Punkt B von 4B;
- 8A bis 8C sind Ansichten zur Erläuterung eines Prozessbeispiels zur Durchführung einer Firmware-Neuprogrammierung nach dem Auftreten der Batterieabschaltung an einem Punkt C von 4B;
- 9A bis 9F sind Ansichten zur Erläuterung eines Prozessbeispiels zur erneuten Durchführung einer Firmware-Neuprogrammierung nach der Feststellung, dass ein Downgrade durchgeführt wurde; und
- 10A bis 10C sind Ansichten zur Erläuterung eines Prozessbeispiels zur erneuten Durchführung einer Firmware-Neuprogrammierung nach einer fehlgeschlagenen Integritätsprüfung einer neuen Firmware.
-
Es ist zu verstehen, dass die beigefügten Zeichnungen nicht zwangsläufig maßstabsgetreu sind und eine etwas vereinfachte Darstellung verschiedener Merkmale darstellen, die die Grundprinzipien der Offenbarung veranschaulichen. Die spezifischen Konstruktionsmerkmale der vorliegenden Offenbarung, wie hier offenbart, einschließlich z. B. spezifischer Abmessungen, Ausrichtungen, Positionen und Formen, werden zum Teil durch die jeweilige beabsichtigte Nutzung und Einsatzumgebung bestimmt.
-
In den Figuren beziehen sich die Bezugszeichen auf identische oder gleichwertige Teile der vorliegenden Offenbarung in den verschiedenen Figuren der Zeichnung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Nachfolgend sind beispielhafte Ausführungsformen der vorliegenden Offenbarung mit Bezug auf die Zeichnungen ausführlich beschrieben. Im Wesentlichen identische Komponenten in der nachfolgenden Beschreibung und den beigefügten Zeichnungen können mit den gleichen Bezugszeichen bezeichnet werden, und redundante Beschreibungen werden weggelassen. Ferner wird in der Beschreibung der beispielhaften Ausführungsform auf eine ausführliche Beschreibung verzichtet, wenn davon ausgegangen wird, dass eine spezifische Beschreibung einer damit zusammenhängenden bekannten Ausgestaltung oder Funktion das Wesentliche der vorliegenden Offenbarung unverständlich machen könnte.
-
1 ist eine Ansicht, die einen schematischen Aufbau einer MCU für ein Fahrzeug gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung zeigt.
-
Die MCU 100 lädt eine Firmware von einer Diagnosevorrichtung 200 (z. B. einer bordinternen Diagnostik) herunter. Gemäß einer beispielhaften Ausführungsform kann die MCU 100 die Firmware mit einem (nicht gezeigten) Fahrzeug-Gateway herunterladen.
-
Die MCU 100 umfasst einen Kern 110, einen Flash-Speicher 120 und ein RAM 130. Der Kern 110 führt einen Befehl eines im Flash-Speicher 120 gespeicherten Programms aus. Der RAM 130 speichert während eines Prozesses zur Ausführung des Befehls durch den Kern 110 vorübergehend Daten. Der Flash-Speicher 120 umfasst einen Bootloader-Bereich 121 und einen Anwendungsbereich 122. Ein Flash-Bootloader ist im Bootloader-Bereich 121 gespeichert. Die Firmware ist im Anwendungsbereich 122 gespeichert. Der Flash-Bootloader dient zum Aktualisieren einer Firmware, die im Anwendungsbereich gespeichert ist 121 -> 122.
-
2 zeigt den Aufbau einer von einer Diagnosevorrichtung 200 heruntergeladenen Firmware gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung.
-
Die Firmware umfasst vorne und hinten einen Header-Block 10D und einen Trailer-Block 20D. Der Header-Block 10D ist ein festgelegter Festwert und enthält eine magische Startzahl, die den Beginn des Header-Blocks 10D darstellt, sowie aktuelle Versionsinformationen der entsprechenden Firmware. Der Trailer-Block 20D ist ein festgelegter Festwert und enthält eine magische Endzahl, die den Beginn des Trailer-Blocks 20D darstellt, und die aktuellen Versionsinformationen der entsprechenden Firmware. Der Header-Block 10D und der Trailer-Block 20D sind so konfiguriert, dass sie sich in verschiedenen Sektoren des Flash-Speichers befinden, wenn der Header-Block und der Trailer-Block in den Flash-Speicher geschrieben werden.
-
3 zeigt einen Aufbau einer normalerweise in einem Flash-Speicher 120 neuprogrammierten Firmware gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung. 3 zeigt einen Fall, in dem die in 2 dargestellte Firmware normalerweise in dem Flash-Speicher 120 gemäß der beispielhaften Ausführungsform der vorliegenden Offenbarung neuprogrammiert wird. Der Header-Block 10F umfasst außerdem vorherige Versionsinformationen und eine zyklische Redundanzprüfung (CRC) sowie die magische Startzahl und aktuelle Versionsinformationen. Der Trailer-Block 20F umfasst außerdem vorherige Versionsinformationen und eine CRC sowie die magische Endzahl und aktuelle Versionsinformationen. Die CRC des Header-Blocks 10F ist ein Wert, der von der magischen Startzahl, den aktuellen Versionsinformationen und den vorherigen Versionsinformationen des Header-Blocks 10F abhängig ist. Die CRC des Trailer-Blocks 20F ist ein Wert, der von der magischen Endzahl und den aktuellen Versionsinformationen sowie den vorherigen Versionsinformationen des Trailer-Blocks 20F abhängig ist. Die Gültigkeit des Header-Blocks 10F wird durch die magische Startzahl, die aktuellen Versionsinformationen, die vorherigen Versionsinformationen und die CRC des Header-Blocks 10F bestätigt. Wenn beispielsweise die magische Startzahl ein festgelegter normaler Wert ist und der CRC-Wert, der auf der Grundlage der magischen Startzahl, der aktuellen Versionsinformationen und der vorherigen Versionsinformationen erhalten wurde, mit dem CRC-Wert des Header-Blocks 10F übereinstimmt, wird bestätigt, dass der Header-Block 10F gültig ist. In ähnlicher Weise wird die Gültigkeit des Trailer-Blocks 20F durch die magische Endzahl, die aktuellen Versionsinformationen, die vorherigen Versionsinformationen und den CRC-Wert des Trailer-Blocks 20F bestätigt. Wenn z.B. die magische Endzahl ein festgelegter normaler Wert ist und der CRC-Wert, der auf der Grundlage der magischen Endzahl, der aktuellen Versionsinformation und der vorherigen Versionsinformation erhalten wurde, mit dem CRC-Wert des Trailer-Blocks 20F übereinstimmt, wird bestätigt, dass der Trailer-Block 20F gültig ist.
-
4A und 4B zeigen Flussdiagramme eines Firmware-Aktualisierungsverfahrens gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung. Die Flussdiagramme in 4A und 4B zeigen einen Betrieb des Flash-Bootloaders, der im Bootloader-Bereich 121 des Flash-Speichers 120 gespeichert ist.
-
In Schritt 410 wird die Gültigkeit des Header-Blocks der im Flash-Speicher 120 gespeicherten Firmware bestätigt. Die Gültigkeit des Header-Blocks wird anhand der magischen Startzahl, der aktuellen Versionsinformationen, der vorherigen Versionsinformationen und der im Header-Block enthaltenen CRC bestätigt.
-
Wenn der Header-Block als Bestätigungsergebnis von Schritt 410 nicht gültig ist, geht die Sequenz zu Schritt 413, um die Gültigkeit des im Flash-Speicher 120 gespeicherten Trailer-Blocks zu bestätigen. Die Gültigkeit des Trailer-Blocks wird anhand der magischen Endzahl, der aktuellen Versionsinformationen, der vorherigen Versionsinformationen und der im Trailer-Block enthaltenen CRC bestätigt.
-
Wenn der Trailer-Block als Bestätigungsergebnis von Schritt 413 gültig ist, geht die Sequenz zu Schritt 420, der weiter unten beschrieben ist, und wenn der Trailer-Block nicht gültig ist, geht die Sequenz zu Schritt 423. Wenn in Schritt 413 der Trailer-Block nicht gültig ist (d.h. sowohl der Header-Block als auch der Trailer-Block sind ungültig), bedeutet dies, dass sich der Flash-Speicher 120 in einem neuen Zustand befindet und die Firmware zum ersten Mal installiert wird. Dementsprechend werden in Schritt 423 die aktuellen Versionsinformationen im RAM 130 als „0“ (oder „N/A“) gespeichert, und die Sequenz geht zu Schritt 425, der noch zu beschreiben ist.
-
Wenn der Header-Block als Bestätigungsergebnis von Schritt 410 gültig ist, geht die Sequenz zu Schritt 415, um die Gültigkeit des im Flash-Speicher 120 gespeicherten Trailer-Blocks zu bestätigen.
-
Wenn der Trailer-Block als Bestätigungsergebnis von Schritt 415 gültig ist, werden in Schritt 420 im Trailer-Block enthaltene aktuelle Versionsinformationen im RAM 130 gespeichert.
-
In Schritt 425 wird ein Sektor des Flash-Speichers 120, in dem sich der Trailer-Block befindet, beibehalten und ein Sektor, in dem sich der Header-Block befindet, gelöscht. Im Allgemeinen wird der Flash-Speicher in der Einheit von Sektoren gelöscht, so dass der Header-Block gelöscht wird, während der Trailer-Block beibehalten wird, indem kurz vor einem Sektor des Flash-Speichers 120, in dem sich der Trailer-Block befindet, gelöscht wird.
-
In Schritt 430 wird der Header-Block einer neuen Firmware, die heruntergeladen wird, in den Flash-Speicher 120 geschrieben.
-
In Schritt 435 werden die aktuellen Versionsinformationen der neuen Firmware, die im Header-Block enthalten sind, und die aktuellen Versionsinformationen, die im RAM 130 gespeichert sind, verglichen, um festzustellen, ob ein Downgrade durchzuführen ist. Wenn ein Versionswert der im Header-Block enthaltenen neuen Firmware gleich oder größer ist als ein im RAM 130 gespeicherter Versionswert, wird festgestellt, dass kein Downgrade durchgeführt wurde.
-
Als Ergebnis der Bestimmung, ob ein Downgrade durchzuführen ist, werden in Schritt 445 die im RAM 130 gespeicherten aktuellen Versionsinformationen als vorherige Versionsinformationen zum Header-Block hinzugefügt, der in den Flash-Speicher 120 geschrieben wurde.
-
In Schritt 450 werden dem in den Flash-Speicher 120 geschriebenen Header-Block eine magische Startzahl und eine CRC, die auf den aktuellen Versionsinformationen und den vorherigen Versionsinformationen basiert, hinzugefügt.
-
In Schritt 455 wird ein Sektor, in dem sich der Trailer-Block befindet, gelöscht.
-
In Schritt 460 wird der Trailer-Block einer neuen Firmware, die heruntergeladen wird, in den Flash-Speicher 120 geschrieben.
-
In Schritt 465 wird die Integrität der herunterzuladenden neuen Firmware überprüft. Die Integrität der Firmware wird wie bereits bekannt anhand der elektronischen Signatur überprüft, die in der Firmware enthalten ist.
-
Wenn die Integrität der neuen Firmware in Schritt 465 verifiziert wurde, werden in Schritt 480 die aktuellen Versionsinformationen, die im RAM 130 gespeichert sind, dem in den Flash-Speicher 120 geschriebenen Trailer-Block als vorherige Versionsinformationen hinzugefügt.
-
In Schritt 485 werden eine magische Endzahl und eine CRC, die auf den aktuellen Versionsinformationen und den vorherigen Versionsinformationen basiert, zu dem in den Flash-Speicher 120 geschriebenen Trailer-Block hinzugefügt. Wenn die Schritte bis Schritt 485 normal ausgeführt werden, bedeutet dies, dass die Neuprogrammierung der Firmware erfolgreich abgeschlossen wurde.
-
5A bis 5K sind Ansichten zur Erläuterung eines Prozessbeispiels zur normalen Durchführung der Firmware-Neuprogrammierung durch die oben beschriebenen Schritte 410, 415, 420 bis 460, 465, 480 und 485.
-
Mit Bezug auf 5A bis 5K sind Informationen des Header-Blocks 10F und des Trailer-Blocks 20F der im Flash-Speicher 120 gespeicherten Firmware, Informationen des Header-Blocks 10D und des Trailer-Blocks 20D der herunterzuladenden Firmware und im RAM 130 gespeicherte Informationen dargestellt. Der Einfachheit halber werden die magische Startzahl und die magische Endzahl weggelassen.
-
Mit Bezug auf 5A ist im Header-Block 10F und im Trailer-Block 20F der im Flash-Speicher 120 gespeicherten Firmware die aktuelle Version 2, die vorherige Version 1 und die CRC normal. Im Header-Block 10D und im Trailer-Block 20D der herunterzuladenden Firmware ist die aktuelle Version 3.
-
In Schritt 410 wird bestätigt, dass der Header-Block 10F der im Flash-Speicher 120 gespeicherten Firmware gültig ist, und in Schritt 415 wird auch bestätigt, dass der Trailer-Block 20F der im Flash-Speicher 120 gespeicherten Firmware gültig ist.
-
Mit Bezug auf 5B werden in Schritt 420 die aktuelle Version 2 und die vorherige Version 1 des Trailer-Blocks 20F im RAM 130 gespeichert.
-
Mit Bezug auf 5C wird in Schritt 425 ein Sektor, in dem sich der Header-Block 10F befindet, aus dem Flash-Speicher 120 gelöscht, während der Sektor, in dem sich der Trailer-Block 20F befindet, erhalten bleibt.
-
Mit Bezug auf 5D wird in Schritt 430 ein Header-Block 10D einer herunterzuladenden neuen Firmware in den Flash-Speicher 120 geschrieben. Eine aktuelle Version des Header-Blocks 10F des Flash-Speichers 120 ist dementsprechend 3.
-
Mit Bezug auf 5E werden in Schritt 435 eine aktuelle Version 3 der neuen Firmware, die im Header-Block 10F des Flash-Speichers 120 enthalten ist, und die aktuelle Version 2, die im RAM 130 gespeichert ist, verglichen, um festzustellen, dass in Schritt 440 kein Downgrade durchgeführt wurde.
-
Mit Bezug auf 5F wird in Schritt 445 eine aktuelle Version 2, die im RAM 130 gespeichert ist, dem Header-Block 10F des Flash-Speichers 120 als vorherige Versionsinformationen hinzugefügt.
-
Mit Bezug auf 5G werden in Schritt 450 eine magische Startzahl und eine CRC, die auf der aktuellen Version 3 und der vorherigen Version 2 basiert, zum Header-Block 10F des Flash-Speichers 120 hinzugefügt.
-
Mit Bezug auf 5H wird in Schritt 455 ein Sektor, in dem sich der Trailer-Block 20F befindet, gelöscht.
-
Mit Bezug auf 51 wird in Schritt 460 ein Trailer-Block 20D einer herunterzuladenden neuen Firmware in den Flash-Speicher 120 geschrieben. Eine aktuelle Version des Trailer-Blocks 20F des Flash-Speichers 120 ist dementsprechend 3.
-
Wenn in Schritt 465 die Integrität der neuen, in den Flash-Speicher 120 heruntergeladenen Firmware verifiziert ist, wie in 5J dargestellt, wird in Schritt 480 die aktuelle, im RAM 130 gespeicherte Version 2 zum Trailer-Block 20F des Flash-Speichers 120 als vorherige Versionsinformationen hinzugefügt.
-
Mit Bezug auf 5K werden in Schritt 485 eine magische Endzahl und eine CRC, die auf der aktuellen Version 3 und der vorherigen Version 2 basiert, dem Trailer-Block 20F des Flash-Speichers 120 hinzugefügt. Auf diese Weise wird die Neuprogrammierung der Firmware erfolgreich abgeschlossen.
-
6A und 6B sind Ansichten zur Erläuterung eines Prozessbeispiels zur Durchführung einer Firmware-Neuprogrammierung nach dem Auftreten einer Batterieabschaltung an einem Punkt A von 4A.
-
Mit Bezug auf 4A und 5C wird angenommen, dass die Batterieabschaltung am Punkt „A“ auftritt, nachdem ein Sektor, in dem sich der Header-Block 10F befindet, in Schritt 425 aus dem Flash-Speicher 120 gelöscht wurde, während der Sektor, in dem sich der Trailer-Block 20F befindet, beibehalten wird. Wie in 6A dargestellt, gehen auf diese Weise die Versionsinformationen des RAM 130 verloren und werden die Versionsinformationen des Trailer-Blocks 20F bleiben erhalten.
-
Wenn Schritt 410 von 4A für die Firmware-Neuprogrammierung in diesem Zustand erneut ausgeführt wird, ist der Header-Block 10F des Flash-Speichers 120 nicht gültig, so dass die Sequenz zu Schritt 413 geht und in Schritt 413 bestätigt wird, dass der Trailer-Block 20F des Flash-Speichers 120 gültig ist. Dementsprechend geht die Sequenz zu Schritt 420 über, um die aktuelle Version 2 und die vorherige Version 1 des Trailer-Blocks 20F im RAM 130 zu speichern, wie in 6B gezeigt. Wenn der Sektor, in dem sich der Header-Block 10F befindet, gelöscht wird, während ein Sektor, in dem sich der Trailer-Block 20F befindet, in Schritt 425 im Zustand von 6B beibehalten wird, nimmt der Sektor den Zustand von 5C an. Dementsprechend wird die Firmware-Neuprogrammierung durch die nachfolgenden Prozesse erfolgreich abgeschlossen. Wie oben beschrieben, wird gemäß der beispielhaften Ausführungsform der vorliegenden Offenbarung, auch wenn die Batterieabschaltung nach dem Löschen eines Sektors auftritt, in dem sich der Header-Block 10F befindet, die aktuelle Version mittels des Trailer-Blocks 20F während des nachfolgenden Firmware-Neuprogrammierungsprozesses korrekt erkannt, so dass die Firmware-Neuprogrammierung erfolgreich abgeschlossen werden kann.
-
7A und 7B sind Ansichten zur Erläuterung eines Prozessbeispiels zur Durchführung einer Firmware-Neuprogrammierung nach dem Auftreten einer Batterieabschaltung an einem Punkt B von 4B.
-
Mit Bezug auf 4B und 5G wird eine Situation angenommen, in der die Batterieabschaltung an einem Punkt „B“ auftritt, nachdem eine magische Startzahl und eine CRC, die auf der aktuellen Version 3 und der vorherigen Version 2 basiert, in Schritt 450 zum Header-Block 10F des Flash-Speichers 120 hinzugefügt wurden. Auf diese Weise gehen, wie in 7A gezeigt, die Versionsinformationen des RAM 130 verloren und werden die Versionsinformationen des Trailer-Blocks 20F beibehalten. Auf diese Weise werden die Versionsinformationen des Header-Blocks 10F zu Versionsinformationen einer neuen Firmware, bei der die Neuprogrammierung nicht abgeschlossen ist, so dass die Versionsinformationen des Header-Blocks 10F nicht mit den Versionsinformationen des Trailer-Blocks 20F übereinstimmen.
-
Wenn Schritt 410 von 4A für die Firmware-Neuprogrammierung in diesem Zustand erneut durchgeführt wird, ist der Header-Block 10F des Flash-Speichers 120 gültig, so dass die Sequenz zu Schritt 413 geht und in Schritt 413 bestätigt wird, dass der Trailer-Block 20F des Flash-Speichers 120 gültig ist. Dementsprechend geht die Sequenz zu Schritt 420, und wie in 7B gezeigt, werden die aktuelle Version 2 und die vorherige Version 1 des Trailer-Blocks 20F im RAM 130 gespeichert. Wenn der Sektor, in dem sich der Header-Block 10F befindet, gelöscht wird, während ein Sektor, in dem sich der Trailer-Block 20F befindet, in Schritt 425 im Zustand von 7B beibehalten wird, nimmt der Sektor den Zustand von 5C an. Dementsprechend wird die Firmware-Neuprogrammierung durch die nachfolgenden Prozesse erfolgreich abgeschlossen. Wie oben beschrieben, wird gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung, auch wenn die Batterieabschaltung in einem Zustand auftritt, in dem die Versionsinformationen des Header-Blocks 10F und die Versionsinformationen des Trailer-Blocks 20F nicht übereinstimmen, die aktuelle Version während der nachfolgenden Firmware-Neuprogrammierung vom Trailer-Block 20F korrekt erkannt, um die Firmware-Neuprogrammierung erfolgreich abzuschließen.
-
Wenn der Trailer-Block als Bestätigungsergebnis von Schritt 415 ungültig ist, wird mit Bezug auf 4A in Schritt 417 der Sektor, in dem sich der Trailer-Block befindet, gelöscht.
-
Als nächstes wird in Schritt 419, wenn in Schritt 410 festgestellt wird, dass der Trailer-Block gültig ist, dieser mit den vorherigen Versionsinformationen des Header-Blocks als aktuelle Versionsinformationen wiederhergestellt. Danach geht die Sequenz zu Schritt 420 über.
-
8A bis 8C sind Ansichten zur Erläuterung eines Prozessbeispiels zur Durchführung einer Firmware-Neuprogrammierung, nach dem Auftreten der Batterieabschaltung an einem Punkt C von 4B.
-
Mit Bezug auf 4B und 51 wird angenommen, dass die Batterieabschaltung am Punkt „C“ auftritt, nachdem in Schritt 460 der Trailer-Block 20D der neuen Firmware in den Flash-Speicher 120 geschrieben wurde. Auf diese Weise gehen, wie in 8A gezeigt, die Versionsinformationen des RAM 130 verloren, und der Header-Block 10F hat eine aktuelle Version 3, eine vorherige Version 2 und eine CRC, und der Trailer-Block 20F hat eine aktuelle Version 3, aber keine vorherige Version und CRC.
-
Wenn in diesem Zustand Schritt 410 von 4A für die Firmware-Neuprogrammierung erneut durchgeführt wird, wird bestätigt, dass der Header-Block 10F des Flash-Speichers 120 gültig ist, so dass die Sequenz zu Schritt 415 geht, und in Schritt 415 wird bestätigt, dass der Trailer-Block 20F nicht die vorherige Version und eine CRC hat, so dass er nicht gültig ist.
-
Wie in 8B gezeigt, wird in Schritt 417 der Sektor, in dem sich der Trailer-Block 20F befindet, gelöscht. Wie in 8C gezeigt, wird in Schritt 419 die vorherige Version 2 des Header-Blocks 10F, deren Gültigkeit bestätigt wurde, zu den aktuellen Versionsinformationen des Trailer-Blocks 20F. Die vorherige Version des Trailer-Blocks 20F wird als „0“ (oder ein beliebiger Wert) aufgezeichnet, und eine CRC wird auf der Grundlage der aktuellen Version und der vorherigen Version des Trailer-Blocks 20F erzeugt. Als nächstes geht die Sequenz, wie in 4A gezeigt, zu Schritt 420. Allerdings sind nur die in Schritt 420 im RAM 130 gespeicherten aktuellen Versionsinformationen des Trailer-Blocks 20F von Bedeutung, während der Sektor, in dem sich der Trailer-Block 20F befindet, in Schritt 455 gelöscht wird, so dass die vorherige Version und der CRC-Wert des Trailer-Blocks 20F nicht von Bedeutung sind. Dementsprechend wird die Firmware-Neuprogrammierung durch die nachfolgenden Prozesse bis Schritt 420 nach Schritt 419 erfolgreich abgeschlossen. Wie oben beschrieben, werden gemäß der beispielhaften Ausführungsform der vorliegenden Offenbarung die aktuellen Versionsinformationen des Trailer-Blocks 20F unter Verwendung der vorherigen Versionsinformationen des Header-Blocks 10F wiederhergestellt, auch wenn die Batterieabschaltung nach dem Schreiben eines Trailer-Blocks 20D einer neuen Firmware in den Flash-Speicher 120 und vor der Überprüfung der Integrität der neuen Firmware auftritt. Auf diese Weise wird die aktuelle Version während des anschließenden Firmware-Neuprogrammierungsprozesses mittels des Trailer-Blocks 20F korrekt erkannt, so dass die Firmware-Neuprogrammierung erfolgreich abgeschlossen wird.
-
Wenn als Ergebnis der Bestimmung in Schritt 435, ob ein Downgrade durchzuführen ist, in Schritt 440 ein Downgrade durchgeführt wird, geht als Nächstes mit Bezug auf 4B die Sequenz zu Schritt 475, um den Sektor, in dem sich der Trailer-Block befindet, beizubehalten und den Sektor, in dem sich der Header-Block befindet, aus dem Flash-Speicher 120 zu löschen.
-
In Schritt 478 wird ein negativer Antwortcode (engl. Negative Response Code - NRC) geantwortet und zurückgesetzt.
-
9A bis 9F sind Ansichten zur Erläuterung eines Prozessbeispiels zur erneuten Durchführung einer Firmware-Neuprogrammierung nach der Feststellung eines Downgrades.
-
Mit Bezug auf 9A wird angenommen, dass eine aktuelle Version der im Flash-Speicher 120 gespeicherten Firmware 2 ist und eine Version einer herunterzuladenden neuen Firmware 1.5 ist.
-
In Schritt 410 wird bestätigt, dass der Header-Block 10F der im Flash-Speicher 120 gespeicherten Firmware gültig ist, und in Schritt 415 wird auch bestätigt, dass der Trailer-Block 20F der im Flash-Speicher 120 gespeicherten Firmware gültig ist.
-
Mit Bezug auf 9B werden in Schritt 420 die aktuelle Version 2 und die vorherige Version 1 des Trailer-Blocks 20F im RAM 130 gespeichert.
-
Mit Bezug auf 9C wird in Schritt 425 ein Sektor, in dem sich der Header-Block 10F befindet, aus dem Flash-Speicher 120 gelöscht, während der Sektor, in dem sich der Trailer-Block 20F befindet, beibehalten wird.
-
Mit Bezug auf 9D wird in Schritt 430 ein Header-Block 10D einer neuen Firmware, die herunterzuladen ist, in den Flash-Speicher 120 geschrieben. Eine aktuelle Version des Header-Blocks 10F des Flash-Speichers 120 ist dementsprechend 1.5.
-
Mit Bezug auf 9E wird in Schritt 435 eine aktuelle Version 1.5 der neuen Firmware, die im Header-Block 10F des Flash-Speichers 120 enthalten ist, mit der aktuellen Version 2, die im RAM 130 gespeichert ist, verglichen, um festzustellen, dass ein Downgrade durchgeführt wurde.
-
Mit Bezug auf 9F wird in Schritt 475 ein Sektor, in dem sich der Header-Block 10F befindet, aus dem Flash-Speicher 120 gelöscht, während der Sektor, in dem sich der Trailer-Block 20F befindet, erhalten bleibt.
-
Wenn das Zurücksetzen durch Schritt 478 im Zustand von 9F durchgeführt wird und dann die Firmware-Neuprogrammierung erneut durchgeführt wird, befindet sie sich in einem Zustand von 6A, so dass, wie oben mit Bezug auf 6A und 6B beschrieben, die aktuelle Version als 2 erkannt wird. Daher wird die Firmware-Neuprogrammierung erfolgreich abgeschlossen. Wie oben beschrieben, wird gemäß der beispielhaften Ausführungsform der vorliegenden Offenbarung die aktuelle Version während des anschließenden Firmware-Neuprogrammierungsprozesses mittels des Trailer-Blocks 20F korrekt erkannt, um die Firmware-Neuprogrammierung erfolgreich abzuschließen, auch wenn festgestellt wurde, dass sie herabgestuft und zurückgesetzt wurde.
-
Wenn mit Bezug auf 4B die Integritätsprüfung einer herunterzuladenden neuen Firmware in Schritt 465 fehlschlägt, geht die Sequenz dann zu Schritt 470, um einen Sektor zu löschen, in dem sich der Trailer-Block befindet.
-
Anschließend wird in Schritt 473 der Trailer-Block mit den vorherigen Versionsinformationen des Header-Blocks des Flash-Speichers 120 als aktuelle Versionsinformationen wiederhergestellt.
-
In Schritt 475 wird ein Sektor des Flash-Speichers 120, in dem sich der Trailer-Block befindet, beibehalten und ein Sektor, in dem sich der Header-Block befindet, gelöscht.
-
In Schritt 478 wird ein negativer Antwortcode (NRC) geantwortet und zurückgesetzt.
-
10A bis 10C sind Ansichten zur Erläuterung eines Prozessbeispiels zur erneuten Durchführung einer Firmware-Neuprogrammierung nach einer fehlgeschlagenen Integritätsprüfung einer neuen Firmware.
-
Wenn die Integritätsprüfung der neuen Firmware im Zustand von 51, wie in 10A dargestellt, fehlschlägt, wird in Schritt 470 ein Sektor gelöscht, in dem sich der Trailer-Block 20F befindet. In Schritt 473 wird, wie in 10B gezeigt, die vorherige Version 2 des Header-Blocks 10F des Flash-Speichers 120 zu den aktuellen Versionsinformationen des Trailer-Blocks 20F. Die vorherige Version des Trailer-Blocks 20F wird als im RAM 130 gespeicherte vorherige Version 1 aufgezeichnet und eine CRC auf der Grundlage der aktuellen Version und der vorherigen Version des Trailer-Blocks 20F erzeugt.
-
Wie in 10C gezeigt, wird in Schritt 475 ein Sektor, in dem sich der Header-Block 10F befindet, aus dem Flash-Speicher 120 gelöscht, während der Sektor, in dem sich der Trailer-Block 20F befindet, beibehalten wird.
-
Wenn das Zurücksetzen durch Schritt 478 im Zustand von 10C durchgeführt und dann die Firmware-Neuprogrammierung erneut durchgeführt wird, befindet sie sich in einem Zustand von 6A, so dass, wie oben mit Bezug auf 6A und 6B beschrieben, die aktuelle Version als 2 erkannt wird. Daher wird die Firmware-Neuprogrammierung erfolgreich abgeschlossen. Wie oben beschrieben, werden gemäß einer beispielhaften Ausführungsform der vorliegenden Offenbarung, auch wenn die Integritätsprüfung der neuen Firmware fehlschlägt, die aktuellen Versionsinformationen des Trailer-Blocks 20F unter Verwendung der vorherigen Versionsinformationen des Header-Blocks 10F wiederhergestellt, so dass die aktuelle Version während der nachfolgenden Firmware-Neuprogrammierung vom Trailer-Block 20F korrekt erkannt wird, um die Firmware-Neuprogrammierung erfolgreich abzuschließen.
-
Kombinationen der Blöcke der Blockdiagramme und der Schritte in den Flussdiagrammen der vorliegenden Offenbarung können durch Computerprogrammanweisungen ausgeführt werden. Die Computerprogrammanweisungen können in einen Prozessor eines Universalcomputers, eines Spezialcomputers oder eines anderen programmierbaren Datenverarbeitungsgeräts geladen werden, so dass die Anweisungen, die von dem Prozessor des Computers oder eines anderen programmierbaren Datenverarbeitungsgeräts ausgeführt werden, ein Mittel zur Implementierung der Funktionen, die in den Blöcken der Blockdiagramme oder in den Schritten in den Flussdiagrammen beschrieben sind, erzeugen. Diese Computerprogrammanweisungen können auch in einem mit einem Computer verwendbaren oder computerlesbaren Speicher gespeichert sein, der einen Computer oder ein anderes programmierbares Datenverarbeitungsgerät anweisen kann, eine Funktion in einer bestimmten Weise zu implementieren, so dass die in dem mit einem Computer verwendbaren oder computerlesbaren Speicher gespeicherten Anweisungen einen Fertigungsartikel erzeugen können, der eine Anweisungseinrichtung aufweist, die die in den Blöcken der Blockdiagramme oder in den Schritten des Flussdiagramms angegebene Funktion ausführt. Die Computerprogrammanweisungen können auf einen Computer oder ein anderes programmierbares Datenverarbeitungsgerät geladen werden und die Ausführung einer Reihe von Betriebsschritten auf dem Computer oder einem anderen programmierbaren Datenverarbeitungsgerät hervorrufen, um einen computerimplementierten Prozess zu erzeugen, so dass die auf dem Computer oder einem anderen programmierbaren Datenverarbeitungsgerät ausgeführten Anweisungen Schritte zur Implementierung der in den Blöcken der Blockdiagramme oder den Schritten in den Flussdiagrammen beschriebenen Funktionen bereitstellen.
-
Jeder Block oder jeder Schritt kann einen Teil eines Moduls, eines Segments oder eines Codes darstellen, der eine oder mehrere ausführbare Anweisungen zur Ausführung von einer oder mehreren bestimmten logischen Funktion(en) enthält. Es ist auch zu beachten, dass in einigen alternativen Ausführungsformen die in den Blöcken oder Schritten genannten Funktionen in einer anderen Reihenfolge auftreten können. So können beispielsweise zwei aufeinanderfolgende Blöcke oder Schritte im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke oder Schritte können manchmal in umgekehrter Reihenfolge entsprechend der jeweiligen Funktion ausgeführt werden.
-
Wie oben beschrieben, wurden die beispielhaften Ausführungsformen in den Zeichnungen und in der Beschreibung beschrieben und dargestellt. Die beispielhaften Ausführungsformen wurden so ausgewählt und beschrieben, dass bestimmte Prinzipien der Offenbarung und ihre praktische Anwendung erläutert werden, so dass andere Fachleute verschiedene beispielhafte Ausführungsformen der vorliegenden Offenbarung sowie verschiedene Alternativen und Modifikationen davon herstellen und verwenden können. Wie aus der vorstehenden Beschreibung ersichtlich ist, sind bestimmte Aspekte der vorliegenden Erfindung nicht durch die besonderen Einzelheiten der hier dargestellten Beispiele beschränkt, und es wird daher in Betracht gezogen, dass sich für den Fachmann weitere Modifikationen und Anwendungen oder Äquivalente davon ergeben. Viele Änderungen, Modifikationen, Varianten und andere Nutzungen und Anwendungen des vorliegenden Aufbaus werden jedoch für den Fachmann nach Betrachtung der Beschreibung und der beigefügten Zeichnungen offensichtlich. Alle derartigen Änderungen, Modifikationen, Varianten und sonstigen Nutzungen und Anwendungen, die nicht vom Gedanken und Umfang der Erfindung abweichen, gelten als durch die Offenbarung abgedeckt, die nur durch die nachfolgenden Ansprüche begrenzt ist.