-
Die Erfindung betrifft ein Verfahren, ein Computerprogramm und ein computerlesbares Medium zum Aktualisieren einer Firmware auf einem eingebetteten System sowie ein eingebettetes System.
-
Ein eingebettetes System wie beispielsweise ein Ein-Chip-System, auch System-ona-Chip oder kurz SoC genannt, umfasst in der Regel eine Firmware. Die Firmware kann beispielsweise zur Beseitigung von Fehlern oder zur Implementierung neuer Funktionen aktualisiert werden, was auch als Flashen bezeichnet wird. Dabei kann die neue Firmware in einen anderen Speicherbereich als die alte Firmware geschrieben werden. Nach der Aktualisierung kann die alte Firmware gelöscht werden. Somit kann ein Systemausfall vermieden werden, wenn der Aktualisierungsvorgang fehlschlägt.
-
Um eingebettete Systeme im Kontext autonomen Fahrens verwenden zu können, ist eine hohe Ausfallsicherheit von Hard- und Software erforderlich. Insbesondere sollte gewährleistet sein, dass ein eingebettetes System bei einer fehlgeschlagenen Softwareaktualisierung weiterhin betriebsfähig ist.
-
Es ist somit Aufgabe der Erfindung, die Aktualisierung einer Firmware auf einem eingebetteten System zu verbessern.
-
Diese Aufgabe wird durch den Gegenstand der unabhängigen Ansprüche gelöst. Weitere Ausführungsformen der Erfindung ergeben sich aus den abhängigen Ansprüchen und aus der folgenden Beschreibung.
-
Ein erster Aspekt der Erfindung betrifft ein Verfahren zum Aktualisieren einer Firmware auf einem eingebetteten System. Das eingebettete System kann eine erste Speichereinheit mit einer Programmcode zum Starten mindestens eines ersten Betriebssystems enthaltenden ersten Partition und einer Programmcode zum Starten mindestens eines zweiten Betriebssystems enthaltenden zweiten Partition, eine zweite Speichereinheit mit einer Programmcode zum Starten mindestens eines dritten Betriebssystems enthaltenden dritten Partition und einer Programmcode zum Starten mindestens eines vierten Betriebssystems enthaltenden vierten Partition sowie einen an die erste Speichereinheit und die zweite Speichereinheit angebundenen Prozessor zum Ausführen von Programmcode umfassen.
-
Unter einem eingebetteten System kann ein in einen bestimmten technischen Kontext eingebundenes und beispielsweise an diesen speziell angepasstes programmierbares elektronisches System verstanden werden. Das eingebettete System kann in Software und/oder in Hardware implementiert sein. Beispielsweise kann das eingebettete System ein programmierbares Ein-Chip-System umfassen, bei dem alle oder zumindest ein Großteil von Funktionen auf ein und demselben Schaltungsträger, etwa einem Halbleitersubstrat in Form eines (Mikro-)Chips, integriert sein können. Das eingebettete System kann beispielsweise Teil eines Steuergeräts eines Fahrzeugs sein, etwa eines teil- oder vollautomatisiert fahrenden Fahrzeugs.
-
Unter einer Speichereinheit kann insbesondere ein interner Speicher des eingebetteten Systems verstanden werden. Eine Speichereinheit kann beispielsweise ein NAND- oder NOR-Speicher sein, auch Flash-Speicher genannt. Die erste Speichereinheit und die zweite Speichereinheit können etwa physikalisch voneinander getrennte Speichereinheiten sein. Beispielsweise können die erste Speichereinheit und die zweite Speichereinheit unterschiedliche Architekturen aufweisen und/oder sich bezüglich einer Lese- und/oder Schreibgeschwindigkeit voneinander unterscheiden. Ferner ist es möglich, dass die erste Speichereinheit und die zweite Speichereinheit unterschiedliche Schnittstellen zur Datenkommunikation mit einer Peripherie und/oder mit dem Prozessor aufweisen. Je nach Ausführungsform können die erste Speichereinheit, die zweite Speichereinheit und der Prozessor auf ein und demselben Chip oder auf verschiedenen Chips integriert sein.
-
Unter einer Partition kann im Allgemeinen ein unabhängiger Teil einer Speichereinheit, der von anderen Teilen abgegrenzt sein kann, verstanden werden. Verschiedene Partitionen einer Speichereinheit können beispielsweise von einem Betriebssystem als getrennte (logische) Laufwerke behandelt werden. Es ist möglich, dass zumindest ein Teilbereich der zweiten Partition ein Abbild zumindest eines Teilbereichs der ersten Partition ist oder umgekehrt. Zusätzlich oder alternativ kann zumindest ein Teilbereich der vierten Partition ein Abbild zumindest eines Teilbereichs der dritten Partition sein oder umgekehrt. Ferner ist es möglich, dass mindestens eine Partition der ersten Speichereinheit und mindestens eine Partition der zweiten Speichereinheit zumindest teilweise miteinander identisch sind.
-
Unter einem Prozessor kann im Allgemeinen eine zentrale Verarbeitungseinheit, auch central processing unit oder CPU genannt, des eingebetteten Systems verstanden werden. Der Prozessor kann einen oder mehrere Prozessorkerne umfassen. Der Prozessor kann beispielsweise einen Mikrocontroller, einen Mikroprozessor, einen digitalen Signalprozessor, kurz DSP, und/oder einen Application-specific instruction-set processor, kurz ASIP, umfassen.
-
Unter einer Firmware kann im Allgemeinen eine Software verstanden werden, die ein Ausführen grundlegender Hard- und/oder Softwarefunktionen, etwa beim Booten, ermöglicht. Beispielsweise kann die Firmware eine Betriebsumgebung für komplexere Software bereitstellen. Möglich ist auch, dass die Firmware ein vollständiges Betriebssystem des eingebetteten Systems enthält. In diesem Fall können alle Steuerungs-, Überwachungs- und Datenbearbeitungsfunktionen durch die Firmware ausgeführt werden. Dementsprechend kann eine Aktualisierung der Firmware als eine Aktualisierung des Betriebssystems aufgefasst werden.
-
Anders ausgedrückt kann eine Firmware ein Betriebssystem und/oder eine Software zum Laden eines Betriebssystems umfassen, etwa zum Bereitstellen hardwarenaher Funktionen beim Starten des eingebetteten Systems. Beispielsweise kann die Firmware einen Bootloader zum Laden mindestens eines Betriebssystems, etwa eines Kernels eines Betriebssystems, und/oder zum Laden von Applikationssoftware, mindestens ein Betriebssystem und/oder Applikationssoftware umfassen. Die Firmware kann beispielsweise als Datei in einer Partition abgelegt sein und von dort direkt geladen und ausgeführt werden.
-
Gemäß einer Ausführungsform umfasst das Verfahren die folgenden Schritte: Starten eines ersten Betriebssystems durch Ausführen von in der ersten Partition enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei und Aktualisieren von in der zweiten Partition enthaltenem Programmcode einer Firmware mit der Aktualisierungsdatei durch das erste Betriebssystem; Starten eines dritten Betriebssystems durch Ausführen von in der dritten Partition enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei und Aktualisieren von in der vierten Partition enthaltenem Programmcode einer Firmware mit der Aktualisierungsdatei durch das dritte Betriebssystem.
-
Bei dem in der ersten Partition bzw. in der zweiten Partition enthaltenen Programmcode kann es sich beispielsweise um einen Bootcode handeln. Die Aktualisierungsdatei kann Programmcode einer neueren Version einer Firmware umfassen. Beispielsweise kann die Aktualisierungsdatei zum Aktualisieren des in der zweiten Partition enthaltenen Programmcodes der Firmware in der ersten Partition gespeichert sein und/oder die Aktualisierungsdatei zum Aktualisieren des in der vierten Partition enthaltenen Programmcodes der Firmware in der dritten Partition gespeichert sein. Zusätzlich oder alternativ kann die Aktualisierungsdatei über eine Schnittstelle zu einem Peripheriegerät empfangen werden.
-
Beim Aktualisieren kann beispielsweise ein Programmcode einer zu aktualisierenden Firmware mit einem in der Aktualisierungsdatei enthaltenen Programmcode einer aktuellen Firmware überschrieben werden. Alternativ kann der Programmcode der aktuellen Firmware in einen anderen Speicherbereich als der Programmcode der zu aktualisierenden Firmware geschrieben werden, wobei die zu aktualisierende Firmware während der Aktualisierung erhalten bleibt und beispielsweise erst nach der Aktualisierung gelöscht wird.
-
Das Aktualisieren der in der zweiten Partition enthaltenen Firmware durch das erste Betriebssystem kann insbesondere dann erfolgen, wenn die zweite Partition inaktiv ist. Analog dazu kann das Aktualisieren der in der vierten Partition enthaltenen Firmware durch das dritte Betriebssystem insbesondere dann erfolgen, wenn die vierte Partition inaktiv ist. Beispielsweise können die Betriebssysteme verschiedener Partitionen entsprechend einer definierten Startreihenfolge gestartet werden. Das dritte Betriebssystem kann beispielsweise dann gestartet werden, wenn das erste Betriebssystem die Aktualisierung der in der zweiten Partition enthaltenen Firmware abgeschlossen hat. Zwischen dem Starten des ersten Betriebssystems und dem Starten des dritten Betriebssystems und/oder zwischen dem Starten des dritten Betriebssystems und dem Starten eines weiteren Betriebssystems kann mindestens ein Neustart durchgeführt werden. Beispielsweise kann dabei ein aktualisiertes Betriebssystem durch Ausführen eines aktualisierten Programmcodes einer Firmware gestartet werden.
-
Es ist möglich, dass in der ersten Speichereinheit gespeicherter Programmcode häufiger aktualisiert wird als in der zweiten Speichereinheit gespeicherter Programmcode oder umgekehrt.
-
Beispielsweise können zwei oder mehrere Partitionen miteinander identisch sein. Insbesondere kann beispielsweise die erste Partition mit der zweiten Partition und/oder die dritte Partition mit der vierten Partition identisch sein.
-
Beim Starten eines Betriebssystems kann beispielsweise ein Hypervisor geladen werden. Ein solcher Hypervisor ermöglicht einen parallelen Betrieb mehrerer Gastbetriebssysteme .
-
Eine Firmware kann beispielsweise zur Fehlerbehebung oder Änderung von Funktionen aktualisiert werden. Schlägt eine solche Aktualisierung fehl, etwa infolge einer Unterbrechung einer Stromzufuhr, so kann es vorkommen, dass das System ausfällt oder zumindest nur eingeschränkt nutzbar ist, beispielsweise weil elementare Funktionen gelöscht wurden oder nicht vollständig erneuert werden konnten.
-
Um dies zu verhindern, wird ein Ansatz vorgeschlagen, bei dem insgesamt vier Partitionen auf zwei Speichereinheiten zur Aktualisierung genutzt werden. Über diese vier Partitionen kann eine komplett redundante Umgebung zur Firmware-Aktualisierung geschaffen werden. Insbesondere ist es dadurch möglich, eine ältere Firmware-Version direkt mit einer neueren Firmware-Version zu überschreiben.
-
Somit können Betriebsausfälle vermieden werden und es kann vermieden werden, dass beim Fehlschlagen einer Aktualisierung eine funktionsfähige Firmware aufwendig wiederhergestellt werden muss. Stattdessen kann das System von einer der anderen Partitionen, die eine funktionsfähige Firmware enthalten, gestartet oder wiederhergestellt werden. Ein solches Aktualisierungsverfahren eignet sich damit besonders zum Einsatz in teil- oder vollautomatisiert fahrenden Fahrzeugen mit hohen Anforderungen an die Betriebssicherheit.
-
Gemäß einer Ausführungsform umfasst das Verfahren weiter: wenn der in der zweiten Partition enthaltene Programmcode der Firmware aktualisiert wurde: Starten eines zweiten Betriebssystems durch Ausführen von in der zweiten Partition enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei und Aktualisieren von in der ersten Partition enthaltenem Programmcode einer Firmware mit der Aktualisierungsdatei durch das zweite Betriebssystem; und/oder wenn ein in der ersten Partition enthaltener Programmcode einer Firmware aktualisiert wurde: Starten des dritten Betriebssystems durch Ausführen des in der dritten Partition enthaltenen Programmcodes; Empfangen der Aktualisierungsdatei und Aktualisieren des in der vierten Partition enthaltenen Programmcodes der Firmware mit der Aktualisierungsdatei durch das dritte Betriebssystem; und/oder wenn der in der vierten Partition enthaltene Programmcode der Firmware aktualisiert wurde: Starten eines vierten Betriebssystems durch Ausführen von in der vierten Partition enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei und Aktualisieren von in der dritten Partition enthaltenem Programmcode einer Firmware mit der Aktualisierungsdatei durch das vierte Betriebssystem.
-
Mit anderen Worten kann dadurch Firmware in mehr als zwei Partitionen des eingebetteten Systems aktualisiert werden. Die Betriebssysteme, die die entsprechenden Aktualisierungen durchführen, können nacheinander gemäß einer festgelegten Reihenfolge gestartet werden. Beispielsweise können zunächst die Firmware in der ersten Partition und die Firmware in der zweiten Partition aktualisiert werden. Anschließend können die Firmware in der dritten Partition und die Firmware in der vierten Partition aktualisiert werden. Beispielsweise ist es möglich, dass der Aktualisierungsprozess unterbrochen wird, wenn eine Aktualisierung einer Firmware nicht erfolgreich abgeschlossen werden konnte. In diesem Fall kann beispielsweise ein Neustart des Systems erfolgen, um ein funktionierendes Betriebssystem von einer anderen Partition zu starten und/oder eine zuletzt funktionierende Version der Firmware mit Daten aus einer anderen Partition wiederherzustellen.
-
Gemäß einer Ausführungsform umfasst das Verfahren weiter: Bestimmen, ob die erste Partition und die zweite Partition unterschiedliche Versionen einer Firmware enthalten; wenn die erste Partition eine neuere Version der Firmware enthält: Empfangen einer Aktualisierungsdatei und Aktualisieren einer in der zweiten Partition enthaltenen Version der Firmware auf die neuere Version mit der Aktualisierungsdatei durch das erste Betriebssystem; und/oder wenn die zweite Partition eine neuere Version der Firmware enthält: Starten eines zweiten Betriebssystems durch Ausführen von in der zweiten Partition enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei und Aktualisieren einer in der ersten Partition enthaltenen Version der Firmware auf die neuere Version mit der Aktualisierungsdatei durch das zweite Betriebssystem.
-
Durch diese Ausführungsform kann sichergestellt werden, dass die Firmware-Versionen in den beiden Partitionen der ersten Speichereinheit miteinander übereinstimmen. Somit kann gewährleistet werden, dass die Firmware beider Partitionen stets aktuell ist. Mit anderen Worten kann somit stets eine aktuelle Firmware geladen werden, unabhängig davon, von welcher der beiden Partition die Firmware geladen wird.
-
Gemäß einer Ausführungsform umfasst das Verfahren weiter: Bestimmen, ob die dritte Partition und die vierte Partition unterschiedliche Versionen einer Firmware enthalten; wenn die dritte Partition eine neuere Version der Firmware enthält: Empfangen einer Aktualisierungsdatei und Aktualisieren einer in der vierten Partition enthaltenen Version der Firmware auf die neuere Version mit der Aktualisierungsdatei durch das dritte Betriebssystem; und/oder wenn die vierte Partition eine neuere Version der Firmware enthält: Starten eines vierten Betriebssystems durch Ausführen von in der vierten Partition enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei und Aktualisieren einer in der dritten Partition enthaltenen Version der Firmware auf die neuere Version mit der Aktualisierungsdatei durch das vierte Betriebssystem.
-
Durch diese Ausführungsform kann sichergestellt werden, dass die Firmware-Versionen in den beiden Partitionen der zweiten Speichereinheit miteinander übereinstimmen. Somit kann gewährleistet werden, dass die Firmware beider Partitionen stets aktuell ist. Mit anderen Worten kann somit stets eine aktuelle Firmware geladen werden, unabhängig davon, von welcher der beiden Partition die Firmware geladen wird.
-
Beispielsweise kann zusätzlich bestimmt werden, ob mindestens eine Partition der ersten Speichereinheit und mindestens eine Partition der zweiten Speichereinheit unterschiedliche Versionen einer Firmware enthalten. Wird ein Versionsunterschied festgestellt, so kann beispielsweise eine jeweils ältere Version auf eine jeweils neuere Version aktualisiert werden. Dadurch kann sichergestellt werden, dass die Firmware-Versionen in Partitionen unterschiedlicher Speichereinheiten miteinander übereinstimmen. Somit kann gewährleistet werden, dass stets eine aktuelle Version der Firmware geladen wird, unabhängig davon, von welcher Speichereinheit die Firmware geladen wird.
-
Gemäß einer Ausführungsform kann das erste Betriebssystem bei einem Kaltstart gestartet werden. Zusätzlich oder alternativ kann das zweite Betriebssystem bei einem Warmstart gestartet werden. Zusätzlich oder alternativ kann das dritte Betriebssystem bei einem Kaltstart gestartet wird. Zusätzlich oder alternativ kann das vierte Betriebssystem bei einem Warmstart gestartet werden.
-
Unter einem Kaltstart kann ein Neustart des Systems mit vorheriger Unterbrechung einer Stromversorgung des Systems verstanden werden. Unter einem Warmstart kann ein Neustart des Systems ohne vorherige Unterbrechung einer Stromversorgung des Systems verstanden werden, auch Reboot genannt.
-
Gemäß einer Ausführungsform umfasst das Verfahren weiter: wenn das Starten des ersten Betriebssystems fehlschlägt: Starten eines zweiten Betriebssystems durch Ausführen von in der zweiten Partition enthaltenem Programmcode; und/oder wenn das Starten des dritten Betriebssystems fehlschlägt: Starten eines vierten Betriebssystems durch Ausführen von in der vierten Partition enthaltenem Programmcode. Damit kann gewährleistet werden, dass das System bei Bootproblemen betriebsfähig bleibt.
-
Gemäß einer Ausführungsform umfasst das Verfahren weiter: wenn das Starten des zweiten Betriebssystems fehlschlägt: Starten eines dritten Betriebssystems durch Ausführen von in der dritten Partition enthaltenem Programmcode. Mit anderen Worten kann das System von der zweiten Speichereinheit gestartet werden, wenn von den beiden Partitionen der ersten Speichereinheit nicht gestartet werden kann. Durch diese Ausführungsform kann die Ausfallsicherheit des Systems weiter gesteigert werden.
-
Gemäß einer Ausführungsform umfasst das Verfahren weiter: Wiederherstellen einer zuletzt funktionierenden Version der ersten Partition durch das zweite Betriebssystem; und/oder Wiederherstellen einer zuletzt funktionierenden Version der dritten Partition durch das vierte Betriebssystem.
-
Mit anderen Worten kann die erste Partition mithilfe des zweiten Betriebssystems zurück in einen startfähigen Zustand versetzt werden, wenn das erste Betriebssystem nicht mehr gestartet werden kann, und/oder die dritte Partition mithilfe des vierten Betriebssystems zurück in einen startfähigen Zustand versetzt werden, wenn das dritte Betriebssystem nicht mehr gestartet werden kann. Zum Wiederherstellen der ersten Partition kann die erste Partition beispielsweise mit einem in der zweiten Partition gespeicherten startfähigen Abbild der ersten Partition überschrieben werden. Alternativ kann die erste Partition als eine Kopie der zweiten Partition wiederhergestellt werden. Möglich ist auch eine Wiederherstellung der ersten Partition als eine Kopie der dritten Partition und/oder der vierten Partition. Zum Wiederherstellen der dritten Partition kann die dritte Partition beispielsweise mit einem in der vierten Partition gespeicherten startfähigen Abbild der dritten Partition überschrieben werden. Alternativ kann die dritte Partition als eine Kopie der vierten Partition wiederhergestellt werden. Möglich ist auch eine Wiederherstellung der dritten Partition als eine Kopie der ersten Partition und/oder der zweiten Partition.
-
Gemäß einer Ausführungsform umfasst das Verfahren weiter: wenn das Aktualisieren des in der ersten Partition enthaltenen Programmcodes der Firmware fehlschlägt: Wiederherstellen einer zuletzt funktionierenden Version der ersten Partition; und/oder wenn das Aktualisieren des in der zweiten Partition enthaltenen Programmcodes der Firmware fehlschlägt: Wiederherstellen einer zuletzt funktionierenden Version der zweiten Partition; und/oder wenn das Aktualisieren des in der dritten Partition enthaltenen Programmcodes der Firmware fehlschlägt: Wiederherstellen einer zuletzt funktionierenden Version der dritten Partition; und/oder wenn das Aktualisieren des in der vierten Partition enthaltenen Programmcodes der Firmware fehlschlägt: Wiederherstellen einer zuletzt funktionierenden Version der vierten Partition.
-
Mit anderen Worten kann eine Partition zurück in einen startfähigen Zustand versetzt werden, wenn eine Aktualisierung von in dieser Partition enthaltener Firmware abbricht und/oder ein Starten von dieser Partition nach der Aktualisierung der darin enthaltenen Firmware nicht mehr möglich ist. Die Wiederherstellung kann beispielsweise unter Verwendung von Daten in einer oder mehreren anderen Partitionen erfolgen.
-
Gemäß einer Ausführungsform kann die zuletzt funktionierende Version der ersten Partition mit Daten aus der zweiten Partition wiederhergestellt werden. Zusätzlich oder alternativ kann die zuletzt funktionierende Version der zweiten Partition mit Daten aus der ersten Partition wiederhergestellt werden. Zusätzlich oder alternativ kann die zuletzt funktionierende Version der dritten Partition mit Daten aus der vierten Partition wiederhergestellt werden. Zusätzlich oder alternativ kann die zuletzt funktionierende Version der vierten Partition mit Daten aus der dritten Partition wiederhergestellt werden.
-
Weitere Aspekte der Erfindung betreffen ein Computerprogramm, das, wenn es auf einem Prozessor ausgeführt wird, das Verfahren, wie es im Vorangehenden und im Folgenden beschrieben ist, durchführt, sowie ein computerlesbares Medium, auf dem ein derartiges Computerprogramm gespeichert ist. Ein computerlesbares Medium kann dabei eine Harddisk, ein USB-Speichergerät, ein RAM, ein ROM, ein EPROM oder ein Flash-Speicher sein. Ein computerlesbares Medium kann auch ein Datenkommunikationsnetzwerk, wie beispielsweise das Internet, das den Download eines Programmcodes ermöglicht, sein. Das computerlesbare Medium kann ein transitorisches oder nicht transitorisches Medium sein. Merkmale des Verfahrens, wie es im Vorangehenden und im Folgenden beschrieben ist, können auch Merkmale des Computerprogramms und/oder des computerlesbaren Mediums sein.
-
Ein weiterer Aspekt der Erfindung betrifft ein eingebettetes System. Das eingebettete System umfasst eine erste Speichereinheit mit einer Programmcode zum Starten mindestens eines ersten Betriebssystems enthaltenden ersten Partition und einer Programmcode zum Starten mindestens eines zweiten Betriebssystems enthaltenden zweiten Partition, eine zweite Speichereinheit mit einer Programmcode zum Starten mindestens eines dritten Betriebssystems enthaltenden dritten Partition und einer Programmcode zum Starten mindestens eines vierten Betriebssystems enthaltenden vierten Partition sowie einen an die erste Speichereinheit und die zweite Speichereinheit angebundenen Prozessor zum Ausführen eines Computerprogramms, wie es im Vorangehenden und im Folgenden beschrieben ist. Merkmale des Verfahrens, wie es im Vorangehenden und im Folgenden beschrieben ist, können auch Merkmale des eingebetteten Systems sein und umgekehrt.
-
Gemäß einer Ausführungsform kann die erste Speichereinheit einen NAND-Speicher umfassen (NAND = not and; „nicht und“). Zusätzlich oder alternativ kann die zweite Speichereinheit einen NOR-Speicher (NOR = not or; „nicht oder“) umfassen. Unter einem NAND-Speicher kann ein Flash-Speicher mit ähnlich einem NAND-Gatter verschalteten Einzelzellen verstanden werden. Unter einem NOR-Speicher kann ein Flash-Speicher mit ähnlich einem NOR-Gatter verschalteten Einzelzellen verstanden werden. Dadurch kann das eingebettete System kompakt gehalten werden und kostengünstig hergestellt werden.
-
Gemäß einer Ausführungsform kann die erste Speichereinheit einen eMMC-Speicher (eMMC = embedded Multi Media Card; „eingebettete Multimediakarte“) umfassen. Zusätzlich oder alternativ kann die zweite Speichereinheit einen QSPI-Speicher umfassen (QSPI = Queued Serial Peripheral Interface). Unter einem eMMC-Speicher kann eine auf dem MMC-Standard (MMC = MultiMediaCard) aufbauende Speicherkarte verstanden werden. Unter einem QSPI-Speicher kann ein über einen SPI-Bus (SPI = Serial Peripheral Interface) eingebundener Speicher verstanden werden.
-
Im Folgenden werden Ausführungsbeispiele der Erfindung mit Bezug auf die beiliegenden Figuren detailliert beschrieben.
- 1 zeigt schematisch ein eingebettetes System gemäß einem Ausführungsbeispiel der Erfindung.
- 2 zeigt ein Ablaufdiagramm eines Verfahrens zum Aktualisieren einer Firmware auf dem eingebetteten System aus 1.
-
Die in den Figuren verwendeten Bezugszeichen und ihre Bedeutung sind in zusammenfassender Form in der Liste der Bezugszeichen aufgeführt. Grundsätzlich sind identische oder ähnliche Teile mit den gleichen Bezugszeichen versehen.
-
1 zeigt schematisch ein eingebettetes System 100 mit einer ersten Speichereinheit 102, einer zweiten Speichereinheit 104 und einem Prozessor 106, der jeweils über einen geeigneten Datenbus mit den beiden Speichereinheiten 102, 104 verbunden ist. Das eingebettete System 100 ist beispielhaft als Ein-Chip-System realisiert. Dementsprechend sind die beiden Speichereinheiten 102, 104 und der Prozessor 106 auf einem einzigen Chip 108 integriert. Möglich ist jedoch auch, dass das eingebettete System 100 mehrere Chips umfasst, wobei die beiden Speichereinheiten 102, 104 und der Prozessor 106 auf unterschiedlichen Chips integriert sein können.
-
Gemäß einem Ausführungsbeispiel ist die erste Speichereinheit 104 als eMMC-Speicher und die zweite Speichereinheit 106 als QSPI-Speicher realisiert.
-
Die erste Speichereinheit 102 umfasst eine erste Partition 110, auf der Programmcode einer ersten Firmware gespeichert ist. Die erste Firmware kann auf dem Prozessor 106 ausgeführt werden. Dabei wird eine erste primäre Bootkette 111 gestartet, durch die ein erster Hypervisor 112 und, darauf aufbauend, eines oder mehrere erste Betriebssysteme 114 geladen werden. Unter einer Bootkette kann im Allgemeinen ein in mehreren Stufen ablaufender Prozess zum Starten eines Betriebssystems nach einem Kalt- oder Warmstart des eingebetteten Systems 100 verstanden werden. Vereinfacht ausgedrückt kann dabei zunächst ein einfaches Programm ausgeführt werden. Dies ermöglicht wiederum ein Ausführen eines oder mehrerer komplexerer Programme, wodurch schließlich ein Betriebssystem gestartet werden kann.
-
Ferner umfasst die erste Speichereinheit 104 eine zweite Partition 116, auf der Programmcode einer zweiten Firmware gespeichert ist. Die zweite Firmware kann auf dem Prozessor 106 ausgeführt werden. Dabei wird eine erste Backup-Bootkette 117 gestartet, durch die ein zweiter Hypervisor 118 und, darauf aufbauend, eines oder mehrere zweite Betriebssysteme 120 geladen werden.
-
Die zweite Speichereinheit 104 umfasst eine dritte Partition 122, auf der Programmcode einer dritten Firmware gespeichert ist. Die dritte Firmware kann auf dem Prozessor 106 ausgeführt werden. Dabei wird eine zweite primäre Bootkette 123 gestartet, durch die ein dritter Hypervisor 124 und, darauf aufbauend, eines oder mehrere dritte Betriebssysteme 126 geladen werden. Ferner umfasst die zweite Speichereinheit 104 eine vierte Partition 128, auf der Programmcode einer vierten Firmware gespeichert ist. Die vierte Firmware kann auf dem Prozessor 106 ausgeführt werden. Dabei wird eine zweite Backup-Bootkette 129 gestartet, durch die ein vierter Hypervisor 130 und, darauf aufbauend, eines oder mehrere vierte Betriebssysteme 132 geladen werden.
-
Die Betriebssysteme 114, 120, 126, 132 können beispielsweise jeweils in einer virtuellen Umgebung laufende Gastbetriebssysteme sein.
-
Bei der zweiten Speichereinheit 104 kann es sich beispielsweise um ein Wiederherstellungsmedium zum Wiederherstellen von Daten auf der ersten Speichereinheit 102 handeln.
-
Das erste Betriebssystem 114 ist konfiguriert, um die in der zweiten Partition 116 enthaltene zweite Firmware zu aktualisieren, sofern die zweite Partition 116 inaktiv ist, wie durch einen ersten Pfeil 134 angedeutet. Umgekehrt kann das zweite Betriebssystem 120 konfiguriert sein, um die in der ersten Partition 110 enthaltene erste Firmware zu aktualisieren, sofern die erste Partition 110 inaktiv ist, wie durch einen zweiten Pfeil 136 angedeutet.
-
Analog dazu ist das dritte Betriebssystem 126 konfiguriert, um die in der vierten Partition 128 enthaltene vierte Firmware zu aktualisieren, sofern die vierte Partition 128 inaktiv ist, wie durch einen dritten Pfeil 138 angedeutet. Umgekehrt kann das vierte Betriebssystem 132 konfiguriert sein, um die in der dritten Partition 122 enthaltene dritte Firmware zu aktualisieren, sofern die dritte Partition 122 inaktiv ist, wie durch einen vierten Pfeil 140 angedeutet.
-
Das erste Betriebssystem 114 und/oder das zweite Betriebssystem 120 kann etwa auch konfiguriert sein, um die dritte Firmware und/oder die vierte Firmware zu aktualisieren. Umgekehrt kann etwa auch das dritte Betriebssystem 126 und/oder das vierte Betriebssystem 132 konfiguriert sein, um die erste Firmware und/oder die zweite Firmware zu aktualisieren.
-
Die Aktualisierung der Firmware-Versionen erfolgt jeweils mit einer entsprechenden Aktualisierungsdatei 142. Diese kann beispielsweise in einem Dateisystem des jeweiligen Betriebssystems, das die Aktualisierung durchführt, abgelegt sein. Alternativ kann die Aktualisierungsdatei 142 auch über eine entsprechende Schnittstelle von einem externen Gerät empfangen werden.
-
Die erste primäre Bootkette 111 und die erste Backup-Bootkette 117 können miteinander identisch sein. Ebenso können die zweite primäre Bootkette 123 und die zweite Backup-Bootkette 129 miteinander identisch sein. Eine in der ersten Speichereinheit 102 abgespeicherte Bootkette muss jedoch nicht zwangsläufig mit einer in der zweiten Speichereinheit 104 abgespeicherten Bootkette identisch sein.
-
Die erste primäre Bootkette 111 kann beispielsweise standardmäßig geladen werden, während die erste Backup-Bootkette 117, die zweite primäre Bootkette 123 und die zweite Backup-Bootkette 129 zur Wiederherstellung genutzt werden können, etwa wenn die erste primäre Bootkette 111 aus irgendeinem Grund nicht geladen werden kann.
-
Ein Kaltstart kann standardmäßig über die primären Bootketten 111, 123 erfolgen. Die Backup-Bootketten 117, 129 können hingegen beispielsweise bei einem Warmstart geladen werden, wenn ein genau definiertes Register auf einen genau definierten Wert festgelegt ist.
-
2 zeigt ein Ablaufdiagramm eines Verfahrens 200 zum Aktualisieren einer Firmware auf dem eingebetteten System 100 aus 1.
-
Das Verfahren 200 startet mit einem Schritt 202, in dem das erste Betriebssystem 114 durch Laden der ersten primären Bootkette 111 gestartet wird.
-
Hierauf wird in einem Schritt 204 eine Version der in der zweiten Partition 116 gespeicherten zweiten Firmware überprüft. Die zweite Partition 116 ist dabei inaktiv, d. h., das zweite Betriebssystem 120 ist dabei nicht gestartet. Ob die zweite Firmware zu aktualisieren ist, kann beispielsweise dadurch festgestellt werden, dass die Version der zweiten Firmware mit einer Version der ersten Firmware durch das erste Betriebssystem 114 verglichen wird.
-
Ist die Version der zweiten Firmware älter als die Version der ersten Firmware, wird in einem Schritt 206 die entsprechende Aktualisierungsdatei 142 empfangen. Die zweite Firmware wird daraufhin mit der Aktualisierungsdatei 142 aktualisiert, sodass die Versionen der ersten Firmware und der zweiten Firmware miteinander übereinstimmen. Dabei kann ein Speicherbereich, in dem die zweite Firmware gespeichert ist, mit in der Aktualisierungsdatei 142 enthaltenen Daten überschrieben werden.
-
Ist hingegen die Version der ersten Firmware älter als die Version der zweiten Firmware, wird in einem Schritt 208 durch Laden der ersten Backup-Bootkette 117 das zweite Betriebssystem 120 gestartet. Die erste Partition 110 ist dabei inaktiv, d. h., das erste Betriebssystem 114 ist dabei nicht gestartet.
-
In einem Schritt 210 wird dann die erste Firmware mit der Aktualisierungsdatei 142 aktualisiert, sodass die Versionen der ersten Firmware und der zweiten Firmware miteinander übereinstimmen. Dabei kann ein Speicherbereich, in dem die erste Firmware gespeichert ist, mit in der Aktualisierungsdatei 142 enthaltenen Daten überschrieben werden.
-
In einem weiteren Schritt 212 wird überprüft, ob die Aktualisierung der ersten Firmware bzw. der zweiten Firmware erfolgreich war. Dazu kann beispielsweise ein Reset durchgeführt werden und eine aktualisierte erste Firmware bzw. eine aktualisierte zweite Firmware geladen werden. Sofern die erste Firmware das erste Betriebssystem 114 umfasst, kann durch die Aktualisierung der ersten Firmware auch das erste Betriebssystem 114 aktualisiert worden sein. Sofern die zweite Firmware das zweite Betriebssystem 120 umfasst, kann durch die Aktualisierung der zweiten Firmware auch das zweite Betriebssystem 120 aktualisiert worden sein.
-
War die Aktualisierung erfolgreich, wird in einem Schritt 214 durch Laden der zweiten primären Bootkette 123 das dritte Betriebssystem 126 gestartet.
-
War die Aktualisierung nicht erfolgreich, beispielsweise weil die Aktualisierung nicht abgeschlossen werden konnte und/oder die jeweils aktualisierte Firmware nach dem Reset nicht geladen werden konnte, wird in einem Schritt 216 eine zuletzt funktionierende Version der jeweiligen Firmware wiederhergestellt. Beispielsweise kann durch das erste Betriebssystem 114 eine zuletzt funktionierende Version der zweiten Firmware wiederhergestellt werden bzw. durch das zweite Betriebssystem 120 eine zuletzt funktionierende Version der ersten Firmware wiederhergestellt werden.
-
In den nachfolgenden Schritten erfolgt die Aktualisierung der dritten Firmware bzw. der vierten Firmware analog zur vorangehend beschriebenen Aktualisierung der ersten Firmware bzw. der zweiten Firmware.
-
Dazu wird in einem Schritt 218 eine Version der in der vierten Partition 128 gespeicherten vierten Firmware durch das dritte Betriebssystem 126 überprüft. Die vierte Partition 128 ist dabei inaktiv, d. h., das vierte Betriebssystem 132 ist dabei nicht gestartet. Ob die vierte Firmware zu aktualisieren ist, kann beispielsweise dadurch festgestellt werden, dass die Version der dritten Firmware mit einer Version der vierten Firmware durch das dritte Betriebssystem 126 verglichen wird.
-
Ist die Version der vierten Firmware älter als die Version der dritten Firmware, wird in einem Schritt 220 die entsprechende Aktualisierungsdatei 142 empfangen. Die vierte Firmware wird daraufhin mit der Aktualisierungsdatei 142 aktualisiert, sodass die Versionen der dritten Firmware und der vierten Firmware miteinander übereinstimmen. Dabei kann ein Speicherbereich, in dem die vierte Firmware gespeichert ist, mit in der Aktualisierungsdatei 142 enthaltenen Daten überschrieben werden.
-
Ist hingegen die Version der dritten Firmware älter als die Version der vierten Firmware, wird in einem Schritt 222 durch Laden der zweiten Backup-Bootkette 129 das vierte Betriebssystem 132 gestartet. Die dritte Partition 122 ist dabei inaktiv, d. h., das dritte Betriebssystem 126 ist dabei nicht gestartet.
-
In einem Schritt 224 wird dann die dritte Firmware mit der Aktualisierungsdatei 142 aktualisiert, sodass die Versionen der dritten Firmware und der vierten Firmware miteinander übereinstimmen. Dabei kann ein Speicherbereich, in dem die dritte Firmware gespeichert ist, mit in der Aktualisierungsdatei 142 enthaltenen Daten überschrieben werden.
-
In einem weiteren Schritt 226 wird überprüft, ob die Aktualisierung der dritten Firmware bzw. der vierten Firmware erfolgreich war. Dazu kann beispielsweise ein Reset durchgeführt werden und eine aktualisierte dritte Firmware bzw. eine aktualisierte vierte Firmware geladen werden. Sofern die dritte Firmware das dritte Betriebssystem 126 umfasst, kann durch die Aktualisierung der dritten Firmware auch das dritte Betriebssystem 126 aktualisiert worden sein. Sofern die vierte Firmware das vierte Betriebssystem 132 umfasst, kann durch die Aktualisierung der vierten Firmware auch das vierte Betriebssystem 132 aktualisiert worden sein.
-
War die Aktualisierung erfolgreich, wird das Verfahren 200 in einem Schritt 228 beendet.
-
War die Aktualisierung nicht erfolgreich, beispielsweise weil die Aktualisierung nicht abgeschlossen werden konnte und/oder die jeweils aktualisierte Firmware nach dem Reset nicht geladen werden konnte, wird in einem Schritt 230 eine zuletzt funktionierende Version der jeweiligen Firmware wiederhergestellt. Beispielsweise kann durch das dritte Betriebssystem 126 eine zuletzt funktionierende Version der vierten Firmware wiederhergestellt werden bzw. durch das vierte Betriebssystem 132 eine zuletzt funktionierende Version der dritten Firmware wiederhergestellt werden.
-
Die Reihenfolge der vorangehend beschriebenen Verfahrensschritte ist lediglich beispielhaft. Je nach Ausführungsbeispiel ist auch eine beliebige andere Reihenfolge bei der Aktualisierung der Firmware der verschiedenen Partitionen möglich. Möglich ist beispielsweise auch, dass die in der dritten Partition 122 und/oder der vierten Partition 128 enthaltene Firmware zu einem späteren Zeitpunkt und/oder weniger häufig als die in der ersten Partition 110 und/oder der zweiten Partition 116 enthaltene Firmware aktualisiert wird oder umgekehrt.
-
Ergänzend ist darauf hinzuweisen, dass „umfassend“ keine anderen Elemente oder Schritte ausschließt und „eine“ oder „ein“ keine Vielzahl ausschließt. Ferner sei darauf hingewiesen, dass Merkmale oder Schritte, die mit Verweis auf eines der obigen Ausführungsbeispiele beschrieben worden sind, auch in Kombination mit anderen Merkmalen oder Schritten anderer oben beschriebener Ausführungsbeispiele verwendet werden können. Bezugszeichen in den Ansprüchen sind nicht als Einschränkung anzusehen.
-
Bezugszeichenliste
-
- 100
- eingebettetes System
- 102
- erste Speichereinheit
- 104
- zweite Speichereinheit
- 106
- Prozessor
- 108
- Chip
- 110
- erste Partition
- 111
- erste primäre Bootkette
- 112
- erster Hypervisor
- 114
- erstes Betriebssystem
- 116
- zweite Partition
- 117
- erste Backup-Bootkette
- 118
- zweiter Hypervisor
- 120
- zweites Betriebssystem
- 122
- dritte Partition
- 123
- zweite primäre Bootkette
- 124
- dritter Hypervisor
- 126
- drittes Betriebssystem
- 128
- vierte Partition
- 129
- zweite Backup-Bootkette
- 130
- vierter Hypervisor
- 132
- viertes Betriebssystem
- 134
- Firmware-Aktualisierung durch das erste Betriebssystem
- 136
- Firmware-Aktualisierung durch das zweite Betriebssystem
- 138
- Firmware-Aktualisierung durch das zweite Betriebssystem
- 140
- Firmware-Aktualisierung durch das vierte Betriebssystem
- 142
- Aktualisierungsdatei
- 200
- Verfahren zur Aktualisierung einer Firmware
- 202
- Starten des ersten Betriebssystems
- 204
- Vergleichen einer Version der zweiten Firmware mit einer Version der ersten Firmware
- 206
- Aktualisieren der zweiten Firmware
- 208
- Starten des zweiten Betriebssystems
- 210
- Aktualisieren der ersten Firmware
- 212
- Überprüfen der Aktualisierung der ersten bzw. zweiten Firmware
- 214
- Starten des dritten Betriebssystems
- 216
- Wiederherstellen einer zuletzt funktionierenden Version der ersten bzw. zweiten Firmware
- 218
- Vergleichen einer Version der dritten Firmware mit einer Version der vierten Firmware
- 220
- Aktualisieren der vierten Firmware
- 222
- Starten des vierten Betriebssystems
- 224
- Aktualisieren der dritten Firmware
- 226
- Überprüfen der Aktualisierung der dritten bzw. vierten Firmware
- 228
- Beenden des Verfahrens