EP1614035A2 - 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

Info

Publication number
EP1614035A2
EP1614035A2 EP03813535A EP03813535A EP1614035A2 EP 1614035 A2 EP1614035 A2 EP 1614035A2 EP 03813535 A EP03813535 A EP 03813535A EP 03813535 A EP03813535 A EP 03813535A EP 1614035 A2 EP1614035 A2 EP 1614035A2
Authority
EP
European Patent Office
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
EP03813535A
Other languages
English (en)
French (fr)
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
Publication of EP1614035A2 publication Critical patent/EP1614035A2/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

Definitions

  • the invention relates to a method and a device for changing software in a first memory area in a control unit, as well as a corresponding control unit and a computer program for executing the method according to the independent claims.
  • the invention relates to a method and a device for changing software in a first memory area in a control device for controlling
  • the new software parts are expediently written into a second memory area, the new software parts being executed in the second memory area by a first branch in the first memory area instead of the old software parts in the first memory area, and after execution of the new software parts by a second branch in the second Memory area is branched back into the first memory area, the execution of the further software different from the old software parts is continued in the first memory area and the old software parts remain in the first memory area.
  • Memory area i.e. the patch container area is only used to accommodate the new software parts and to integrate them into the program run or the software run.
  • the first branch and the second branch can expediently be implemented by at least one linked list.
  • Chained lists provide a space-saving option for storing data, in particular software parts, which have a temporal as well as a logical order. Since several versions of comparable or identical software parts can be available in this way, linked lists are a very suitable approach to
  • This special pointer state can also serve as an identifier or identifier for the respective software part.
  • Relative or absolute addresses are used as references.
  • a reference to the storage location of the next logically linked information unit in particular either the next new software part or data record with the new one, is stored together with a respectively stored software part or together with an information unit such as a data record which contains the software part Software part or also the other software following the old software part.
  • the storage locations can only be occupied at the point in time at which the information to be stored or to be re-executed is available. So it is also possible this
  • An initial address of the new software parts is expediently used as the first branch, quasi to jump out of the first memory area, with which the old software parts, that is to say the software parts to be changed, can be overwritten at least in part.
  • storage space can also be provided for inserting the exit address in the first storage area. A jump is thus made in or to the patch container in the first memory area.
  • a start address of the other software that differs from the old software parts is then advantageously used as a second branch, so to speak as a return, so that after the old software parts have been jumped around, the further, subsequent software in the first memory area is used or processed.
  • the new software parts contain information which indicates which old software parts are to be replaced and / or information which shows which new software parts are to be used to replace the old software parts.
  • the second memory area that is to say in particular each patch container read in, in a patch table which contains the new software parts and possibly additional information, expediently contains, in addition to at least one new software part, an address for the first branch, an address for the second branch and an address for the beginning of the old software part, which is to be replaced by the at least one new software part.
  • the length of the at least one new software part and / or also of the at least one old software part can advantageously also be contained in the patch container as additional information.
  • an address for the first branch, an address for the second branch, an address for the beginning of the old software part and possibly the length of the new software part and / or the old software part can result in a data record in the patch container, i.e. in the second memory area, in particular the patch table.
  • the information that is necessary to replace an old software part is expediently summarized in such a data record for each old software part.
  • the first memory area can advantageously be implemented as a first table and the second memory area as a second table (patch table) in the same memory.
  • the first memory area and the second memory area can expediently be divided into software sections of the same size, a new software part being writable in each software section of the second memory area.
  • each data record or each software section can then also be provided with an identifier in accordance with the embodiment, which permits an assignment of an old software part and a new software part replacing it.
  • Figure 2 shows the first memory area with the control unit software and the patch container and
  • FIG. 3 shows an example of a possible data record in the patch container.
  • FIG. 1 shows a control device 100 with a processing unit 101, in particular a microcontroller and storage means 102, in particular divided into two storage areas 103 and 104. These storage areas 103 and 104 can be located in the same memory or in different memories of the control device 100. Via an interface 105, which in addition to a line-bound connection can also represent a line-free connection, the corresponding new software parts are transferred from a source 106, for example another computer, with a second storage means 107 introduced into the control device 100. Because only the data to be changed is transmitted, i.e. only the new software parts and not all of the software, which results in significantly lower transmission rates, air interfaces, i.e. radio, ultrasound, infrared, etc. can also be used. In addition, wired transmission can also be used here.
  • a source 106 for example another computer
  • FIG. 2 now shows a first memory area 200 and a second memory area 201, in particular shown in the form of a table.
  • the first memory area contains cells or software sections 205 to 216.
  • the corresponding addresses of cells 205 to 216 are each stored in block 203.
  • Memory area 201 ie the patch table, several cells 217 to 223, also software sections, in which the so-called patch containers can be stored.
  • Corresponding addresses for the respective cell, that is to say for the respective patch container, are also stored here in block 204.
  • a jump to the patch table 201 is generated in the old software parts from the first memory area 200 after the software section 207 in the software section 208.
  • the old software part 208 is at least partially overwritten with the jump address, that is to say the branch to software section 218. I.e. the first change AI starts with one
  • Branch VIAL from the first memory area 200 into the second memory area 201.
  • the software section 210 branches back or jumps back from the software section 220 with a second branch V2A1 into the first memory area.
  • the old software parts in software sections 208 and 209 can be replaced by the new software parts in sections 218 and 219, that is, they can be bypassed.
  • the old software parts in sections 208 and 209 remain in the first memory area.
  • a second change A2 shows, for example, a jump to section 212 at the beginning of section 223 in the second memory area 201 and a jump back
  • Patch management With patch management, the address references between memory area 200 and memory area 201 are established when the control device restarts. Patch management can e.g. B. in the boot loader, i.e. the start program that starts when the boot loader
  • Control unit is processed, be housed.
  • a large amount of information can be contained in the patch table as part of patch management. This information, these elements, can be summarized in individual data records, as shown in FIG. 3.
  • the administration can also be implemented by the processing unit 101 of the control unit itself, in that the corresponding information is stored in the patch container.
  • data records for the patch table there is an aid, in particular in the computer 106, which analyzes the changes in the source code and then generates the data records or the software parts for the patch table.
  • These data records consist, for example, of a jump-out address, from the original software, i.e. the old software parts, a destination address for the patch table, i.e. a reference to a patch container, the new software part, e.g. modified or new hexadecimal code, e.g. also from the
  • Length of the changed program code i.e. the length of the old software part or also the length of the new program code, i.e. the new software part as well as from the return address to the first memory area, i.e. to the other software different from the old software part, in particular to the original program.
  • an identifier or an identifier can be assigned to a patch container and thus contained in the data record.
  • the end address can be determined.
  • the use of the information can either mean a time advantage, since an address does not have to be calculated, but rather is specified, or redundant information in this context can make it possible to check the software change and thus increase security.
  • a patch management can also be used to undo a change in the software.
  • storage space could then be provided in the first storage area for the exit addresses, so that when the old one is reused
  • Block 300 is shown in FIG. 3 as an example of such a patch container or data record.
  • 301 is a program address, that is the address of the old software part to be replaced
  • block 302 is the address in the patch
  • Block 303 specifies the new program code, in particular the new software part, which is to replace the old software part.
  • Block 304 specifies the length of the new software part, that is to say the code length in bits, bytes or any other quantity, and finally block 305 shows the return address to the other software parts, in particular to
  • an identifier that is to say an identifier, may also be present, for example instead of specifying the code length or additionally.
  • a patch container such as block 300 or the entire patch table can be loaded very easily into the control device via a bus system, e.g. B. via a CAN bus system with the CAN messages.
  • a bus system e.g. B. via a CAN bus system with the CAN messages.
  • the changes e.g. B. Error messages from customers, change in a targeted manner, track and also build up and save a history of the changes without losing the transparency of the stable tested program code, i.e. the error-free software.
  • the memory area for the data that is to say the software
  • data files of the same size that is to say software sections of the same size, which are then also linked to one another, as in the method as described above, and for the changes in the patch Table are filed.
  • the cells or data packets or the software stored therein in the first memory area 200 and in the second memory area 201 do not necessarily have to be the same size, but rather are managed via the addresses and the patch management.
  • the invention shown in all its forms thus provides an incremental flashing of a control device with all the advantages mentioned.

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

Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes Steuergerät
Stand der Technik
Die Erfindung 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:
Figur 1 ein Steuergerät mit entsprechender Software, bei dem alte Softwareteile durch neue Softwareteile ersetzt werden und
Figur 2 den ersten Speicherbereich mit der Steuergerätesoftware sowie den erfindungsgemäßen Patch-Container und
Figur 3 beispielhaft einen möglichen Datensatz im Patch-Container.
Beschreibung der Ausführungsbeispiele
Figur 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.
Figur 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 Figur 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 AI beginnt mit einer
Verzweigung VlAl 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 Figur 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 Figur 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 Figur 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

Ansprüche
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.
EP03813535A 2002-12-19 2003-12-17 Verfahren und vorrichtung zur änderung von software in einem steuergerät sowie entsprechendes steuergerät Withdrawn EP1614035A2 (de)

Applications Claiming Priority (2)

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
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

Publications (1)

Publication Number Publication Date
EP1614035A2 true EP1614035A2 (de) 2006-01-11

Family

ID=32404083

Family Applications (1)

Application Number Title Priority Date Filing Date
EP03813535A Withdrawn EP1614035A2 (de) 2002-12-19 2003-12-17 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)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006016891A1 (de) 2006-04-11 2007-10-25 Robert Bosch Gmbh Erweiterung der Funktionalität einer Serien-Software in einem Steuergerät
SE534471C2 (sv) * 2010-01-13 2011-09-06 Scania Cv Ab Metod och system för att uppdatera programvara
DE102010039021B4 (de) 2010-08-06 2023-02-23 Robert Bosch Gmbh Verfahren zur Rekonfiguration von Softwareparametern in einem Mikrocontroller sowie Mikrocontroller und Steuergerät
US9395975B2 (en) * 2014-07-21 2016-07-19 Sandisk Technologies Llc Method and system for generating a ROM patch
US9626179B2 (en) 2014-07-21 2017-04-18 Sandisk Technologies Llc Method and system for using a ROM patch
US10496398B2 (en) * 2017-07-25 2019-12-03 Aurora Labs Ltd. Hot updates to ECU software using tool chain

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

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See references of WO2004057465A2 *

Also Published As

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

Similar Documents

Publication Publication Date Title
EP0067364B1 (de) Verfahren und Anordnung zum nichtflüchtigen Speichern des Zählerstandes einer elektronischen Zählschaltung
DE102010011658A1 (de) Applikationsplattform und Verfahren zum Betrieb einer Datenverarbeitungseinrichtung mit einer solchen
DE10308545A1 (de) Verfahren und Vorrichtung zum Aktualisieren eines verteilten Programms
DE19839680B4 (de) Verfahren und Vorrichtung zur Veränderung des Speicherinhalts von Steuergeräten
DE19911794B4 (de) Verfahren und Vorrichtung zur Absicherung bei Veränderung des Speicherinhalts von Steuergeräten
DE19931184A1 (de) Verfahren und Vorrichtung zur Veränderung des Speicherinhalts von Steuergeräten
EP1614035A2 (de) Verfahren und vorrichtung zur änderung von software in einem steuergerät sowie entsprechendes steuergerät
EP2608037B1 (de) Verfahren zum Verwalten von Daten in einem Flash-Speicher, Fahrerassistenzeinrichtung und Kraftfahrzeug
DE19963475B4 (de) Verfahren und Vorrichtung zur Steuerung von Betriebsabläufen in einem Fahrzeug sowie zur Bereitstellung von Daten diesbezüglich
EP3885957A1 (de) Vorrichtung zur speicherung von daten in einem nichtflüchtigen speicher
DE10321104B4 (de) Verfahren zur Ablage von veränderlichen Daten
EP1480092A2 (de) Verfahren zur Projektierung eines Automatisierungssystems
WO2009103728A1 (de) Verfahren und vorrichtung zum speichern von informationsdaten
DE10148047A1 (de) Verfahren und Vorrichtung zur Sicherung von Daten in einem Speicherbaustein und Speicherbaustein
DE19637883B4 (de) Datenverarbeitungsanlage zur Ausführung großer Programmsysteme
WO2002099650A2 (de) Verfahren zur verwaltung eines speichers einer chipkarte
DE102006013759B4 (de) Verfahren und Recheneinheit zum Betreiben einer Speichereinrichtung
WO2022223313A1 (de) Verfahren zum effizienten ablegen von daten
DE102005034572B4 (de) Verfahren zur Fehleranalyse bei der Speicherung von Daten in elektronischen Steuergeräten
EP2037360A2 (de) Steuergerät für einen Massenspeicher und Verfahren zum Bereitstellen von Daten für einen Startvorgang eines Computers
DE102008040366A1 (de) System und Verfahren zum Steuern von Funktionskomponenten eines Kraftfahrzeugs
DE10128752A1 (de) Verfahren zur Ablage von Daten in einen Speicherbaustein
EP1564754A2 (de) Verfahren und Vorrichtung zur Verwaltung von Daten in einem nichtflüchtigen Datenspeicher
WO2024078825A1 (de) Ändern des speicherinhalts eines hauptspeichers eines mikrocontrollers ohne separate speicherverwaltungseinheit
EP1516245A1 (de) Vorrichtung und verfahren zum verarbeiten einer sequenz von sprungbefehlen

Legal Events

Date Code Title Description
PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

17P Request for examination filed

Effective date: 20051104

AK Designated contracting states

Kind code of ref document: A2

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LI LU MC NL PT RO SE SI SK TR

17Q First examination report despatched

Effective date: 20070530

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18D Application deemed to be withdrawn

Effective date: 20110225