DE102019128220A1 - Verfahren zum selektiven Verwenden eines Bootloaders und Verfahren zum selektiven Durchlaufen einer Codesequenz eines Bootloaders - Google Patents

Verfahren zum selektiven Verwenden eines Bootloaders und Verfahren zum selektiven Durchlaufen einer Codesequenz eines Bootloaders Download PDF

Info

Publication number
DE102019128220A1
DE102019128220A1 DE102019128220.9A DE102019128220A DE102019128220A1 DE 102019128220 A1 DE102019128220 A1 DE 102019128220A1 DE 102019128220 A DE102019128220 A DE 102019128220A DE 102019128220 A1 DE102019128220 A1 DE 102019128220A1
Authority
DE
Germany
Prior art keywords
application
bootloader
coding
indication
memory area
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
DE102019128220.9A
Other languages
English (en)
Inventor
Martin Winker
Jonas Kiefer
Fabian Armbruster
Markus Weh
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.)
MinebeaMitsumi Inc
Original Assignee
MinebeaMitsumi Inc
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 MinebeaMitsumi Inc filed Critical MinebeaMitsumi Inc
Priority to DE102019128220.9A priority Critical patent/DE102019128220A1/de
Publication of DE102019128220A1 publication Critical patent/DE102019128220A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates

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

Verfahren zum selektiven Verwenden eines Bootloaders zum Ändern von Code in mindestens einer Applikation einer softwaregesteuerten Vorrichtung, insbesondere eines Aktuators in einem Fahrzeug, wobei eine Mehrzahl der softwaregesteuerten Vorrichtungen über einen gemeinsamen Daten-Bus, insbesondere einen LIN-Bus, betrieben wird, das Verfahren umfassend: a) Adressieren, durch ein LIN, der Vorrichtungen, wobei das Adressieren durch Zuordnen einer LIN-Adresse zu jeder Vorrichtung an dem Bus erfolgt; b)Festlegen mindestens einer Codierung zu jeder LIN-Adresse, wobei die Codierung einen ersten Codeabschnitt umfasst, der die LIN-Adresse repräsentiert; c) Festlegen, mittels der Codierung, insbesondere mittels eines zweiten Codeabschnittes, eines gemeinsamen Speicherbereiches, wobei der Speicherbereich für den Bootloader und die Applikation zugänglich sind; d) Erzeugen, in Reaktion auf ein Auslöseereignis, durch die Applikation, mindestens einer ersten Indikation, insbesondere einer Bootloader-Flag, wobei die erste Indikation der Vorrichtung zugeordnet wird, deren Applikation Code enthält, der geändert werden soll; e) Speichern, durch die Applikation, der Codierung und der ersten Indikation in den gemeinsamen Speicherbereich; f) Abrufen, durch den Bootloader, der Codierung und der ersten Indikation; und g) Ändern, durch die Applikation, des Applikationscodes der durch die Codierung indizierten Vorrichtung in Reaktion auf das Abrufen der ersten Indikation durch den Bootloader.

Description

  • Gebiet der Erfindung
  • Die Erfindung betrifft ein Verfahren zum selektiven Verwenden eines Bootloaders zum Ändern von Code in mindestens einer Applikation einer softwaregesteuerten Vorrichtung, insbesondere eines Aktuators in einem Fahrzeug.
  • Weiterhin betrifft die Erfindung ein Verfahren zum selektiven Durchlaufen einer Codesequenz eines Bootloaders infolge eines Unterbrechungsereignisses, insbesondere eines Resets einer Applikation einer softwaregesteuerten Vorrichtung in einem Fahrzeug.
  • Hintergrund
  • In Fahrzeugen werden oftmals verschiedene Geräte über einen gemeinsamen Bus (Daten-Bus), insbesondere einen LIN-Bus, betrieben. Die Geräte können z.B. Aktuatoren für verschiedene Anwendungen sein und dabei über unterschiedliche Softwareapplikationen sowie unterschiedliche Hardware verfügen. Üblicherweise besitzen die Geräte aber den gleichen Bootloader, auch wenn sich die Anwendungssoftware unterscheidet. Es besteht jedoch gelegentlich die Notwendigkeit Softwareapplikationen einzelner Geräte zu aktualisieren (updaten). Eine Möglichkeit besteht darin, die Geräte/ oder einzelne Geräte über den Lin-Bus unter Verwendung des LIN-Protokolls zu aktualisieren. In der Praxis ist dies jedoch nachteilig, weil durch das LIN-Protokoll in den Geräten viel Speicherplatz in Anspruch genommen wird. Eine weitere Möglichkeit besteht darin, Aktualisierungen (Updates) der Softwareapplikationen mittels des Bootloaders auf die Geräte zu übertragen. Allerdings hat dies zum Nachteil, dass nur alle Geräte gleichzeitig aktualisiert werden können.
  • Die Erfindung macht es sich zur Aufgabe, ein Verfahren bereitzustellen welches das selektive Updaten einzelner Geräte durch einen Bootloader erlaubt.
  • Diese Aufgabe wird durch die in den unabhängigen Ansprüchen angegebene Erfindung gelöst. Vorteilhafte Ausgestaltungen sind den Unteransprüchen zu entnehmen.
  • Kurzbeschreibung der Erfindung
  • Gemäß einem ersten Aspekt der Erfindung ist ein Verfahren der eingangs genannten Art geschaffen, wobei eine Mehrzahl der softwaregesteuerten Vorrichtungen über einen gemeinsamen Daten-Bus, insbesondere einen LIN-Bus, betrieben wird, das Verfahren umfassend:
    1. a) Adressieren, durch ein Daten-Bus, der Vorrichtungen, wobei das Adressieren durch Zuordnen einer Bus-Adresse zu jeder Vorrichtung an dem Daten-Bus erfolgt;
    2. b) Festlegen mindestens einer Codierung zu jeder Bus-Adresse, wobei die Codierung einen ersten Codeabschnitt umfasst, der die Bus-Adresse repräsentiert;
    3. c) Festlegen, mittels der Codierung, insbesondere mittels eines zweiten Codeabschnittes, eines gemeinsamen Speicherbereiches, wobei der Speicherbereich für den Bootloader und die Applikation zugänglich sind;
    4. d) Erzeugen, in Reaktion auf ein Auslöseereignis, durch die Applikation, mindestens einer ersten Indikation, insbesondere einer Bootloader-Flag, wobei die erste Indikation der Vorrichtung zugeordnet wird, deren Applikation Code enthält der geändert werden soll;
    5. e) Speichern, durch die Applikation, der Codierung und der ersten Indikation in den gemeinsamen Speicherbereich;
    6. f) Abrufen, durch den Bootloader, der Codierung und der ersten Indikation; und
    7. g) Ändern, durch die Applikation, des Applikationscodes der durch die Codierung indizierten Vorrichtung in
  • Reaktion auf das Abrufen der ersten Indikation durch den Bootloader.
  • Das Verfahren hat den Vorteil, dass alle Vorrichtungen an einem Bus (Daten-Bus), vorzugsweise einem LIN-Bus, individuell adressierbar sind. Durch das Zuordnen einer Indikation, vorzugsweise einer Bootloader-Flag, zu den individuellen Adressen, kann erreicht werden, dass serielles, individuelles Überschreiben (Flashen) der Vorrichtung, bzw. des Applikationscodes der Vorrichtungen unter Verwendung ein und desselben Bootloaders ermöglicht wird. Im Sinne der Anmeldung wird unter Flashen/Überschreiben, das Überschreiben gespeicherter Software, also das Ändern von Code der Software verstanden. Mit anderen Worten können alle Vorrichtungen, also auch verschiedene Geräte mit verschiedenen Applikationen selektiv durch denselben Bootloader upgedated (=durch Aktualisieren von Code, also Überschreiben, auf einen aktuellen Stand gebracht) werden. Die Erfindung beruht auf der Erkenntnis, dass a) eine eineindeutige Zuordnung der physikalischen Adressen der Vorrichtzungen auf dem LIN-Bus erforderlich ist, jedoch b) diesen Adressen ein weiterer Indikator, die Indikation, zugeordnet werden muss um zu erreichen, dass einzelne Vorrichtungen von dem Bootloader erkennbar sind. Dazu wird ein gemeinsamer Speicherbereich festgelegt, in dem diese Indikation ablegbar und durch den Bootloader abrufbar ist. Der Speicherbereich kann festgelegt werden, indem die individuelle LIN-Adresse „umcodiert“ wird, d.h. der Bus-Adresse (beispielsweise einer LIN-Adresse) wird ein weiterer Code zugeordnet, der zwei Codeabschnitte umfasst. Die Codeabschnitte dienen zur Codierung der Adresse und zur Codierung des gemeinsamen Speicherbereiches. Auf diese Weise kann der Bootloader bei Abruf der Bus-Adresse auch einen Adressbereich eines gemeinsamen Speicherbereiches abrufen. In diesem Adressbereich kann dann die Indikation, z.B. eine Flag, hinterlegt sein, anhand derer der Bootloader erkennen kann, dass eine bestimmte Vorrichtung eine Update-Routine zu durchlaufen hat.
  • In einer Ausgestaltung der Erfindung umfasst das Ändern ferner das Bewirken, durch den Bootloader, dass die Applikation eine Update Routine durchläuft. Der Bootloader bzw. dessen Code, ist selbst nicht veränderlich. Die Funktion des Bootloaders besteht darin, das Durchlaufen der Update-Routine durch die Applikation zu triggern. Dadurch kann jede Applikation, also auch Applikationen von verschiedenen Vorrichtungen, durch denselben Bootloader zum Durchlaufen der Update-Routine angeregt werden. Das Ändern des Codes, also das eigentliche Überschreiben zum Zwecke der Aktualisierung, erfolgt dann durch die Applikation selbst.
  • In einer Ausgestaltung der Erfindung umfasst das Verfahren das Schreiben, durch die Applikation, einer zweiten Indikation in den gemeinsamen Speicherbereich, wobei die zweite Indikation einen Grund für das Ändern des Applikationscodes repräsentiert, insbesondere wobei das Schreiben nach dem Durchlaufen der Updateroutine, durch die Applikation erfolgt. Mit Vorteil kann die Applikation/ der Bootloader den Grund des letzten Reset bestimmen, indem die zweite Indikation aus dem gemeinsamen Speicherbereich ausgelesen werden kann. Daraufhin kann ein Durchlaufen einer Bootloader-Sequenz angepasst werden. Mit anderen Worten können in Abhängigkeit des Reset-Grundes Bootloader-Sequenzen angepasst, insbesondere weggelassen werden. Dadurch kann z.B. ein Neustart der Applikation schneller erfolgen.
  • In einer Ausgestaltung der Erfindung ist der gemeinsame Speicherbereich ein Speicherbereich in einer nichtflüchtigen Speichervorrichtung. Dadurch wird ermöglicht, dass in dem Speicherbereich abgelegte Daten nach einem Neustart noch zur Verfügung stehen.
  • In einer Ausgestaltung der Erfindung umfasst das Festlegen der mindestens einen Codierung zu jeder LIN-Adresse, das Umwandeln einer ASCII-Codierung der LIN-Adresse in ein Hexadezimalformat, insbesondere ist die Codierung im Hexadezimalformat angegeben. Das ASCII-Format der LIN-Adresse kann Missverständnisse hervorrufen. Daher kann diese auch in einem Hexadezimalformat angegeben werden. Das Hexadezimalformat hat den Vorteil, dass es weniger fehleranfällig ist, alle regulären BootloaderFunktionalitäten aber weiterhin unterstützt werden.
  • In einer Ausgestaltung der Erfindung ist der gemeinsame Speicherbereich auf einem EEPROM, einem Mikrokontroller-Register, oder auch in der Applikation festlegbar. Dadurch können verschiedene verfügbare Speicherressourcen flexibel genutzt werden. Insbesondere ist kein zusätzlicher Speicher erforderlich. Der gemeinsame Speicherbereich kann auf jeder verfügbaren Speichervorrichtung festgelegt werden.
  • Insbesondere umfasst der gemeinsame Speicherbereich einen ersten und einen zweiten Bereich, wobei die Codierung und die erste Indikation in den ersten Bereich und die zweite Indikation in den zweiten Bereich geschrieben werden.
  • Die Unterteilung in zwei Speicherbereiche ermöglicht die eineindeutige Zuordnung von erster Indikation und Codierung zu der zweiten Indikation.
  • In einer Ausgestaltung der Erfindung ist die erste Indikation aus einer begrenzten Anzahl an Indikatoren gewählt. Das Vorliegen einer Indikation, die nicht aus der begrenzten Anzahl der Indikationen ausgewählt ist, kann somit als Hinweis verstanden werden, dass die Indikation fehlerhaft sein kann. Falls ein Wert der Indikation also außerhalb eines bestimmten Wertebereiches liegt, kann entweder durch Rückgriff auf einen Standardwert der Indikation ein Standardverfahren eingeleitet werden, oder eine Interaktion zwischen Bootloader und Applikation kann abgebrochen werden. Dadurch kann die Interaktion zwischen Bootloader und Applikation abgesichert werden.
  • In einer Ausgestaltung der Erfindung umfasst die Codierung einen ersten und einen zweiten Codeabschnitt, wobei in dem ersten Codeabschnitt codiert ist: die Bus-Adresse, eine Bootloader-ID, eine Applikationsversionsnummer; und wobei in dem zweiten Codeabschnitt codiert ist: der gemeinsame Speicherbereich. Mit dieser Unterteilung kann ein geschützter Speicherbereich, z.B. eines EEPROM, geschaffen werden, auf den sowohl der Bootloader als auch die Applikation Zugriff haben und in dem unveränderliche Betriebsdaten abgelegt werden können. Diese Betriebsdaten gehen dann beim Flashen/ dem Update nicht verloren. Dieser Bereich ist durch die Codierung variabel. Vorzugsweise weisen der erste und/oder der zweite Codeabschnitt eine Größe von einem Byte auf. Die Bus-Adresse kann insbesondere die LIN-Adresse eines LIN-Busses sein.
  • In einer Ausgestaltung der Erfindung ist der gemeinsame Speicherbereich ein geschützter Speicherbereich, der durch das zweite Byte der Codierung indiziert ist, wobei das zweite Byte einen Endbereich des nichtflüchtigen Speichers definiert, dessen Code nicht geändert werden soll. In dem geschützten Speicherbereich sind dann auch Werkseinstellungen, Betriebsdaten usw. speicherbar. Auch sind hier Flashcycles speicherbar. Die minimale Größe des geschützten Speicherbereiches liegt bei 12 Byte, die maximale Größe des geschützten Speicherbereiches liegt bei 192 Byte.
  • Vorzugsweise umfasst die softwaregesteuerte Vorrichtung einen Elektromotor. Das Verfahren kann also insbesondere zum Aktualisieren der Firmware eines Elektromotors und/oder zum Vermitteln von Daten zwischen dem Bootloader und der Firmware einer Steuerungssoftware eines Elektromotors verwendet werden. Der Elektromotor kann dadurch selektiv für eine Aktualisierung der Software über einen Daten-Bus, unter einer Mehrzahl an Bus-Teilnehmern angesprochen werden. Der Daten-Bus kann insbesondere ein LIN-Bus sein. Zusätzlich oder alternativ kann dadurch ein Verfahren bereitgestellt werden, durch welches der Firmware Daten des Bootloaders bereitgestellt werden, so dass die Firmware in Abhängigkeit der bereitgestellten Daten geregelt oder gesteuert werden kann. Insbesondere kann die Firmware nach einem Neustart unterschiedliche Programmabläufe ausführen, je nachdem durch welchen Grund der Neustart bedingt ist.
  • Gemäß einem zweiten Aspekt der Erfindung ist ein Verfahren geschaffen zum selektiven Durchlaufen einer Codesequenz eines Bootloaders infolge eines Unterbrechungsereignisses, insbesondere eines Resets einer Applikation einer softwaregesteuerten Vorrichtung in einem Fahrzeug, das Verfahren umfassend: Bestimmen, durch den Bootloader, eines Resetgrundes, der das Unterbrechungsereignis repräsentiert, wobei das Bestimmen das Abrufen einer ersten Information, die den Resetgrund repräsentiert, aus einem gemeinsamen Speicherbereich, umfasst; und in Reaktion auf das Bestimmen: Zumindest teilweises Durchlaufen der Codesequenz des Bootloaders, um die Applikation zu starten. Mit Vorteil kann die Applikation/ der Bootloader den Grund des letzten Reset bestimmen, indem die erste Information aus dem gemeinsamen Speicherbereich ausgelesen werden kann. Daraufhin kann ein Durchlaufen einer Bootloader-Sequenz angepasst werden. Mit anderen Worten können in Abhängigkeit des Reset-Grundes Bootloader-Sequenzen angepasst, insbesondere weggelassen werden. Dadurch kann z.B. ein Neustart der Applikation schneller erfolgen.
  • In einer Ausgestaltung des zweiten Aspektes der Erfindung ist das Unterbrechungsereignis ein Power-On-Reset (POR) oder ein Watchdog-Reset oder ein Wake-Up-Ereignis oder ein Verzögerungsereignis. Verschiedene Unterbrechungsereignisse können verschiedene Charakteristiken aufweisen, die dazu führen, dass die zu durchlaufende Bootloader-Sequenz entsprechend dem Unterbrechungsereignis angepasst werden kann.
  • In einer Ausgestaltung des zweiten Aspektes der Erfindung ist der gemeinsame Speicherbereich ein Bereich eines Registers eines Mikrokontrollers der softwaregesteuerten Vorrichtung, insbesondere wobei der gemeinsame Speicherbereich ein geschützter Bereich ist. Die erste Information kann in einem geschützten Bereich abgelegt sein, der bei z.B. bei einem Update nicht überschrieben wird. Dadurch wird erreicht, dass die Information über das Unterbrechungsereignis dauerhaft gesichert ist und jederzeit abgerufen werden kann.
  • In einer Ausgestaltung des zweiten Aspektes der Erfindung umfasst das zumindest teilweise Durchlaufen der CodeSequenz ferner: wenn ein POR-Ereignis bestimmt wurde: vollständiges Durchlaufen der Bootloader-Sequenz, wobei das vollständige Durchlaufen ein Warten einer festgelegten ersten Zeitspanne, insbesondere ca. 50 ms, umfasst; wenn ein Watchdog-Reset oder ein Verzögerungsereignis oder ein Wake-up Ereignis bestimmt wurden: teilweises Durchlaufen der Bootloader-Sequenz, wobei das teilweise Durchlaufen ein Warten einer zweiten Zeitspanne, insbesondere ca. 15 ms, umfasst. Die zweite Zeitspanne kann insbesondere kleiner als die erste Zeitspanne sein. Im Falle eines POR-Ereignisses, kann die vollständige Bootloader-Sequenz durchlaufen werden. Diese umfasst die Wartezeit von 50 ms vor dem Starten der Applikation, wobei die 50 ms eine maximale Wartezeit darstellen, wenn eine Applikation mit LIN-BUS Kommunikation vorliegt (die maximal zulässige Zeitdauer bis die Kommunikation zwischen Applikation und LIN-BUS vollständig hergestellt ist beträgt 100ms). Wenn das Unterbrechungsereignis ein Watchdog-Reset oder ein Verzögerungsereignis oder ein Wake-Up Ereignis ist, kann der Bootloader nur eine kurze Wartezeit oder gar keine Wartezeit vorsehen. Die Applikation kann direkt, oder nach kurzer Verzögerung, z.B. 15ms, von dem Bootloader gestartet werden. Dies kann dazu führen, dass die Wartezeit bis zum Start der Applikation und somit bis zur vollen Einsatzfähigkeit des Systems, in Abhängigkeit des Neustartgrundes gering gehalten wird.
  • Insbesondere umfasst das Bestimmen ferner ein Aufrufen des Registers des Mikrokontrollers und ein Abrufen des Registereintrages durch die Bootloader-Sequenz.
  • Insbesondere umfasst das Bestimmen ferner ein Feststellen, ob eine Updateanfrage für die Applikation vorliegt; und/oder ein Feststellen, ob das Update bereits ausgeführt wurde.
  • In einer weiteren Ausgestaltung des zweiten Aspektes der Erfindung umfasst das Verfahren ferner ein Ablegen, durch die Applikation, der ersten Information in dem gemeinsamen Speicherbereich in Reaktion auf das Unterbrechungsereignis.
  • Kurze Beschreibung der Zeichnungen
  • Nachfolgend sind anhand der beigefügten Zeichnungen beispielhafte Ausführungsformen der Erfindung näher beschrieben. Es zeigen:
    • die 1a bis 1f eine schematische Darstellung eines beispielhaften Verfahrens gemäß der Erfindung in einer beispielhaften softwaregesteuerten Vorrichtung;
    • die 2 eine erste Ausführungsform eines beispielhaften Verfahrens gemäß eines Aspektes der Erfindung;
    • die 3 eine zweite Ausführungsform des beispielhaften Verfahrens gemäß des Aspektes der Erfindung aus 2;
    • die 4 eine beispielhafte Aufteilung eines Speicherbereiches eines Speichers einer softwaregesteuerten Vorrichtung.
  • Figurenbeschreibung
  • Die 1a bis 1f zeigen ein beispielhaftes Verfahren gemäß der Erfindung. In Block 1 wird zunächst ein Initialisierungsvorgang durchgeführt. In Block 2 wird eine initiale Anmeldung 1 einer Applikation im Bus-System durchgeführt. Beispielhaft ist der Daten-Bus als LIN-Bus ausgebildet. Dabei wird in einem Schritt 2A auf das Empfangen einer Initialnachricht des Daten-Busses durch die Vorrichtung gewartet. In einem nächsten Schritt 2B wir das Ablaufen einer Wartezeit abgefragt (Timeout). Die Wartezeit kann beispielsweise vorherbestimmt sein.
  • Wird innerhalb der Wartezeit keine Nachricht empfangen, wird in einem Schritt 2C die Betriebsspannung überprüft. Beispielsweise wird abgefragt, ob die Betriebsspannung größer einer minimalen Betriebsspannung ist. Im Beispiel ist die minimale Betriebsspannung 7V. Falls die minimale Betriebsspannung nicht erreicht ist (falsch), wird wieder in den Schritt 2A des Wartens auf das Empfangen einer Initial-Nachricht zurückgesprungen. Ist die minimale Betriebsspannung erreicht (wahr), wird hingegen in einem Schritt 2D abgefragt, ob eine Anfrage zur Aktualisierung des Bootloaders vorliegt. Falls dies nicht der Fall ist, wird in einem Schritt 2E die Applikation gestartet. Liegt hingegen solch eine Anfrage vor, wird in eine Routine 7 zur Aktualisierung des Bootloaders gesprungen.
  • Wird im Schritt 2B die Wartezeit nicht überschritten (falsch), so wird in einem Schritt 2F das Empfangen einer definierten Botschaft abgefragt. Im Beispiel wird dabei das Empfangen eines Befehls „ProgX“ abgefragt, wobei der Teil „Prog“ einen Befehl zum Ausführen einer Aktion bezeichnet, und „X“ eine Variable zum Codieren des Befehls bezeichnet. Beispielsweise kann „X“ für einen Wert stehen, der das Ausführen eines Updates anstößt, oder einen anderen Wert, der ein Auslesen der Versionsnummer der Firmware, oder das Auslesen der Versionsnummer des Bootloaders anstößt. Wurde eine definierte Botschaft nicht empfangen (falsch), so wird wieder in den Schritt 2A zurückgesprungen. Die definierte Botschaft kann insbesondere eine Abfrage der Versionsnummer des Bootloaders oder der Applikationssoftware, oder ein Befehl zum Aktualisieren der Applikationssoftware (Flashen) sein. Ferner kann die Botschaft eine Adressierung eines Busteilnehmers, beispielsweise eines Stellantriebes, umfassen. Im Falle, dass eine definierte Botschaft empfangen wurde (true), wird in einem Schritt 2G eine Bestätigung gesendet. Folgend wird eine Routine zur Aktualisierung aufgerufen.
  • In Block 3 (siehe insbesondere die 1b und 1c) ist ein beispielhaftes Verfahren einer Überschreiboperation gezeigt. In einem Schritt 3A wird ein Befehl zum Ausführen der Überschreiboperation empfangen. Das Empfangen umfasst das Überprüfen, ob der Befehl dem als Broadcast übertragenen Befehl „Prog!“ zum Ausführen eines Updates entspricht. Falls im Schritt 2F der Befehl „Prog!“ empfangen wurde, wird folglich eine Aktualisierung der Firmware ausgeführt. Ebenso wird eine Aktualisierung der Firmware ausgeführt, falls die Botschaft an den empfangenden Busteilnehmer gerichtet ist, und innerhalb eines vorgegebenen Wertebereichs liegt. Im Beispiel liegt umfasst der Wertebereich den Adressraum OxCO bis 0XDF, und die empfangene Nachricht muss der im Speicher des Busteilnehmers gespeicherten Adresse entsprechen. Im Falle, dass entweder eine Broadcast-Nachricht für ein Update oder ein an den Busteilnehmer gerichteter Befehl zur Aktualisierung der Firmware empfangen wurde (wahr) wird in einem weiteren Schritt 3B ein Schreibschutz eines Flash-Speichers ausgeschaltet. In einem weiteren Schritt 3C wir der Flash-Speicher gelöscht. Insbesondere kann das Löschen den vollständigen Flash-Speicher, abgesehen von dem für den Bootloader vorhergesehenen oder von dem Bootloader allokierten Bereich, umfassen. In einem weiteren Schritt 3D kann dann überprüft werden, ob der Löschvorgang erfolgreich war. Falls dies der Fall ist (wahr), wird in einem Schritt 3E eine Bestätigung des Löschvorgangs gesendet. In einem Schritt 3F wird schließlich eine Synchronisation der Taktfrequenz der Steuerschaltungen der zu aktualisierenden Busteilnehmer vorgenommen. Insbesondere kann die Synchronisation auf eine Taktfrequenz eines Bus-Masters, insbesondere eines LIN-Masters, erfolgen. Hierfür kann von dem Bus-Master eine entsprechende Nachricht über den Bus an die Busteilnehmer gesendet werden. Beispielsweise erfolgt eine Änderung der Taktfrequenz von 9600 Hz auf bis zu 512 kHz, vorzugsweise auf bis zu 48 kHz. Anschließen wird in einem Schritt 3G überprüft, ob die vollständige Datenmenge für den Überschreibvorgang empfangen wurde. Falls alle Daten empfangen wurden (wahr), wird in einem Schritt 3H der Bootloader zurückgesetzt (reset). Falls nicht alle Daten empfangen wurden (falsch), wird in einem Schritt 3I überprüft, ob eine Prüfsumme der gesendeten Daten um mehr als einen vorgegebenen Fehlerwert CHK_ERR_Max von einem erwarteten Wert der Prüfsumme abweicht. Ist dies der Fall, wird in einem Schritt 3J ein Fehlerzustand eingenommen. Ist dies nicht der Fall (falsch), wird in einem Schritt 3K überprüft, ob ein vorgesehenes Präfix empfangen wurde und im Schritt 3L, ob die auf das Präfix folgenden Daten empfangen wurden. Wurden das Präfix und die Daten empfangen, wird im Schritt 3M nochmals die Prüfsumme berechnet und mit der empfangenen Prüfsumme verglichen. Stimmen beide Werte nicht überein, wird zurück in den Schritt 3G gesprungen, anderenfalls wird in einem Schritt 3M überprüft, ob ein normaler Datensatz übermittelt wurde. Falls ja, werden in einem Schritt 3Q die empfangenen Daten verarbeitet. Ist dies nicht der Fall (falsch), wird in einem Schritt 3R überprüft, ob ein finaler Dateneintrag vorliegt. Liegt kein finaler Dateneintrag vor, wird in einem Schritt 3S wiederum in den Fehlerzustand gewechselt, anderenfalls (wahr) wird in einem Schritt 3T überprüft, ob die verbleibenden Daten erfolgreich geschrieben wurden. Falls die Daten erfolgreich geschrieben wurden (wahr), wird in einem Schritt 3U eine Bestätigungsnachricht gesendet und in einem Schritt 3V ein Zähler FlashCount erhöht, woraufhin im Beispiel wieder in den Schritt 3G gesprungen wird. Wurde im Schritt 3T festgestellt, dass die weiteren Daten nicht erfolgreich geschrieben wurden (falsch), wird in einem Schritt 3W eine Fehlermeldung ausgegeben.
  • In den in der 1d gezeigten Blöcken 4 bis 6 sind weitere Bootloaderfunktionalitäten gezeigt. Liegt im Schritt 3A der Fall vor, dass kein Befehl zur Aktualisierung des Bootloaders vorliegt (falsch), so wird in einen Schritt 4A des Blocks 4 gesprungen und geprüft, ob eine Abfrage der Versionsnummer (Befehl „Prog?“) der Applikation vorliegt. Der Befehl kann wiederum als Broadcast „Prog?“, oder als an den Busteilnehmer gerichtete Nachricht innerhalb eines vordefinierten Adressraums (hier im Wertebereich 0x80 bis 0x9F) vorliegen. Wird ein Befehl in diesem Wertebereich empfangen, wird ferner überprüft, ob der empfangene Wert einem vom Busteilnehmer gespeicherten Wert entspricht (empfangener Wert - 0X20 = gespeicherter Wert) und der Befehl folglich an diesen Busteilnehmer gerichtet ist. Wurde eine der beiden Voraussetzungen erfüllt (wahr), so werden die Schritte 4B bis 4D ausgeführt, wobei in dem Schritt 4B die Versionsnummer der Applikation gesendet wird, im Schritt 4C eine entsprechende Prüfsummer versendet wird und im Schritt 4C ein Neustart (Reset) des Bootloaders ausgeführt wird.
  • Im anderen Fall, dass im Schritt 4A keine Abfrage der Versionsnummer der Applikation vorliegt (falsch), wird in einen Schritt 5A des Blocks 5 gesprungen, in dem geprüft wird, ob ein Befehl „Prog%“ zur Abfrage der Versionsnummer des Bootloaders vorliegt. Auch hier kann der Befehl als Broadcast „Prog%“, oder als an den Busteilnehmer gerichtete Nachricht innerhalb eines vordefinierten Adressraums (hier im Wertebereich 0xA0 bis 0xBF) vorliegen. Wird ein Befehl in diesem Wertebereich empfangen, wird ferner überprüft, ob der empfangene Wert einem vom Busteilnehmer gespeicherten Wert entspricht und der Befehl folglich an diesen Busteilnehmer gerichtet ist. Im Beispiel wird dazu überprüft, ob der empfangene Wert, abzüglich dem Wert 0X40, dem gespeicherten Wert entspricht. Liegt einer der beiden Fälle vor (wahr), so werden die Schritte 5B bis 5D ausgeführt, wobei in dem Schritt 5B die Versionsnummer des Bootloaders gesendet wird, im Schritt 5C eine entsprechende Prüfsummer versendet wird und im Schritt 5C ein Neustart (Reset) des Bootloaders ausgeführt wird.
  • Liegt jedoch im Schritt 5A keine Anfrage bezüglich der Versionsnummer des Bootloaders vor (falsch), so wird in einen Schritt 6A des Blocks 6 gesprungen, der prüft, ob ein Befehl „Prog#“ zum Löschen des Speichers vorliegt. Liegt solch ein Befehl vor (wahr), wird in einem Schritt 6B der EEPROM gelöscht und in einem Schritt 6C der Flashspeicher gelöscht. Daraufhin wird in einem Schritt 6D eine Bestätigung des Löschvorgangs und in einem Schritt 6E eine Bestätigung von dem Busteilnehmer an den Bus-Master gesendet. Schließlich wird der Bootloader in einem schritt 6F neugestartet (Reset). Liegt im Schritt 6A kein Befehl zum Löschen des Speichers vor, so wird der Bootloader in einem weiteren Verfahrensschritt neugestartet.
  • In Block 7 (siehe 1e und 1f) ist ein beispielhaftes Verfahren zum Updaten des Bootloaders selbst gezeigt. Wurde im Schritt 2D festgestellt, dass eine Anfrage zur Aktualisierung des Bootloaders vorliegt, wird beispielsweise eine Update-Routine gemäß dem Block 7 ausgeführt. In einem Schritt 7A erfolgt dabei zuerst eine Initialisierung, wobei in einem folgenden Schritt 7B das Ablaufen einer maximalen Initialisierungszeit abgefragt wird. Falls die Initialisierungszeit abgelaufen ist, wird in einem Schritt 7C das Ablaufen eines weiteren Zeitlimits überprüft. Ist auch dieses abgelaufen (wahr), wird in einem Schritt 7D der Bootloader neugestartet. Ist hingegen im Schritt 7B die maximale Initialisierungszeit nicht erreicht worden (falsch), wird in einem Schritt 7E überprüft, ob ein Befehl „BootX“ zum Starten des Bootloaders empfangen wurde. Falls dies nicht der Fall ist (falsch), wird in den Schritt 7A zurückgesprungen. Wurde der Befehl „BootX“ hingegen empfangen, wird in einem Schritt 7F eine Bestätigung gesendet und in einem Schritt 7G wird geprüft, ob eine Aktualisierung des Bootloaders erfolgt. Ist dies nicht der Fall, wird in einen Schritt 7H wieder ein Neustart des Bootloaders eingeleitet. Anderenfalls wird in einem Schritt 7I eine Aktualisierung des Bootloaders durch die Applikationssoftware (Firmware) gestartet. Dabei kann die Taktfrequenz wieder auf die Taktfrequenz des Bus-Masters synchronisiert werden. Insbesondere kann die Taktfrequenz des Busteilnehmers/der Bus-Teilnehmer erhöht werden, so dass der Aktualisierungsvorgang beschleunigt wird.
  • In einem weiteren Schritt 7J wird dann überprüft, ob alle Daten empfangen wurden. Beispielsweise kann überprüft werden, ob alle Daten-Frames zum Ausführen des Updates des Bootloaders empfangen wurden. Wurden alle Daten empfangen (wahr), kann in einem Schritt 7K ein Neustart des Bootloaders eingeleitet werden. Wurden hingegen nicht alle Daten empfangen (falsch), wird in einem Schritt 7L eine Prüfsumme der Daten gebildet und überprüft, ob die berechnete Prüfsumme mit einer empfangenen Prüfsumme übereinstimmt. Insbesondere kann überprüft werden, ob der Fehlerwert, der sich aus dem Vergleich der beiden Werte der Prüfsumme ergibt, einen maximalen Fehlerwert überschreitet. Falls dies nicht der Fall ist, wird in einem Schritt 7M ein Fehlerzustand eingenommen. Anderenfalls wird in einem Schritt 7N überprüft, ob ein Präfix der Daten empfangen wurde. Falls ja, wird in einem Schritt 7O überprüft, ob die übrigen Daten empfangen wurden. Wurden die übrigen Daten ebenfalls empfangen, wird in einem Schritt 7P überprüft, ob die Prüfsumme korrekt ist. Falls der Wert der Prüfsumme falsch ist, wird in einem Schritt 7T eine Fehlermeldung gesendet und in einem Schritt 7R ein Zähler des Prüfsummenfehlers erhöht. Schließlich wird zurück in den Schritt 7J gesprungen. Wird im Schritt 7P festgestellt, dass der Wert der Prüfsumme korrekt ist, dann wird in einem weiteren Schritt 7S geprüft, ob ein normaler Dateneintrag vorliegt. Ist dies nicht der Fall, wird in einem Schritt 7T der Bootloader in den dafür vorgesehenen Speicherbereich beschrieben. Daraufhin wird in den Schritt 7J zurückgesprungen. Wird nun in einem nächsten Schritt 7S festgestellt, dass es sich nicht um einen normalen Dateneintrag handelt, dann wird in einem Schritt 7O geprüft, ob ein finaler Dateneintrag vorliegt. Falls dies auch nicht der Fall ist, wird in einem Schritt 7V in einen Fehlerzustand gewechselt. Liegt hingegen ein finaler Dateneintrag vor, wird in einem Schritt 7W geprüft, ob die Daten erfolgreich in den Datenspeicher, insbesondere in den Flash-Speicher, geschrieben wurden. Falls im Schritt 7W festgestellt wurde, dass die restlichen Daten erfolgreich in den Speicher geschrieben wurden (wahr), wird in einem Schritt 7X eine Endbestätigung gesendet und daraufhin in den Schritt 7J zurückgesprungen. Wurde hingegen im Schritt 7W nicht festgestellt, dass die Daten erfolgreich in den Speicher geschrieben wurden (falsch), so wird in einem Schritt 7Y eine Fehlerbestätigung gesendet.
  • 2 zeigt ein beispielhaftes Verfahren zum selektiven Durchlaufen einer Bootsequenz in Abhängigkeit eines Reset-Grundes. Das Verfahren beginnt mit in einem Schritt 22A einem Power On Reset (POR), d.h. mit Anschalten einer Energiequelle. Im Folgenden wird bestimmt, welche Art Unterbrechungsereignis vorliegt, also was der Grund der Unterbrechung der Energiezufuhr war. Hierfür wird beispielsweise in einem Schritt 22B überprüft, ob der Reset durch einen Watchdog ausgelöst wurde und wenn ja, wird eine entsprechende Indikation in einen Speicherbereich geschrieben (Schritt 22C). Falls nicht, wird in einem weiteren Schritt 22C überprüft, ob das Unterbrechungsereignis durch ein Aufwachen aus einem Ruhezustand erfolgte und gegebenenfalls eine entsprechende Indikation in einen Speicherbereich geschrieben (Schritt 22E). Ist dies auch nicht der Fall, wird in einem weiteren Schritt 22F überprüft, ob das Unterbrechungsereignis durch ein über den LIN-Bus empfangenes Aufwecksignal ausgelöst wurde. Wiederum wird gegebenenfalls eine entsprechende Indikation in einen Speicher geschrieben (Schritt 22G). Sodann wird in einem Schritt 22H bestimmt, ob ein „Flash Process“ - also ein Update - durchgeführt werden soll. Wenn dies der Fall ist, wird dies getan und in einem Schritt 22J die Beendigung des Update-Prozesses überprüft, sowie auch hierüber in einem Schritt 22K eine weitere Indikation in den Speicherbereich geschrieben. Nach dem Ausführen des Updates, oder falls im Schritt 22H festgestellt wurde, dass kein Update durchgeführt werden soll, wird die Applikation in einem Schritt 221 gebootet. Der Bootprozess kann auf jeden Fall unter Berücksichtigung der in dem Speicherbereich abgelegten Indikationen erfolgen.
  • 3 zeigt ein beispielhaftes Verfahren zum selektiven Durchlaufen einer Bootsequenz in Abhängigkeit eines Reset-Grundes unter Berücksichtigung einer Wartezeit. Nach dem Einschalten im Schritt 33A wird in den Schritten 33B, 33E und 33F überprüft, was für ein Unterbrechungsereignis vorliegt. Wenn lediglich ein „normales“ POR-Ereignis vorliegt (also kein Watchdog-Reset (vgl. Schritt 33B), kein Retention-Mode (Speichermodus, vgl. Schritt 33E) und kein LIN wake-up (vgl. Schritt 33F) wird eine Wartezeit von 50 ms veranschlagt (Schritt 33G), bevor die Applikation in einem Schritt 33D gebootet wird. Liegt ein anderer ResetGrund vor, wird eine kürzere Wartezeit von 15 ms beigemessen (Schritt 33C), bevor die Applikation im Schritt 33D gebootet wird.
  • 4 zeigt ein Schema eines Adressbereiches eines NVRAM in einer Hexadezimaldarstellung. Der Adressbereich ist ein geschützter Adressbereich. Die minimale Größe des geschützten Adressbereichs beträgt 15 Byte (von 0x500001B4 - 0x500001BF). Eine maximale Größe des geschützten Adressbereichs beträgt 192 Byte (von 0x500000FF - 0x500001BF). Die Größe des geschützten Adressbereiches hängt von dem Byte mit der Adresse Ox1B6 ab. Der geschützte Adressbereich umfasst weiterhin ein Byte für einen Flashcount (O1B8) und ein Byte für eine Adresse einer Vorrichtung der der Speicherbereich zugeordnet ist (Ox1BA). Jedes dieser Bytes ist mit einer Prüfsumme (Checksum) abgesichert. Des Weiteren ist der Adressbereich 0x500001BC bis 0x500001BF für interne Festlegungen, z.B. unveränderliche Betriebsparameter, Versionsnummer, etc. vorgesehen.

Claims (21)

  1. Verfahren zum selektiven Verwenden eines Bootloaders zum Ändern von Code in mindestens einer Applikation einer softwaregesteuerten Vorrichtung, wobei eine Mehrzahl der softwaregesteuerten Vorrichtungen über einen gemeinsamen Daten-Bus betrieben wird, das Verfahren umfassend: a) Adressieren der Vorrichtungen durch einen Daten-Bus, wobei das Adressieren durch Zuordnen einer Bus-Adresse zu jeder Vorrichtung an dem Daten-Bus erfolgt; b) Festlegen mindestens einer Codierung zu jeder Bus-Adresse, wobei die Codierung einen ersten Codeabschnitt umfasst, der die Bus-Adresse repräsentiert; c) Festlegen, eines gemeinsamen Speicherbereiches mittels eines zweiten Codeabschnittes der Codierung, wobei der Speicherbereich für den Bootloader und die Applikation zugänglich ist; d) Erzeugen, in Reaktion auf ein Auslöseereignis, durch die Applikation, mindestens einer ersten Indikation, wobei die erste Indikation der Vorrichtung zugeordnet wird, deren Applikation Code enthält, der geändert werden soll; e) Speichern, durch die Applikation, der Codierung und der ersten Indikation in den gemeinsamen Speicherbereich; f) Abrufen, durch den Bootloader, der Codierung und der ersten Indikation; und g) Ändern, durch die Applikation, des Applikationscodes der durch die Codierung indizierten Vorrichtung in Reaktion auf das Abrufen der ersten Indikation durch den Bootloader.
  2. Verfahren nach Anspruch 1, wobei das Ändern ferner umfasst: Bewirken, durch den Bootloader, dass die Applikation eine Update Routine durchläuft.
  3. Verfahren nach Anspruch 1 oder 2, umfassend das Schreiben, durch die Applikation, einer zweiten Indikation in den gemeinsamen Speicherbereich, wobei die zweite Indikation einen Grund für das Ändern des Applikationscodes repräsentiert.
  4. Verfahren nach Anspruch 3, wobei das Schreiben nach dem Durchlaufen der Updateroutine durch die Applikation erfolgt.
  5. Verfahren nach einem der vorhergehenden Ansprüche, wobei der gemeinsame Speicherbereich, Speicherbereich in einer nichtflüchtigen Speichervorrichtung ist.
  6. Verfahren nach einem der vorhergehenden Ansprüche, wobei der Daten-Bus ein LIN-Bus ist.
  7. Verfahren nach Anspruch 6, wobei das Festlegen mindestens einer Codierung zu jeder LIN-Adresse, das Umwandeln der ASCII-Codierung der Lin-Adresse in ein Hexadezimalformat umfasst, insbesondere wobei die Codierung im Hexadezimalformat angegeben ist.
  8. Verfahren nach einem der vorhergehenden Ansprüche, wobei der gemeinsame Speicherbereich auf einem EEPROM, einem Mikrocontroller-Register oder auch in der Applikation festgelegt ist.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei der gemeinsame Speicherbereich einen ersten und einen zweiten Bereich umfasst, wobei die Codierung und die erste Indikation in den ersten Bereich und die zweite Indikation in den zweiten Bereich geschrieben werden.
  10. Verfahren nach einem der vorhergehenden Ansprüche, wobei die erste Indikation aus einer begrenzten Anzahl an Indikatoren gewählt ist.
  11. Verfahren nach einem der vorhergehenden Ansprüche, wobei die Codierung einen ersten und einen zweiten Codeabschnitt umfasst, wobei in dem ersten Codeabschnitt codiert ist: die Bus-Adresse, eine Bootloader ID, eine Applikationsversionsnummer; und wobei in dem zweiten Codeabschnitt codiert ist: der gemeinsame Speicherbereich.
  12. Verfahren nach einem der vorhergehenden Ansprüche, wobei der gemeinsame Speicherbereich ein geschützter Speicherbereich ist der durch den zweiten Codeabschnitt der Codierung indiziert ist, wobei der Index einen Endbereich des nichtflüchtigen Speichers definiert, dessen Code nicht geändert werden soll.
  13. Verfahren nach einem der vorhergehenden Ansprüche, wobei die softwaregesteuerte Vorrichtung einen Elektromotor umfasst.
  14. Verfahren zum selektiven Durchlaufen einer Codesequenz eines Bootloaders infolge eines Unterbrechungsereignisses einer Applikation eines softwaregesteuerten Elektromotors, das Verfahren umfassend: Bestimmen, durch den Bootloader, eines Resetgrundes der das Unterbrechungsereignis repräsentiert, wobei das Bestimmen das Abrufen einer ersten Information, die den Resetgrund repräsentiert, aus einem gemeinsamen Speicherbereich, umfasst; und in Reaktion auf das Bestimmen: Zumindest teilweises Durchlaufen der Codesequenz des Bootloaders, um die Applikation zu starten.
  15. Verfahren nach Anspruch 14, wobei das Unterbrechungsereignis ein Power-On-Reset (POR) oder ein Watchdog-Reset oder ein Wake-Up-Ereignis oder ein Verzögerungsereignis ist.
  16. Verfahren nach Anspruch 14 oder 15, wobei der gemeinsame Speicherbereich ein Bereich eines Registers eines Mikrokontrollers der softwaregesteuerten Vorrichtung ist.
  17. Verfahren nach einem der Ansprüche 14 bis 16, wobei das zumindest teilweise Durchlaufen der Code Sequenz ferner umfasst: wenn ein POR-Ereignis bestimmt wurde: vollständiges Durchlaufen der Bootloader-Sequenz, wobei das vollständige Durchlaufen ein Warten einer festgelegten ersten Zeitspanne umfasst; wenn ein Watchdog-Reset oder ein Verzögerungsereignis oder ein Wake-up Ereignis bestimmt wurden: teilweises Durchlaufen der Bootloader-Sequenz, wobei das teilweise Durchlaufen ein Warten einer zweiten Zeitspanne umfasst.
  18. Verfahren nach Anspruch 17, wobei die zweite Zeitspanne kleiner als die erste Zeitspanne ist.
  19. Verfahren nach einem der Ansprüche 14 bis 18, wobei das Bestimmen ferner umfasst: Aufrufen des Registers des Mikrocontrollers und Abrufen des Registereintrages durch die Bootloadersequenz.
  20. Verfahren nach einem der Ansprüche 14 bis 19, wobei das Bestimmen ferner umfasst: Feststellen, ob eine Updateanfrage für die Applikation vorliegt; und/oder Feststellen, ob das Update bereits ausgeführt wurde.
  21. Verfahren nach einem der Ansprüche 14 bis 20, wobei das Verfahren ferner umfasst: Ablegen, durch die Applikation, der ersten Information in dem gemeinsamen Speicherbereich in Reaktion auf das Unterbrechungsereignis.
DE102019128220.9A 2019-10-18 2019-10-18 Verfahren zum selektiven Verwenden eines Bootloaders und Verfahren zum selektiven Durchlaufen einer Codesequenz eines Bootloaders Pending DE102019128220A1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE102019128220.9A DE102019128220A1 (de) 2019-10-18 2019-10-18 Verfahren zum selektiven Verwenden eines Bootloaders und Verfahren zum selektiven Durchlaufen einer Codesequenz eines Bootloaders

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102019128220.9A DE102019128220A1 (de) 2019-10-18 2019-10-18 Verfahren zum selektiven Verwenden eines Bootloaders und Verfahren zum selektiven Durchlaufen einer Codesequenz eines Bootloaders

Publications (1)

Publication Number Publication Date
DE102019128220A1 true DE102019128220A1 (de) 2021-04-22

Family

ID=75268477

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019128220.9A Pending DE102019128220A1 (de) 2019-10-18 2019-10-18 Verfahren zum selektiven Verwenden eines Bootloaders und Verfahren zum selektiven Durchlaufen einer Codesequenz eines Bootloaders

Country Status (1)

Country Link
DE (1) DE102019128220A1 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012028541A1 (de) * 2010-08-30 2012-03-08 Tridonic Gmbh & Co Kg Parallele programmierung und aktualisierung von beleuchtungstechnik-busteilnehmern

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012028541A1 (de) * 2010-08-30 2012-03-08 Tridonic Gmbh & Co Kg Parallele programmierung und aktualisierung von beleuchtungstechnik-busteilnehmern

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ROGERS G.: LIN-Trends in der Automobilelektronik. In: Elektronik Industrie, 2006, H. 1/2. S. 72 – 74. – ISSN: 0174-5522 *

Similar Documents

Publication Publication Date Title
EP2318920B1 (de) Steuergerät für ein fahrzeug und verfahren für eine datenaktualisierung für ein steuergerät für ein fahrzeug
EP1903436B1 (de) Computersystem und Verfahren zum Aktualisieren von Programmcode
EP3128383B1 (de) Feldgerät
DE102011075776A1 (de) Verfahren und System zum Aktualisieren eines gemeinsam genutzten Speichers
DE102010043011A1 (de) Parallele Programmierung und Aktualisierung von Gebäudetechnik-Busteilnehmern
WO2013171122A2 (de) Funktional erweiterbares fahrzeugsteuergerät und verfahren zum ergänzen der funktionalität eines fahrzeugsteuergeräts
EP1639603A2 (de) Verfahren zur durchführung eines software-updates eines elektronischen steuergerätes durch eine flash-programmierung über eine serielle schnittstelle und ein entsprechender zustandsautomat
DE19839680A1 (de) Verfahren und Vorrichtung zur Veränderung des Speicherinhalts von Steuergeräten
DE19934191B4 (de) Elektronische Steuerungseinheit und Steuerungsverfahren zum Speichern eines Neuschreibungszählwerts eines nichtflüchtigen Speichers
WO2004039030A2 (de) Verfahren zur übertragung von daten auf einem bus
WO2017125181A1 (de) Verfahren zum aktualisieren von software eines steuergerätes, vorzugsweise für ein kraftfahrzeug
DE102019128220A1 (de) Verfahren zum selektiven Verwenden eines Bootloaders und Verfahren zum selektiven Durchlaufen einer Codesequenz eines Bootloaders
EP1665031A2 (de) Verfahren zur installation einer programmkomponente
EP1187011A2 (de) Verfahren zur Programmierung eines Steuergerätes
DE102009047974B4 (de) Verfahren zur Programmierung eines Steuergeräts
DE102015207900B4 (de) Verfahren zur Durchführung eines Betriebssystem-Updates
EP3797352B1 (de) Verfahren zum austauschen eines ersten ausführbaren programm-codes und eines zweiten ausführbaren programm-codes und steuergerät
DE102006004599A1 (de) Endgerät und Verfahren zur Aktualisierung von Programmcode eines Endgeräts
DE102017202282B4 (de) Fahrzeugeigene steuerungsvorrichtung und fahrzeugeigenes netzwerk mit der fahrzeugeigenen steuerungsvorrichtung
WO2003025748A2 (de) Verfahren zum betreiben einer schaltungsanordnung, die einen mikrocontroller und ein eeprom enthält
DE112019004272T5 (de) Installieren von anwendungsprogrammcode auf einem fahrzeugsteuerungssystem
DE10260103A1 (de) Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät
DE10148157B4 (de) Programmgesteuerte Einheit
DE102020216481A1 (de) Verfahren zum Betreiben eines Steuergeräts und Steuergerät
DE102011121879A1 (de) Steuereinrichtung und Steuerverfahren zur Steuerung einer Antriebseinrichtung

Legal Events

Date Code Title Description
R163 Identified publications notified