DE10260103A1 - Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät - Google Patents

Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät Download PDF

Info

Publication number
DE10260103A1
DE10260103A1 DE10260103A DE10260103A DE10260103A1 DE 10260103 A1 DE10260103 A1 DE 10260103A1 DE 10260103 A DE10260103 A DE 10260103A DE 10260103 A DE10260103 A DE 10260103A DE 10260103 A1 DE10260103 A1 DE 10260103A1
Authority
DE
Germany
Prior art keywords
memory area
software
software parts
old
parts
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.)
Withdrawn
Application number
DE10260103A
Other languages
English (en)
Inventor
Peter Joest
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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Priority to DE10260103A priority Critical patent/DE10260103A1/de
Priority to EP03813535A priority patent/EP1614035A2/de
Priority to PCT/DE2003/004159 priority patent/WO2004057465A2/de
Priority to US10/539,494 priority patent/US20060156297A1/en
Priority to CNB2003801066326A priority patent/CN100392590C/zh
Publication of DE10260103A1 publication Critical patent/DE10260103A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/102External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
    • 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

Landscapes

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

Abstract

Verfahren und Vorrichtung zur Änderung von Software in einem ersten Speicherbereich in einem Steuergerät zur Steuerung von Betriebsabläufen, wobei die Ausführung alter Softwareteile durch die Ausführung neuer Softwareteile ersetzt wird und die alten Softwareteile in dem ersten Speicherbereich eingeschrieben sind, wobei die neuen Softwareteile in einem zweiten Speicherbereich eingeschrieben werden und durch eine erste Verzweigung im ersten Speicherbereich statt der alten Softwareteile im ersten Speicherbereich, die neuen Softwareteile im zweiten Speicherbereich ausgeführt werden, wobei nach Ausführung der neuen Softwareteile durch eine zweite Verzweigung im zweiten Speicherbereich wieder in den ersten Speicherbereich rückverzweigt wird und die Ausführung der weiteren von den alten Softwareteilen verschiedene Software im ersten Speicherbereich fortgesetzt wird, wobei die alten Softwareteile im ersten Speicherbereich verbleiben.

Description

  • Stand der Technik
  • Die Endung betrifft ein Verfahren und eine Vorrichtung zur Änderung von Software in einem ersten Speicherbereich in einem Steuergerät sowie ein entsprechendes Steuergerät und ein Computerprogramm zur Ausführung des Verfahrens gemäß den unabhängigen Ansprüchen.
  • Insbesondere in der Automobilindustrie werden immer komplexere Funktionen mit Hilfe von Software in den einzelnen Steuergeräten umgesetzt. Immer häufiger ist es nötig, Änderungen der Software kurz vor, oder auch nach der Auslieferung an den Endkunden in das Steuergerät einfließen zu lassen. Die Änderungen der Software eines Steuergerätes werden im Allgemeinen dadurch behoben, dass man die Änderungen in einen neuen Software-Integrationsstand einfließen lässt und diese neu erstellte Software komplett in das Steuergerät lädt, insbesondere durch Speichern in einem sogenannten Flash-EPROM-Speicher, d. h. durch Flashen einbringt. Durch den vorhandenen Umfang der Software dauert das Flashen eines Steuergerätes beispielsweise schon jetzt bis zu 30 Minuten. Durch den starken Anstieg von Funktionen und Funktionalität und damit durch noch größeren Softwareumfang und eine größere Anzahl an Softwarepaketen wird diese Zeit in Zukunft noch stärker ansteigen.
  • Daher ist es Aufgabe der Erfindung, diesen Zeitaufwand zum Flashen eines Steuergerätes zu vermindern, wodurch sich auch noch weitere Vorteile ergeben.
  • Vorteile der Erfindung
  • Die Erfindung geht aus von einem Verfahren und einer Vorrichtung zur Änderung von Software in einem ersten Speicherbereich in einem Steuergerät zur Steuerung von Betriebsabläufen, insbesondere bei einem Fahrzeug, sowie einem entsprechenden Steuergerät, wobei die Ausführung alter Softwareteile durch die Ausführung neuer Softwareteile ersetzt wird und die alten Softwareteile in dem ersten Speicherbereich eingeschrieben sind. In den meisten Fällen sind die Softwareänderungen, insbesondere Änderungen des Programmcodes klein gegenüber dem Anteil der Software, der nicht verändert werden muss. Vorteilhafter Weise werden nun gezielt die zu ändernden Anteile oder generell nur Teile einer Software in das Steuergerät geladen, wobei diese Softwareteile in der Beschreibung auch Patch-Container genannt werden bzw. in einem solchen Patch-Container enthalten sind.
  • Zweckmäßiger Weise werden also nur die neuen Softwareteile in einen zweiten Speicherbereich eingeschrieben, wobei durch eine erste Verzweigung in dem ersten Speicherbereich statt der alten Softwareteile im ersten Speicherbereich die neuen Softwareteile im zweiten Speicherbereich ausgeführt werden und nach Ausführung der neuen Softwareteile durch eine zweite Verzweigung im zweiten Speicherbereich wieder in den ersten Speicherbereich rückverzweigt wird, wobei die Ausführung der weiteren von den alten Softwareteilen verschiedenen Software im ersten Speicherbereich fortgesetzt wird und die alten Softwareteile im ersten Speicherbereich verbleiben.
  • D. h. es wird, um die Änderungen der bestehenden Software, also der alten Softwareteile zu realisieren, eine insbesondere zentrale Patchverwaltung installiert, mit welcher die zu ändernden Teile der Software gezielt durch Einsprung und Aussprung geändert werden können. Dadurch kann vorteilhafter Weise zum Einen der hohe Zeitaufwand beim Flashen großer Softwareabschnitte oder Softwareteile deutlich verringert werden, da zum Einen nicht, wie bereits oben angeklungen, die gesamte Software neu eingeschrieben wird und zum Anderen kann auch der Zeitaufwand eingespart werden, der nötig ist zur Änderung der Software, also insbesondere diese zu löschen und neu einzuschreiben.
  • Dadurch ergibt sich weiterhin eine höhere Flexibilität bei der Änderung von Software und Softwareteilen und zum Anderen eine geringere Fehleranfälligkeit durch möglichst geringes Überschreiben bzw. Löschen und neu Beschreiben von Softwareteilen.
  • Dies wird zweckmäßiger Weise insbesondere dadurch realisiert, dass der zweite Speicherbereich, also der Patch-Container-Bereich nur dazu verwendet wird, die neuen Softwareteile aufzunehmen und in den Programmlauf bzw. den Softwareablauf einzubinden.
  • Dabei kann zweckmäßiger Weise die erste Verzweigung und die zweite Verzweigung durch wenigstens eine verkettete Liste realisiert werden. Verkettete Listen stellen dabei eine platzsparende Möglichkeit zur Ablage von Daten, insbesondere von Softwareteilen zur Verfügung, welche zugleich eine zeitliche als auch eine logische Ordnung besitzen. Da auf diese Art und Weise von vergleichbaren oder gleichen Softwareteilen mehrere Versionen vorhanden sein können, sind verkettete Liste ein gut geeigneter Ansatz zur Ablage einer im Voraus nicht bestimmbaren Anzahl von Versionen verschiedener Softwareteile. Bei verketteten Listen wird für jede Version eines Softwareteils bzw. für jeden Softwareteil ein Zeiger bzw. ein Verweis auf die nächste Version dieses Softwareteils geführt. Ein spezieller Zeigerzustand kann zur Codierung für den Fall verwendet werden, dass die zugehörige Version die aktuellste Version des jeweiligen Softwareteils ist. Ebenso kann dieser spezielle Zeigerzustand als Kennung bzw. Identifier für den jeweiligen Softwareteil dienen. Als Verweis werden dabei relative oder absolute Adressen verwendet. Bei einer verketteten Liste wird somit zusammen mit einem jeweils abgelegten Softwareteil bzw. zusammen mit einer Informationseinheit wie eines Datensatzes der den Softwareteil enthält ein Verweis auf die Ablagestelle der jeweils nächsten logisch verknüpften Informationseinheit gespeichert, insbesondere heir entweder des nächsten neuen Softwareteils oder Datensatzes mit dem neuen Softwareteil oder auch der weiteren dem alten Softwareteil folgenden Software. So können die Ablagestellen auch erst zu dem Zeitpunkt belegt werden, zu dem die zu speichernde bzw, neu auszuführende Information zur Verfügung steht. So ist es außerdem möglich, dieser Information, die jeweils nächste, freie Ablagestelle zuzuweisen, wodurch dieses Vorgehen außerdem zu einer lückenlosen Nutzung des Speichers führt.
  • Zweckmäßiger Weise wird nun als erste Verzweigung, quasi zum Aussprung aus dem ersten Speicherbereich, eine Anfangsadresse der neuen Softwareteile verwendet, wobei mit dieser wenigstens teilweise die alten Softwareteile, also die zu ändernden Softwareteile überschrieben werden können. Alternativ kann auch Speicherplatz zur Einfügung der Aussprungadresse im ersten Speicherbereich vorgesehen sein. Es wird somit im ersten Speicherbereich ein Aussprung in den oder zum Patch-Container gesetzt. Als zweite Verzweigung, quasi als Rücksprung wird dann vorteilhafter Weise eine Anfangsadresse der weiteren von den alten Softwareteilen verschiedenen Software verwendet, so dass lückenlos nach dem Umspringen der alten Softwareteile die weitere, nachfolgende Software im ersten Speicherbereich verwendet bzw. abgearbeitet wird.
  • Vorteilhafter Weise sind in den neuen Softwareteilen Informationen enthalten, die angeben, welche alten Softwareteile ersetzt werden sollen und/oder solche Informationen, die zeigen, durch welche neuen Softwareteile die alten Softwareteile ersetzt werden sollen. Zweckmäßiger Weise enthält dazu der zweite Speicherbereich, also insbesondere jeder eingelesene Patch-Container in einer Patch-Tabelle, die die neuen Softwareteile sowie unter Umständen Zusatzinformation enthält, neben wenigstens einem neuen Softwareteil eine Adresse für die erste Verzweigung, eine Adresse für die zweite Verzweigung und eine Adresse für den Beginn des alten Softwareteils, das durch das wenigstens eine neue Softwareteil zu ersetzen ist. Als zusätzliche Information kann vorteilhafter Weise auch die Länge des wenigstens einen neuen Softwareteils und/oder auch des wenigstens einen alten Softwareteils im Patch-Container enthalten sein. Diese Elemente, also eine Adresse für die erste Verzweigung, eine Adresse für die zweite Verzweigung, eine Adresse für den Beginn des alten Softwareteils sowie unter Umständen die Länge des neuen Softwareteils und/oder des alten Softwareteils können zu einem Datensatz im Patch-Container, also in dem zweiten Speicherbereich, insbesondere der Patch-Tabelle, zusammengefasst sein. Zweckmäßiger Weise ist so die Information, die nötig ist, um einen alten Softwareteil zu ersetzen, für jeden alten Softwareteil jeweils in einem solchen Datensatz zusammengefasst.
  • Dabei kann vorteilhafter Weise der erste Speicherbereich als eine erste Tabelle und der zweite Speicherbereich als eine zweite Tabelle (Patch-Tabelle) im selben Speicher realisiert werden.
  • Dabei kann außerdem der erste Speicherbereich und der zweite Speicherbereich zweckmäßiger Weise in gleich große Softwareabschnitte aufgeteilt sein, wobei in jeden Softwareabschnitt des zweiten Speicherbereichs ein neuer Softwareteil einschreibbar ist.
  • Zweckmäßiger Weise kann dann auch jeder Datensatz oder jeder Softwareabschnitt entsprechend der Ausführungsform mit einer Kennung versehen werden, die eine Zuordnung eines alten Softwareteils und eines diesen ersetzenden neuen Softwareteils gestattet.
  • Weitere Vorteile und vorteilhafte Ausgestaltungen ergeben sich aus der Beschreibung sowie den Merkmalen der Ansprüche.
  • Zeichnung Die Erfindung wird im Weiteren anhand der in der Zeichnung dargestellten Figuren näher erläutert. Dabei zeigt:
  • 1 ein Steuergerät mit entsprechender Software, bei dem alte Softwareteile durch neue Softwareteile ersetzt werden und
  • 2 den ersten Speicherbereich mit der Steuergerätesoftware sowie den erfindungsgemäßen Patch-Container und
  • 3 beispielhaft einen möglichen Datensatz im Patch-Container.
  • Beschreibung der Ausführungsbeispiele
  • 1 zeigt ein Steuergerät 100 mit einer Verarbeitungseinheit 101, insbesondere einem Mikrocontroller sowie Speichermittel 102, insbesondere aufgeteilt in zwei Speicherbereiche 103 und 104. Diese Speicherbereiche 103 und 104 können sich im selben Speicher oder in verschiedenen Speichern des Steuergeräts 100 befinden. Über eine Schnittstelle 105, die neben einer leitungsgebundenen auch eine leitungslose Verbindung repräsentieren kann, werden die entsprechenden neuen Softwareteile von einer Quelle 106, beispielsweise einem weiteren Rechner, mit zweitem Speichermittel 107 in das Steuergerät 100 eingebracht. Dadurch, dass nur die zu ändernden Daten übermittelt werden, also nur die neuen Softwareteile und nicht die gesamte Software, was deutlich geringere Übertragungsraten zur Folge hat, können insbesondere auch Luftschnittstellen, also Funk, Ultraschall, Infrarot usw. Einsatz finden. Daneben ist an dieser Stelle aber die leitungsgebundene Übertragung ebenso verwendbar.
  • 2 zeigt nun einen ersten Speicherbereich 200 und einen zweiten Speicherbereich 201, insbesondere in Form einer Tabelle dargestellt. Der erste Speicherbereich enthält dabei Zellen bzw. Softwareabschnitte 205 bis 216. Die entsprechenden Adressen der Zellen 205 bis 216 sind in Block 203 jeweils abgelegt. Ebenso enthält ein zweiter Speicherbereich 201, also die Patch-Tabelle, mehrere Zellen 217 bis 223, ebenfalls Softwareabschnitte, in die die sogenannten Patch-Container eingespeichert werden können. Auch hier sind entsprechende Adressen im Block 204 zur jeweiligen Zelle, also zum jeweiligen Patch-Container abgelegt.
  • Wie in 2 zu erkennen, wird in den alten Softwareteilen aus dem ersten Speicherbereich 200 ein Aussprung nach dem Softwareabschnitt 207 im Softwareabschnitt 208 auf die Patch-Tabelle 201 generiert. Dabei wird der alte Softwareteil 208 wenigstens teilweise mit der Sprungadresse, also der Verzweigung zu Softwareabschnitt 218 überschrieben. D. h. die erste Änderung A1 beginnt mit einer Verzweigung V1A1 aus dem ersten Speicherbereich 200 in den zweiten Speicherbereich 201. Nach Ablauf der Softwareabschnitte 218, 219 wird aus Softwareabschnitt 220 mit einer zweiten Verzweigung V2A1 wieder in den ersten Speicherbereich, den Softwareabschnitt 210 rückverzweigt bzw. zurückgesprungen. So können also die alten Softwareteile in den Softwareabschnitten 208 und 209 durch die neuen Softwareteile in den Abschnitten 218 und 219 ersetzt, also umsprungen werden. Dabei bleiben die alten Softwareteile in den Abschnitten 208 und 209 weiter im ersten Speicherbereich enthalten.
  • Eine zweite Änderung A2 zeigt beispielsweise einen Aussprung nach Abschnitt 212 zu Beginn des Abschnittes 223 im zweiten Speicherbereich 201 und einen Rücksprung zu Beginn des Speicherabschnitts 214. D. h. durch die erste Verzweigung V1A2 und den Rücksprung oder die zweite Verzweigung V2A2 wird der Softwareabschnitt 213 durch den Softwareabschnitt 223 bezüglich des Softwareablaufs ersetzt, wobei wiederum der alte Softwareteil im Softwareabschnitt 213 zumindest teilweise erhalten bleibt. Lediglich der Teil wird ersetzt, der die Sprungadresse für die Patch-Tabelle enthält.
  • Um diesen Zustand, wie eben mit 2 beschrieben, zu erzeugen, wird die Information benötigt, welche Softwareteile, also alte Softwareteile aus Speicherbereich 200 wie geändert werden sollen. Diese Information wird in die Patch-Tabelle 201 geladen.
  • Mit einer Patch-Verwaltung werden beim Neuanlauf des Steuergerätes die Adressbezüge zwischen Speicherbereich 200 und Speicherbereich 201 hergestellt. Die Patch-Verwaltung kann z. B. im Boot-Loader, also dem Startprogramm, das beim Anlauf des Steuergerätes abgearbeitet wird, untergebracht sein. Dabei kann je nach Aufwand erfindungsgemäß eine Vielzahl von Informationen im Rahmen der Patch-Verwaltung in der Patch-Tabelle enthalten sein. Diese Informationen, diese Elemente, können in einzelnen Datensätzen zusammengefasst werden, wie dies in 3 dargestellt ist. Die Verwaltung kann auch von der Verarbeitungseinheit 101 des Steuergerätes selbst realisiert werden, indem die entsprechenden Informationen im Patch-Container hinterlegt sind.
  • Um die Datensätze für die Patch-Tabelle zu generieren, bietet sich dabei ein Hilfsmittel, insbesondere im Rechner 106 an, welches die Änderungen des Quellcodes analysiert und danach die Datensätze bzw. die Softwareteile für die Patch-Tabelle erzeugt. Diese Datensätze bestehen beispielsweise aus einer Aussprungadresse, aus der Originalsoftware, also den alten Softwareteilen, einer Zieladresse für die Patch-Tabelle, also einem Verweis auf einen Patch-Container, dem neuen Softwareteil, also beispielsweise geänderter oder neuer Hexadezimalcode, beispielsweise auch aus der Länge des geänderten Programmcodes, also der Länge des alten Softwareteils oder auch der Länge des neuen Programmcodes, also des neuen Softwareteils sowie aus der Rücksprungadresse in den ersten Speicherbereich, also zur weiteren vom alten Softwareteil verschiedenen Software also insbesondere ins ursprüngliche Programm. Weiterhin kann einem Patch-Container ein Identifier oder eine Kennung zugeordnet und damit im Datensatz enthalten sein.
  • Dabei sind nicht alle die genannten Informationen zur Realisierung des erfindungsgemäßen Verfahrens notwendig, so kann z.B. aus Anfangsadresse und Länge des Softwareteils die Endadresse bestimmt werden. Dennoch kann die Verwendung der Information entweder einen Zeitvorteil bedeuten, da eine Adresse nicht berechnet werden muss, sondern angegeben ist oder kann redundante Information in diesem Zusammenhang eine Überprüfbarkeit der Softwareänderung und damit eine Erhöhung der Sicherheit ermöglichen.
  • Gleichermaßen kann mit einer solch aufgebauten Patch-Verwaltung auch eine Änderung in der Software wieder rückgängig gemacht werden. Bei einem solchen Rückgängigmachen könnte dann Speicherplatz im ersten Speicherbereich für die Aussprungadressen vorgesehen werden, so dass bei einer Wiederverwendung des alten Softwareteils dieses nicht teilweise überschrieben ist.
  • Als Beispiel eines solchen Patch-Containers oder Datensatzes ist in 3 Block 300 dargestellt. Dabei ist mit 301 beispielsweise eine Programmadresse, also die Adresse des alten zu ersetzenden Softwareteils angegeben, mit Block 302 die Adresse in der Patch-Tabelle. Block 303 gibt den neuen insbesondere Programmcode, also das neue Softwareteil an, welches das alte Softwareteil ersetzen soll. Mit Block 304 ist beispielsweise die Länge des neuen Softwareteils, also die Codelänge in Bit, Byte oder einer beliebigen anderen Menge angegeben, und schließlich zeigt Block 305 die Rücksprungadresse zu den weiteren Softwareteilen, also insbesondere zum Originalprogramm in den ersten Speicherbereich 200.
  • Daneben kann, wie schon erwähnt, eine Kennung, also ein Identifier ebenso enthalten sein, beispielsweise anstatt der Codelängenangabe oder auch zusätzlich. Ein solchen Patch-Container wie Block 300 bzw. die gesamte Patch-Tabelle kann sehr einfach über ein Bussystem in das Steuergerät geladen werden, z. B. über ein CAN-Bus-System mit den CAN-Botschaften. Wird eine Kennung oder ein Identifier wie angesprochen verwendet, also einem Patch-Container zugeordnet, kann man die Änderungen, z. B. Fehlermeldungen von Kunden, ganz gezielt ändern, nachverfolgen und auch eine Historie der Änderungen aufbauen und auch speichern, ohne die Transparenz aus dem stabilen ausgetesteten Programmcode, also die fehlerfreie Software zu verlieren. Zeigt eine Korrektur nicht die gewünschte Reaktion, kann man leicht wieder den alten Zustand herstellen, also den Patch-Container einfach herausnehmen. Durch die geringe Datenrate, die das erfindungsgemäße Verfahren bedient, ist eine einfache Korrektur oder Erweiterung der Software auch über die Luftschnittstelle, wie bereits erwähnt, möglich.
  • Weiterhin vorteilhaft ist es, den Speicherbereich für die Daten, also die Software, in gleich große Datenfiles, also gleich große Softwareabschnitte, zu segmentieren, die dann ebenfalls, wie beim Verfahren, wie oben beschrieben, miteinander verkettet und für die Veränderungen in der Patch-Tabelle abgelegt werden. D. h. die Zellen oder Datenpakete bzw. die darin abgelegte Software im ersten Speicherbereich 200 und im zweiten Speicherbereich 201 müssen nicht zwangsläufig gleich groß sein, sondern es wird über die Adressen und die Patch-Verwaltung gemanagt. Es kann aber vorteilhaft sein, gleich große Softwareabschnitte für den ersten und zweiten Speicherbereich zu verwenden und immer solche kompletten Softwareabschnitte als Datensatz auszutauschen bzw. die alten Softwareteile durch die neuen zu ersetzen.
  • Durch die dargestellte Erfindung in all ihren Ausprägungen erhält man somit ein inkrementelles Flashen eines Steuergerätes mit all den genannten Vorteilen.

Claims (18)

  1. Verfahren zur Änderung von Software in einem ersten Speicherbereich in einem Steuergerät zur Steuerung von Betriebsabläufen, wobei die Ausführung alter Softwareteile durch die Ausführung neuer Softwareteile ersetzt wird und die alten Softwareteile in dem ersten Speicherbereich eingeschrieben sind, dadurch gekennzeichnet, dass die neuen Softwareteile in einem zweiten Speicherbereich eingeschrieben werden und durch eine erste Verzweigung im ersten Speicherbereich statt der alten Softwareteile im ersten Speicherbereich, die neuen Softwareteile im zweiten Speicherbereich ausgeführt werden, wobei nach Ausführung der neuen Softwareteile durch eine zweite Verzweigung im zweiten Speicherbereich, wieder in den ersten Speicherbereich rückverzweigt wird und die Ausführung der weiteren von den alten Softwareteilen verschiedene Software im ersten Speicherbereich fortgesetzt wird, wobei die alten Softwareteile im ersten Speicherbereich verbleiben.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der zweite Speicherbereich nur dazu verwendet wird die neuen Softwareteile aufzunehmen.
  3. Verfahren Anspruch 1, dadurch gekennzeichnet, dass die erste Verzweigung und die zweite Verzweigung durch wenigstens eine verkettete Liste realisiert wird.
  4. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass als erste Verzweigung eine Anfangsadresse der neuen Softwareteile verwendet wird, wobei mit dieser wenigstens teilweise die alten Softwareteile überschrieben werden.
  5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass als zweite Verzweigung eine Anfangsadresse der weiteren von den alten Softwareteilen verschiedene Software verwendet wird.
  6. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass in den neuen Softwareteilen Informationen enthalten sind, die angeben welche alten Softwareteile ersetzt werden sollen.
  7. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass in den neuen Softwareteilen Informationen enthalten sind, die angeben durch welche neuen Softwareteile die alten Softwareteile ersetzt werden sollen.
  8. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der zweite Speicherbereich neben wenigstens einem neuen Softwareteil eine Adresse für die erste Verzweigung, eine Adresse für die zweite Verzweigung und eine Adresse für den Beginn des alten Softwareteils, das durch das wenigstens eine neue Softwareteil zu ersetzen ist enthält.
  9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass der zweite Speicherbereich weiterhin die Länge des wenigstens einen neuen Softwareteils und/oder des wenigstens einen alten Softwareteils enthält.
  10. Verfahren nach Anspruch 8 oder 9, dadurch gekennzeichnet, dass die Elemente des Anspruchs 8 und/oder die Elemente des Anspruchs 9 zu einem Datensatz im zweiten Speicherbereich zusammengefasst sind.
  11. Verfahren nach Anspruch 10, dadurch gekennzeichnet, dass wenigstens zwei alte Softwareteile und wenigstens zwei neue Softwareteile, die diese ersetzen vorgesehen sind wobei die entsprechenden Elemente des Anspruchs 8 und/oder 9 zu jeweils einem Datensatz zusammengefasst und im zweiten Speicherbereich eingeschrieben sind.
  12. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass als erster Speicherbereich eine erste Tabelle und als zweiter Speicherbereich eine zweite Tabelle im selben Speicher vorgesehen sind.
  13. Verfahren nach Anspruch 1 oder 12, dadurch gekennzeichnet, dass der erste Speicherbereich und der zweite Speicherbereich in gleichgroße Softwareabschnitte aufgeteilt ist, wobei in jeden Softwareabschnitt des zweiten Speicherbereichs ein neuer Softwareteil einschreibbar ist.
  14. Verfahren nach Anspruch 10 oder 13, dadurch gekennzeichnet, dass jeder Datensatz oder jeder Softwareabschnitt mit einer Kennung versehen ist.
  15. Verfahren nach Anspruch 14, dadurch gekennzeichnet, dass die Kennung für einen Softwareabschnitt im ersten Speicherbereich, der einen alten Softwareteil enthält und die Kennung für den entsprechenden Softwareabschnitt mit dem neuen Softwareteil, der den alten Softwareteil ersetzt gleich ist.
  16. Vorrichtung zur Änderung von Software in einem ersten Speicherbereich in einem Steuergerät zur Steuerung von Betriebsabläufen, wobei die Ausführung alter Softwareteile durch die Ausführung neuer Softwareteile ersetzt wird und die alten Softwareteile in dem ersten Speicherbereich eingeschrieben sind, dadurch gekennzeichnet, dass Mittel enthalten sind, die die neuen Softwareteile in einen zweiten Speicherbereich und eine erste Verzweigung in den ersten Speicherbereich einschreiben, wodurch statt der alten Softwareteile im ersten Speicherbereich, die neuen Softwareteile im zweiten Speicherbereich ausgeführt werden, wobei die Mittel auch eine zweite Verzweigung in den zweiten Speicherbereich einschreiben, wodurch nach Ausführung der neuen Softwareteile, wieder in den ersten Speicherbereich rückverzweigt wird und die Ausführung der weiteren von den alten Softwareteilen verschiedenen Software im ersten Speicherbereich fortgesetzt wird, wobei die alten Softwareteile im ersten Speicherbereich verbleiben.
  17. Steuergerät mit einem ersten Speicherbereich, in dem alte Softwareteile und weitere von den alten Softwareteilen unterschiedliche Softwareteile gespeichert sind, dadurch gekennzeichnet, dass das Steuergerät einen zweiten Speicherbereich enthält, welcher neue, die alten Softwareteile ersetzende Softwareteile enthält, dadurch gekennzeichnet, dass Mittel enthalten sind, die die neuen Softwareteile in einen zweiten Speicherbereich und eine erste Verzweigung in den ersten Speicherbereich einschreiben, wodurch statt der alten Softwareteile im ersten Speicherbereich, die neuen Softwareteile im zweiten Speicherbereich ausgeführt werden, wobei die Mittel auch eine zweite Verzweigung in den zweiten Speicherbereich einschreiben, wodurch nach Ausführung der neuen Softwareteile, wieder in den ersten Speicherbereich rückverzweigt wird und die Ausführung der weiteren von den alten Softwareteilen verschiedenen Software im ersten Speicherbereich fortgesetzt wird, wobei die alten Softwareteile im ersten Speicherbereich verbleiben.
  18. Computerprogramm mit Programmcode zur Durchführung aller Schritte nach einem der Ansprüche 1 bis 15, wenn das Programm auf einem Computer, insbesondere in einem Steuergerät ausgeführt wird.
DE10260103A 2002-12-19 2002-12-19 Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät Withdrawn DE10260103A1 (de)

Priority Applications (5)

Application Number Priority Date Filing Date Title
DE10260103A DE10260103A1 (de) 2002-12-19 2002-12-19 Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät
EP03813535A EP1614035A2 (de) 2002-12-19 2003-12-17 Verfahren und vorrichtung zur änderung von software in einem steuergerät sowie entsprechendes steuergerät
PCT/DE2003/004159 WO2004057465A2 (de) 2002-12-19 2003-12-17 Verfahren und vorrichtung zur änderung von software in einem steuergerät sowie entsprechendes steuergerät
US10/539,494 US20060156297A1 (en) 2002-12-19 2003-12-17 Method and device for modifying software in a control unit and corresponding control unit
CNB2003801066326A CN100392590C (zh) 2002-12-19 2003-12-17 更改控制器中软件的方法和装置以及相应的控制器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10260103A DE10260103A1 (de) 2002-12-19 2002-12-19 Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät

Publications (1)

Publication Number Publication Date
DE10260103A1 true DE10260103A1 (de) 2004-07-01

Family

ID=32404083

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10260103A Withdrawn DE10260103A1 (de) 2002-12-19 2002-12-19 Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät

Country Status (5)

Country Link
US (1) US20060156297A1 (de)
EP (1) EP1614035A2 (de)
CN (1) CN100392590C (de)
DE (1) DE10260103A1 (de)
WO (1) WO2004057465A2 (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007118743A1 (de) 2006-04-11 2007-10-25 Robert Bosch Gmbh Erweiterung der funktionalität einer serien-software in einem steuergerät
WO2012016805A1 (de) 2010-08-06 2012-02-09 Robert Bosch Gmbh Verfahren zur rekonfiguration von softwareparametern in einem mikrocontroller sowie mikrocontroller und steuergerät

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SE534471C2 (sv) * 2010-01-13 2011-09-06 Scania Cv Ab Metod och system för att uppdatera programvara
US9626179B2 (en) 2014-07-21 2017-04-18 Sandisk Technologies Llc Method and system for using a ROM patch
US9395975B2 (en) * 2014-07-21 2016-07-19 Sandisk Technologies Llc Method and system for generating a ROM patch
CN111133412A (zh) 2017-07-25 2020-05-08 奥罗拉实验室有限公司 基于工具链构建车辆ecu软件的软件增量更新和异常检测

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4831517A (en) * 1986-10-10 1989-05-16 International Business Machines Corporation Branch and return on address instruction and methods and apparatus for implementing same in a digital data processing system
JPH06242990A (ja) * 1993-02-12 1994-09-02 Fujitsu Ltd メモリパッチ装置
US5481713A (en) * 1993-05-06 1996-01-02 Apple Computer, Inc. Method and apparatus for patching code residing on a read only memory device
US5619698A (en) * 1995-05-05 1997-04-08 Apple Computer, Inc. Method and apparatus for patching operating systems
US6421679B1 (en) * 1995-10-27 2002-07-16 International Business Machines Corporation Concurrent patch to logical partition manager of a logically partitioned system
US5802549A (en) * 1995-12-14 1998-09-01 International Business Machines Corporation Method and apparatus for patching pages of ROM
US5901225A (en) * 1996-12-05 1999-05-04 Advanced Micro Devices, Inc. System and method for performing software patches in embedded systems
US5938766A (en) * 1997-03-21 1999-08-17 Apple Computer, Inc. System for extending functionality of a digital ROM using RAM/ROM jump tables and patch manager for updating the tables
US6189145B1 (en) * 1997-05-28 2001-02-13 International Business Machines Corporation Concurrent patch to logical partition manager of a logically partitioned system
US7430670B1 (en) * 1999-07-29 2008-09-30 Intertrust Technologies Corp. Software self-defense systems and methods
GB2373888A (en) * 2001-03-30 2002-10-02 Toshiba Res Europ Ltd Dynamic vector address allocation for a code patching scheme
US6760908B2 (en) * 2001-07-16 2004-07-06 Namodigit Corporation Embedded software update system
US8539469B2 (en) * 2004-05-11 2013-09-17 Microsoft Corporation Efficient patching

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007118743A1 (de) 2006-04-11 2007-10-25 Robert Bosch Gmbh Erweiterung der funktionalität einer serien-software in einem steuergerät
WO2012016805A1 (de) 2010-08-06 2012-02-09 Robert Bosch Gmbh Verfahren zur rekonfiguration von softwareparametern in einem mikrocontroller sowie mikrocontroller und steuergerät
DE102010039021A1 (de) 2010-08-06 2012-02-09 Robert Bosch Gmbh Verfahren zur Rekonfiguration von Softwareparametern in einem Mikrocontroller sowie Mikrocontroller und Steuergerät
US9760367B2 (en) 2010-08-06 2017-09-12 Robert Bosch Gmbh Method for reconfiguring software parameters in a microcontroller as well as a microcontroller and control unit
DE102010039021B4 (de) 2010-08-06 2023-02-23 Robert Bosch Gmbh Verfahren zur Rekonfiguration von Softwareparametern in einem Mikrocontroller sowie Mikrocontroller und Steuergerät

Also Published As

Publication number Publication date
CN1729449A (zh) 2006-02-01
WO2004057465A3 (de) 2005-01-13
EP1614035A2 (de) 2006-01-11
CN100392590C (zh) 2008-06-04
WO2004057465A2 (de) 2004-07-08
US20060156297A1 (en) 2006-07-13

Similar Documents

Publication Publication Date Title
DE19740525C1 (de) Verfahren zur Abspeicherung und Wiedergewinnung von Daten in einem Steuersystem, insbesondere in einem Kraftfahrzeug
DE102007006307A1 (de) Verfahren zum Betreiben eines nichtflüchtigen Speicherelements, Aufzeichnungsmedium und nichtflüchtigen Speicherelement
DE10308545A1 (de) Verfahren und Vorrichtung zum Aktualisieren eines verteilten Programms
EP0067364B1 (de) Verfahren und Anordnung zum nichtflüchtigen Speichern des Zählerstandes einer elektronischen Zählschaltung
DE102018202446A1 (de) Verfahren zum Modularisieren einer Softwarearchitektur
DE19911794B4 (de) Verfahren und Vorrichtung zur Absicherung bei Veränderung des Speicherinhalts von Steuergeräten
DE10260103A1 (de) Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät
DE19963475B4 (de) Verfahren und Vorrichtung zur Steuerung von Betriebsabläufen in einem Fahrzeug sowie zur Bereitstellung von Daten diesbezüglich
EP0664387A1 (de) Verfahren zum Ändern der Arbeitsweise eines Steuergeräts von Kraftfahrzeugen
EP3885957A1 (de) Vorrichtung zur speicherung von daten in einem nichtflüchtigen speicher
WO2009074499A1 (de) Verfahren zum betreiben eines steuergerätes und steuergerät
DE102023104008B3 (de) Verfahren zum Austausch von Daten zwischen einem flüchtigen Speichermedium und einem nicht-flüchtigen Speichermedium, Datenverarbeitungsvorrichtung, Computerprogramm, computerlesbares Speichermedium und Kraftfahrzeug
WO2009103728A1 (de) Verfahren und vorrichtung zum speichern von informationsdaten
EP0880092B1 (de) Programmgesteuerte Einrichtung mit Nachlademöglichkeit für und Umschaltemöglichkeit auf zweites Betriebssystem ohne Programmunterbrechung
DE102021002079B3 (de) Verfahren zum effizienten Ablegen von Daten
DE102006013759B4 (de) Verfahren und Recheneinheit zum Betreiben einer Speichereinrichtung
DE10148047A1 (de) Verfahren und Vorrichtung zur Sicherung von Daten in einem Speicherbaustein und Speicherbaustein
DE10251477B4 (de) Vorrichtung und Verfahren zum selektiven Ändern von ROM-Daten für Test- und Diagnosezwecke
WO2002099650A2 (de) Verfahren zur verwaltung eines speichers einer chipkarte
EP2037360A2 (de) Steuergerät für einen Massenspeicher und Verfahren zum Bereitstellen von Daten für einen Startvorgang eines Computers
DE10128752A1 (de) Verfahren zur Ablage von Daten in einen Speicherbaustein
WO2024078825A1 (de) Ändern des speicherinhalts eines hauptspeichers eines mikrocontrollers ohne separate speicherverwaltungseinheit
EP1564754A2 (de) Verfahren und Vorrichtung zur Verwaltung von Daten in einem nichtflüchtigen Datenspeicher
DE102020208877A1 (de) Verfahren zum Aktualisieren einer auf einer Recheneinheit auszuführenden Anwendung
DE102022003674A1 (de) Verfahren zum statischen Allozieren von lnformationen zu Speicherbereichen, informationstechnisches System und Fahrzeug

Legal Events

Date Code Title Description
8141 Disposal/no request for examination