DE102019215807A1 - Verfahren zum Aktualisieren einer Firmware auf einem eingebetteten System - Google Patents

Verfahren zum Aktualisieren einer Firmware auf einem eingebetteten System Download PDF

Info

Publication number
DE102019215807A1
DE102019215807A1 DE102019215807.2A DE102019215807A DE102019215807A1 DE 102019215807 A1 DE102019215807 A1 DE 102019215807A1 DE 102019215807 A DE102019215807 A DE 102019215807A DE 102019215807 A1 DE102019215807 A1 DE 102019215807A1
Authority
DE
Germany
Prior art keywords
partition
operating system
firmware
program code
contained
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019215807.2A
Other languages
English (en)
Inventor
Alexandre Opeck de Morais Bordignon
Axel Mühring
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZF Friedrichshafen AG
Original Assignee
ZF Friedrichshafen AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZF Friedrichshafen AG filed Critical ZF Friedrichshafen AG
Priority to DE102019215807.2A priority Critical patent/DE102019215807A1/de
Publication of DE102019215807A1 publication Critical patent/DE102019215807A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4406Loading of operating system

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

Die Erfindung betrifft ein Verfahren (200) zum Aktualisieren einer Firmware auf einem eingebetteten System (100). Das eingebettete System (100) umfasst eine erste Speichereinheit (102) mit einer Programmcode zum Starten mindestens eines ersten Betriebssystems (114) enthaltenden ersten Partition (110) und einer Programmcode zum Starten mindestens eines zweiten Betriebssystems (120) enthaltenden zweiten Partition (116), eine zweite Speichereinheit (104) mit einer Programmcode zum Starten mindestens eines dritten Betriebssystems (126) enthaltenden dritten Partition (122) und einer Programmcode zum Starten mindestens eines vierten Betriebssystems (132) enthaltenden vierten Partition (128) sowie einen an die erste Speichereinheit (102) und die zweite Speichereinheit (104) angebundenen Prozessor (106) zum Ausführen von Programmcode umfasst. Das Verfahren (200) umfasst folgende Schritte: Starten eines ersten Betriebssystems (114) durch Ausführen von in der ersten Partition (110) enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei (142) und Aktualisieren von in der zweiten Partition (116) enthaltenem Programmcode einer Firmware mit der Aktualisierungsdatei (142) durch das erste Betriebssystem (114); Starten eines dritten Betriebssystems (126) durch Ausführen von in der dritten Partition (122) enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei (142) und Aktualisieren von in der vierten Partition (128) enthaltenem Programmcode einer Firmware mit der Aktualisierungsdatei (142) durch das dritte Betriebssystem (126).

Description

  • 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

Claims (15)

  1. Verfahren (200) zum Aktualisieren einer Firmware auf einem eingebetteten System (100), wobei das eingebettete System (100) eine erste Speichereinheit (102) mit einer Programmcode zum Starten mindestens eines ersten Betriebssystems (114) enthaltenden ersten Partition (110) und einer Programmcode zum Starten mindestens eines zweiten Betriebssystems (120) enthaltenden zweiten Partition (116), eine zweite Speichereinheit (104) mit einer Programmcode zum Starten mindestens eines dritten Betriebssystems (126) enthaltenden dritten Partition (122) und einer Programmcode zum Starten mindestens eines vierten Betriebssystems (132) enthaltenden vierten Partition (128) sowie einen an die erste Speichereinheit (102) und die zweite Speichereinheit (104) angebundenen Prozessor (106) zum Ausführen von Programmcode umfasst, wobei das Verfahren (200) umfasst: Starten eines ersten Betriebssystems (114) durch Ausführen von in der ersten Partition (110) enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei (142) und Aktualisieren von in der zweiten Partition (116) enthaltenem Programmcode einer Firmware mit der Aktualisierungsdatei (142) durch das erste Betriebssystem (114); Starten eines dritten Betriebssystems (126) durch Ausführen von in der dritten Partition (122) enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei (142) und Aktualisieren von in der vierten Partition (128) enthaltenem Programmcode einer Firmware mit der Aktualisierungsdatei (142) durch das dritte Betriebssystem (126).
  2. Verfahren (200) nach Anspruch 1, weiter umfassend: wenn der in der zweiten Partition (116) enthaltene Programmcode der Firmware aktualisiert wurde: Starten eines zweiten Betriebssystems (120) durch Ausführen von in der zweiten Partition (116) enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei (142) und Aktualisieren von in der ersten Partition (110) enthaltenem Programmcode einer Firmware mit der Aktualisierungsdatei (142) durch das zweite Betriebssystem (120); und/oder wenn ein in der ersten Partition (110) enthaltener Programmcode einer Firmware aktualisiert wurde: Starten des dritten Betriebssystems (126) durch Ausführen des in der dritten Partition (122) enthaltenen Programmcodes; Empfangen der Aktualisierungsdatei (142) und Aktualisieren des in der vierten Partition (128) enthaltenen Programmcodes der Firmware mit der Aktualisierungsdatei (142) durch das dritte Betriebssystem (126); und/oder wenn der in der vierten Partition (128) enthaltene Programmcode der Firmware aktualisiert wurde: Starten eines vierten Betriebssystems (132) durch Ausführen von in der vierten Partition (128) enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei (142) und Aktualisieren von in der dritten Partition (122) enthaltenem Programmcode einer Firmware mit der Aktualisierungsdatei (142) durch das vierte Betriebssystem (132).
  3. Verfahren (200) nach einem der vorangehenden Ansprüche, weiter umfassend: Bestimmen, ob die erste Partition (110) und die zweite Partition (116) unterschiedliche Versionen einer Firmware enthalten; wenn die erste Partition (110) eine neuere Version der Firmware enthält: Empfangen einer Aktualisierungsdatei (142) und Aktualisieren einer in der zweiten Partition (116) enthaltenen Version der Firmware auf die neuere Version mit der Aktualisierungsdatei (142) durch das erste Betriebssystem (114); und/oder wenn die zweite Partition (116) eine neuere Version der Firmware enthält: Starten eines zweiten Betriebssystems (120) durch Ausführen von in der zweiten Partition (116) enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei (142) und Aktualisieren einer in der ersten Partition (110) enthaltenen Version der Firmware auf die neuere Version mit der Aktualisierungsdatei (142) durch das zweite Betriebssystem (120).
  4. Verfahren (200) nach einem der vorangehenden Ansprüche, weiter umfassend: Bestimmen, ob die dritte Partition (122) und die vierte Partition (128) unterschiedliche Versionen einer Firmware enthalten; wenn die dritte Partition (122) eine neuere Version der Firmware enthält: Empfangen einer Aktualisierungsdatei (142) und Aktualisieren einer in der vierten Partition (128) enthaltenen Version der Firmware auf die neuere Version mit der Aktualisierungsdatei (142) durch das dritte Betriebssystem (126); und/oder wenn die vierte Partition (128) eine neuere Version der Firmware enthält: Starten eines vierten Betriebssystems (132) durch Ausführen von in der vierten Partition (128) enthaltenem Programmcode; Empfangen einer Aktualisierungsdatei (142) und Aktualisieren einer in der dritten Partition (122) enthaltenen Version der Firmware auf die neuere Version mit der Aktualisierungsdatei (142) durch das vierte Betriebssystem (132).
  5. Verfahren (200) nach einem der vorhergehenden Ansprüche, wobei das erste Betriebssystem (114) bei einem Kaltstart gestartet wird; und/oder wobei das zweite Betriebssystem (120) bei einem Warmstart gestartet wird; und/oder wobei das dritte Betriebssystem (126) bei einem Kaltstart gestartet wird; und/oder wobei das vierte Betriebssystem (132) bei einem Warmstart gestartet wird.
  6. Verfahren (200) nach einem der vorhergehenden Ansprüche, weiter umfassend: wenn das Starten des ersten Betriebssystems (114) fehlschlägt: Starten eines zweiten Betriebssystems (120) durch Ausführen von in der zweiten Partition (116) enthaltenem Programmcode; und/oder wenn das Starten des dritten Betriebssystems (126) fehlschlägt: Starten eines vierten Betriebssystems (132) durch Ausführen von in der vierten Partition (128) enthaltenem Programmcode.
  7. Verfahren (200) nach Anspruch 6, weiter umfassend: wenn das Starten des zweiten Betriebssystems (120) fehlschlägt: Starten eines dritten Betriebssystems (126) durch Ausführen von in der dritten Partition (122) enthaltenem Programmcode.
  8. Verfahren (200) nach Anspruch 6 oder 7, weiter umfassend: Wiederherstellen einer zuletzt funktionierenden Version der ersten Partition (110) durch das zweite Betriebssystem (120); und/oder Wiederherstellen einer zuletzt funktionierenden Version der dritten Partition (122) durch das vierte Betriebssystem (132).
  9. Verfahren (200) nach einem der vorhergehenden Ansprüche, weiter umfassend: wenn das Aktualisieren des in der ersten Partition (110) enthaltenen Programmcodes der Firmware fehlschlägt: Wiederherstellen einer zuletzt funktionierenden Version der ersten Partition (110); und/oder wenn das Aktualisieren des in der zweiten Partition (116) enthaltenen Programmcodes der Firmware fehlschlägt: Wiederherstellen einer zuletzt funktionierenden Version der zweiten Partition (116); und/oder wenn das Aktualisieren des in der dritten Partition (122) enthaltenen Programmcodes der Firmware fehlschlägt: Wiederherstellen einer zuletzt funktionierenden Version der dritten Partition (122); und/oder wenn das Aktualisieren des in der vierten Partition (128) enthaltenen Programmcodes der Firmware fehlschlägt: Wiederherstellen einer zuletzt funktionierenden Version der vierten Partition (128).
  10. Verfahren (200) nach Anspruch 8 oder 9, wobei die zuletzt funktionierende Version der ersten Partition (110) mit Daten aus der zweiten Partition (116) wiederhergestellt wird; und/oder wobei die zuletzt funktionierende Version der zweiten Partition (116) mit Daten aus der ersten Partition (110) wiederhergestellt wird; und/oder wobei die zuletzt funktionierende Version der dritten Partition (122) mit Daten aus der vierten Partition (128) wiederhergestellt wird; und/oder wobei die zuletzt funktionierende Version der vierten Partition (128) mit Daten aus der dritten Partition (122) wiederhergestellt wird.
  11. Computerprogramm, das, wenn es auf einem Prozessor (106) ausgeführt wird, das Verfahren (200) nach einem der vorhergehenden Ansprüche durchführt.
  12. Computerlesbares Medium, auf dem ein Computerprogramm nach Anspruch 11 gespeichert ist.
  13. Eingebettetes System (100), aufweisend: eine erste Speichereinheit (102) mit einer Programmcode zum Starten mindestens eines ersten Betriebssystems (114) enthaltenden ersten Partition (110) und einer Programmcode zum Starten mindestens eines zweiten Betriebssystems (120) enthaltenden zweiten Partition (116); eine zweite Speichereinheit (104) mit einer Programmcode zum Starten mindestens eines dritten Betriebssystems (126) enthaltenden dritten Partition (122) und einer Programmcode zum Starten mindestens eines vierten Betriebssystems (132) enthaltenden vierten Partition (128); einen an die erste Speichereinheit (102) und die zweite Speichereinheit (104) angebundenen Prozessor (106) zum Ausführen eines Computerprogramms nach Anspruch 11.
  14. Eingebettetes System (100) nach Anspruch 13, wobei die erste Speichereinheit (102) einen NAND-Speicher umfasst; und/oder wobei die zweite Speichereinheit (104) einen NOR-Speicher umfasst.
  15. Eingebettetes System (100) nach Anspruch 13 oder 14, wobei die erste Speichereinheit (102) einen eMMC-Speicher umfasst; und/oder wobei die zweite Speichereinheit (104) einen QSPI-Speicher umfasst.
DE102019215807.2A 2019-10-15 2019-10-15 Verfahren zum Aktualisieren einer Firmware auf einem eingebetteten System Pending DE102019215807A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102019215807.2A DE102019215807A1 (de) 2019-10-15 2019-10-15 Verfahren zum Aktualisieren einer Firmware auf einem eingebetteten System

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019215807.2A DE102019215807A1 (de) 2019-10-15 2019-10-15 Verfahren zum Aktualisieren einer Firmware auf einem eingebetteten System

Publications (1)

Publication Number Publication Date
DE102019215807A1 true DE102019215807A1 (de) 2021-04-15

Family

ID=75155443

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019215807.2A Pending DE102019215807A1 (de) 2019-10-15 2019-10-15 Verfahren zum Aktualisieren einer Firmware auf einem eingebetteten System

Country Status (1)

Country Link
DE (1) DE102019215807A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117234544A (zh) * 2023-11-14 2023-12-15 海马云(天津)信息技术有限公司 服务器设备进行系统恢复的方法和装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117234544A (zh) * 2023-11-14 2023-12-15 海马云(天津)信息技术有限公司 服务器设备进行系统恢复的方法和装置
CN117234544B (zh) * 2023-11-14 2024-01-26 海马云(天津)信息技术有限公司 服务器设备进行系统恢复的方法和装置

Similar Documents

Publication Publication Date Title
DE102012109614B4 (de) Verfahren zum Wiederherstellen von Stapelüberlauf- oder Stapelunterlauffehlern in einer Softwareanwendung
DE60008929T2 (de) Schnellstart eines mikroprozessorbasierten systems
DE69027167T2 (de) Rechnersystem mit Programmladegerät und Ladeverfahren
DE112009002207B4 (de) Aktualisieren einer Firmware mit mehreren Prozessoren
DE112008002767B4 (de) Mobiles Handgerät, das eine effiziente Sicherung und Wiedergewinnung von Blöcken während einer Aktualisierung einsetzt
DE102011075776A1 (de) Verfahren und System zum Aktualisieren eines gemeinsam genutzten Speichers
DE112012005118T5 (de) Sichern von Firmware während der Initialisierung einer Einheit
DE112012005589T5 (de) Informationsverarbeitungsvorrichtung, Informationsverarbeitungsverfahren und Computerprogramm
DE202015101633U1 (de) Computersystem und Speichervorrichtung
DE102015110710A1 (de) Effiziente Flash-Programmierung
DE102013021679A1 (de) Rettung von Ereignisnachverfolgungsinformationen bei Stromausfall-Unterbrechungsszenarien
DE102006029690A1 (de) Beibehaltung einer Identifikation einer elektronischen Steuereinheit bei Umprogrammierungsereignissen
DE112006003504T5 (de) Detektion von Cachespeicher-Disassoziierung
WO2017045840A1 (de) Vorrichtung zum verarbeiten von daten und verfahren zum betreiben einer solchen vorrichtung
DE102013213314A1 (de) Hinterlegen mindestens eines berechenbaren Integritätsmesswertes in einem Speicherbereich eines Speichers
DE102019215807A1 (de) Verfahren zum Aktualisieren einer Firmware auf einem eingebetteten System
DE102015207795A1 (de) Verfahren und Vorrichtung zum Aktualisieren von Software in einem Transportmittel
DE102017125172A1 (de) Verfahren zur Aktualisierung eines Bootloaders eines Controllers einer Leuchte
DE102019201607A1 (de) Steuerungssystem für ein Kraftfahrzeug
WO2020099023A2 (de) Steuergerät für eine fahrzeugkomponente, kit umfassend ein steuergerät und eine testereinrichtung, fahrzeug, verfahren zum aktualisieren eines steuergeräts und computerlesbares speichermedium
DE19946959B4 (de) Verfahren zum Laden von Daten für grundlegende Systemroutinen
DE102006016743A1 (de) Computersystem, Verfahren zum Starten eines Computersystems und Verfahren zum Speichern eines BIOS-Programms
EP2596429B1 (de) Verfahren zum ausführen eines dienstprogramms, computersystem und computerprogrammprodukt
DE102009002898A1 (de) Verfahren zur Aktualisierung eines Steuergeräts eines Fahrzeugs
DE102017108288B4 (de) Aktualisieren eines Speichers

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0009445000

Ipc: G06F0008650000