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 PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 230000015654 memory Effects 0.000 claims abstract description 99
- 230000008569 process Effects 0.000 claims abstract description 5
- 230000008859 change Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 2
- 238000007726 management method Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000002604 ultrasonography Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
- G11C16/102—External programming circuits, e.g. EPROM programmers; In-circuit programming or reprogramming; EPROM emulators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates 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ät100 mit einer Verarbeitungseinheit101 , insbesondere einem Mikrocontroller sowie Speichermittel102 , insbesondere aufgeteilt in zwei Speicherbereiche103 und104 . Diese Speicherbereiche103 und104 können sich im selben Speicher oder in verschiedenen Speichern des Steuergeräts100 befinden. Über eine Schnittstelle105 , die neben einer leitungsgebundenen auch eine leitungslose Verbindung repräsentieren kann, werden die entsprechenden neuen Softwareteile von einer Quelle106 , beispielsweise einem weiteren Rechner, mit zweitem Speichermittel107 in das Steuergerät100 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 Speicherbereich200 und einen zweiten Speicherbereich201 , insbesondere in Form einer Tabelle dargestellt. Der erste Speicherbereich enthält dabei Zellen bzw. Softwareabschnitte205 bis216 . Die entsprechenden Adressen der Zellen205 bis216 sind in Block203 jeweils abgelegt. Ebenso enthält ein zweiter Speicherbereich201 , also die Patch-Tabelle, mehrere Zellen217 bis223 , ebenfalls Softwareabschnitte, in die die sogenannten Patch-Container eingespeichert werden können. Auch hier sind entsprechende Adressen im Block204 zur jeweiligen Zelle, also zum jeweiligen Patch-Container abgelegt. - Wie in
2 zu erkennen, wird in den alten Softwareteilen aus dem ersten Speicherbereich200 ein Aussprung nach dem Softwareabschnitt207 im Softwareabschnitt208 auf die Patch-Tabelle201 generiert. Dabei wird der alte Softwareteil208 wenigstens teilweise mit der Sprungadresse, also der Verzweigung zu Softwareabschnitt218 überschrieben. D. h. die erste Änderung A1 beginnt mit einer Verzweigung V1A1 aus dem ersten Speicherbereich200 in den zweiten Speicherbereich201 . Nach Ablauf der Softwareabschnitte218 ,219 wird aus Softwareabschnitt220 mit einer zweiten Verzweigung V2A1 wieder in den ersten Speicherbereich, den Softwareabschnitt210 rückverzweigt bzw. zurückgesprungen. So können also die alten Softwareteile in den Softwareabschnitten208 und209 durch die neuen Softwareteile in den Abschnitten218 und219 ersetzt, also umsprungen werden. Dabei bleiben die alten Softwareteile in den Abschnitten208 und209 weiter im ersten Speicherbereich enthalten. - Eine zweite Änderung A2 zeigt beispielsweise einen Aussprung nach Abschnitt
212 zu Beginn des Abschnittes223 im zweiten Speicherbereich201 und einen Rücksprung zu Beginn des Speicherabschnitts214 . D. h. durch die erste Verzweigung V1A2 und den Rücksprung oder die zweite Verzweigung V2A2 wird der Softwareabschnitt213 durch den Softwareabschnitt223 bezüglich des Softwareablaufs ersetzt, wobei wiederum der alte Softwareteil im Softwareabschnitt213 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 Speicherbereich200 wie geändert werden sollen. Diese Information wird in die Patch-Tabelle201 geladen. - Mit einer Patch-Verwaltung werden beim Neuanlauf des Steuergerätes die Adressbezüge zwischen Speicherbereich
200 und Speicherbereich201 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 in3 dargestellt ist. Die Verwaltung kann auch von der Verarbeitungseinheit101 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 Block300 dargestellt. Dabei ist mit301 beispielsweise eine Programmadresse, also die Adresse des alten zu ersetzenden Softwareteils angegeben, mit Block302 die Adresse in der Patch-Tabelle. Block303 gibt den neuen insbesondere Programmcode, also das neue Softwareteil an, welches das alte Softwareteil ersetzen soll. Mit Block304 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 Block305 die Rücksprungadresse zu den weiteren Softwareteilen, also insbesondere zum Originalprogramm in den ersten Speicherbereich200 . - 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 Speicherbereich201 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)
- 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.
- Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der zweite Speicherbereich nur dazu verwendet wird die neuen Softwareteile aufzunehmen.
- Verfahren Anspruch 1, dadurch gekennzeichnet, dass die erste Verzweigung und die zweite Verzweigung durch wenigstens eine verkettete Liste realisiert wird.
- 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.
- Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass als zweite Verzweigung eine Anfangsadresse der weiteren von den alten Softwareteilen verschiedene Software verwendet wird.
- Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass in den neuen Softwareteilen Informationen enthalten sind, die angeben welche alten Softwareteile ersetzt werden sollen.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Verfahren nach Anspruch 10 oder 13, dadurch gekennzeichnet, dass jeder Datensatz oder jeder Softwareabschnitt mit einer Kennung versehen ist.
- 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.
- 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.
- 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.
- 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.
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)
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)
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)
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 |
-
2002
- 2002-12-19 DE DE10260103A patent/DE10260103A1/de not_active Withdrawn
-
2003
- 2003-12-17 US US10/539,494 patent/US20060156297A1/en not_active Abandoned
- 2003-12-17 EP EP03813535A patent/EP1614035A2/de not_active Withdrawn
- 2003-12-17 CN CNB2003801066326A patent/CN100392590C/zh not_active Expired - Fee Related
- 2003-12-17 WO PCT/DE2003/004159 patent/WO2004057465A2/de active Application Filing
Cited By (5)
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 |