EP1614035A2 - Method and device for modifying software in a control unit and corresponding control unit - Google Patents

Method and device for modifying software in a control unit and corresponding control unit

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
German (de)
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/en
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

The invention relates to a method and a device for modifying software in a first memory area in a control unit for controlling operational sequences, whereby the execution of old software segments is replaced by the execution of new software segments and the old software segments are written to the first memory area. According to the invention, the new software segments are written to a second memory area and said new software segments in the second memory area are executed in place of the old software segments in the first memory area by means of a jump operation generated in the first memory area. Once the new software segments have been executed, a backward jump to return to the first memory area is carried out by a second jump operation generated in the second memory area and the execution of the remaining software in the first memory area that differs from the old software segments is resumed. The old software segments remain in the first memory area.

Description

Verfahren und Vorrichtung zur Änderung von Software in einem Steuergerät sowie entsprechendes SteuergerätMethod and device for changing software in a control unit and corresponding control unit
Stand der TechnikState of the art
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.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.
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 inIn the automotive industry in particular, increasingly complex functions are implemented using software in the individual control units. It is increasingly necessary to incorporate changes to the software into the control unit shortly before or after delivery to the end customer. The changes to the software of a control device are generally eliminated by allowing the changes to flow into a new software integration status and to load this newly created software completely into the control device, in particular by storing it in a so-called flash EPROM memory, i. H. by flashing. Due to the existing scope of the software, flashing a control unit, for example, already takes up to 30 minutes. Due to the strong increase in functions and functionality and thus through an even larger software scope and a larger number of software packages, this time is in
Zukunft noch stärker ansteigen.The future will increase even more.
Daher ist es Aufgabe der Erfindung, diesen Zeitaufwand zum Flashen eines Steuergerätes zu vermindern, wodurch sich auch noch weitere Vorteile ergeben. Vorteile der ErfindungIt is therefore an object of the invention to reduce the time it takes to flash a control unit, which also results in further advantages. Advantages of the invention
Die Erfindung geht aus von einem Verfahren und einer Vorrichtung zur Änderung von Software in einem ersten Speicherbereich in einem Steuergerät zur Steuerung vonThe invention relates to a method and a device for changing software in a first memory area in a control device for controlling
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.Operating processes, in particular in the case of a vehicle, and a corresponding control unit, the execution of old software parts being replaced by the execution of new software parts and the old software parts being written into the first memory area. In most cases, software changes, especially changes in program code, are small compared to the portion of the software that does not need to be changed. Advantageously, the parts to be changed, or generally only parts of software, are now specifically loaded into the control unit, these software parts also being called patch containers in the description or being contained in such a patch container.
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.Therefore, only 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.
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.I.e. In order to implement the changes to the existing software, that is to say the old software parts, a central patch management, in particular, is installed, with which the parts of the software to be changed can be changed in a targeted manner by entry and exit. As a result, on the one hand, the high expenditure of time when flashing large software sections or software parts can be significantly reduced because, on the one hand, the entire software is not rewritten, as already mentioned above, and on the other hand, the time required for the change can also be saved the software, in particular to delete and re-register it. This also results in greater flexibility when changing software and software parts and, on the other hand, less susceptibility to errors by overwriting or deleting and rewriting software parts as little as possible.
Dies wird zweckmäßiger Weise insbesondere dadurch realisiert, dass der zweiteThis is expediently achieved in particular by the second
Speicherbereich, also der Patch-Container-Bereich nur dazu verwendet wird, die neuen Softwareteile aufzunehmen und in den Programmlauf bzw. den Softwareablauf einzubinden.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.
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 zurThe 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
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 jeweiligenStorage of a number of versions of different software parts that cannot be determined in advance. In the case of linked lists, a pointer or a reference to the next version of this software part is kept for each version of a software part or for each software part. A special pointer state can be used for coding in the event that the associated version is the most current version of the respective
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, dieserSoftware part. 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. In the case of a linked list, 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. In this way, 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
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.Information to assign the next available storage location, which also leads to a complete use of the memory. 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. As an alternative, 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.
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.Advantageously, 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. For this purpose, 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. These elements, i.e. 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.
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.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. In addition, 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.
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.Appropriately, 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.
Weitere Vorteile und vorteilhafte Ausgestaltungen ergeben sich aus der Beschreibung sowie den Merkmalen der Ansprüche.Further advantages and advantageous configurations result from the description and the features of the claims.
Zeichnungdrawing
Die Erfindung wird im Weiteren anhand der in der Zeichnung dargestellten Figuren näher erläutert. Dabei zeigt:The invention is explained in more detail below with reference to the figures shown in the drawing. It shows:
Figur 1 ein Steuergerät mit entsprechender Software, bei dem alte Softwareteile durch neue Softwareteile ersetzt werden und1 shows a control unit with appropriate software, in which old software parts are replaced by new software parts and
Figur 2 den ersten Speicherbereich mit der Steuergerätesoftware sowie den erfindungsgemäßen Patch-Container undFigure 2 shows the first memory area with the control unit software and the patch container and
Figur 3 beispielhaft einen möglichen Datensatz im Patch-Container.FIG. 3 shows an example of a possible data record in the patch container.
Beschreibung der AusführungsbeispieleDescription of the embodiments
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.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.
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 zweiterFIG. 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. Also contains a second
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.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.
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 einerAs can be seen in FIG. 2, 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
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.Branch VIAL from the first memory area 200 into the second memory area 201. After the software sections 218, 219 have expired, the software section 210 branches back or jumps back from the software section 220 with a second branch V2A1 into the first memory area. Thus, 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.
Eine zweite Änderung A2 zeigt beispielsweise einen Aussprung nach Abschnitt 212 zu Beginn des Abschnittes 223 im zweiten Speicherbereich 201 und einen Rücksprung zuA 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
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.Beginning of memory section 214. by the first branch V1A2 and the return or the second branch V2A2, the software section 213 is replaced by the software section 223 with regard to the software process, again the old software part in software section 213 is at least partially preserved. Only the part that contains the jump address for the patch table is replaced.
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.In order to generate this state, as just described with FIG. 2, information is required as to which software parts, that is to say old software parts from memory area 200, are to be changed and how. This information is loaded into the patch table 201.
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 desWith 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
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.Control unit is processed, be housed. According to the invention, 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.
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 derIn order to generate the 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
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.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. Furthermore, an identifier or an identifier can be assigned to a patch container and thus contained in the data record.
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.Not all of the information mentioned is necessary to implement the method according to the invention, for example from the starting address and length of the software part, the end address can be determined. Nevertheless, 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.
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 altenIn the same way, a patch management can also be used to undo a change in the software. With such an undo, storage space could then be provided in the first storage area for the exit addresses, so that when the old one is reused
Softwareteils dieses nicht teilweise überschrieben ist.Software part this is not partially overwritten.
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-Block 300 is shown in FIG. 3 as an example of such a patch container or data record. For example, 301 is a program address, that is the address of the old software part to be replaced, and block 302 is the address in the 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 zumTable. Block 303 specifies the new program code, in particular the new software part, which is to replace the old software part. Block 304, for example, 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
Originalprogramm in den ersten Speicherbereich 200.Original program in the first memory area 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.In addition, as already mentioned, an identifier, that is to say an identifier, may also be present, for example instead of specifying the code length or additionally. Such 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. If an identifier or an identifier is used as mentioned, i.e. assigned to a patch container, 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. If a correction does not show the desired response, you can easily restore the old state, i.e. simply remove the patch container. Due to the low data rate, which operates the method according to the invention, a simple correction or extension of the software is also possible via the air interface, as already mentioned.
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.It is also advantageous to segment the memory area for the data, that is to say the software, into 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. I.e. 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. However, it can be advantageous to use software sections of the same size for the first and second memory areas and to always exchange such complete software sections as a data record or to replace the old software parts with the new ones.
Durch die dargestellte Erfindung in all ihren Ausprägungen erhält man somit ein inkrementelles Flashen eines Steuergerätes mit all den genannten Vorteilen. The invention shown in all its forms thus provides an incremental flashing of a control device with all the advantages mentioned.

Claims

Ansprüche Expectations
1. Verfahren zur Änderung von Software in einem ersten Speicherbereich in einem1. Method for changing software in a first memory area in one
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 neuenControl device for controlling operating processes, the execution of old software parts being replaced by the execution of new software parts and the old software parts being written into the first memory area, characterized in that the new ones
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 dieSoftware parts are written in a second memory area and by a first branch in the first memory area instead of the old software parts in the first memory area, the new software parts are executed in the second memory area, after execution of the new software parts by a second branch in the second memory area, again in the first Memory area is branched back and the
Ausführung der weiteren von den alten Softwareteilen verschiedene Software im ersten Speicherbereich fortgesetzt wird, wobei die alten Softwareteile im ersten Speicherbereich verbleiben.Execution of the further software different from the old software parts is continued in the first memory area, the old software parts remaining in the first memory area.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der zweite2. The method according to claim 1, characterized in that the second
Speicherbereich nur dazu verwendet wird die neuen Softwareteile aufzunehmen.Memory area is only used to record the new software parts.
3. Verfahren Anspruch 1, dadurch gekennzeichnet, dass die erste Verzweigung und die zweite Verzweigung durch wenigstens eine verkettete Liste realisiert wird.3. The method of claim 1, characterized in that the first branch and the second branch is realized by at least one linked list.
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. 4. The method according to claim 1, characterized in that a start address of the new software parts is used as the first branch, the old software parts being at least partially overwritten with this.
5. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass als zweite Verzweigung eine Anfangsadresse der weiteren von den alten Softwareteilen verschiedene Software verwendet wird.5. The method according to claim 1, characterized in that a start address of the further software different from the old software parts is used as the second branch.
6. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass in den neuen6. The method according to claim 1, characterized in that in the new
Softwareteilen Informationen enthalten sind, die angeben welche alten Softwareteile ersetzt werden sollen.Software parts Information is included which indicate which old software parts should be replaced.
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.7. The method according to claim 1, characterized in that the new software parts contain information which indicate by which new software parts the old software parts are to be replaced.
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.8. The method according to claim 1, characterized in that the second memory area 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 by the at least one new software part replace is included.
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.9. The method according to claim 8, characterized in that the second memory area further contains the length of the at least one new software part and / or the at least one old software part.
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.10. The method according to claim 8 or 9, characterized in that the elements of claim 8 and / or the elements of claim 9 are combined to form a data record in the second memory area.
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.11. The method according to claim 10, characterized in that at least two old software parts and at least two new software parts to replace them are provided, the corresponding elements of claim 8 and / or 9 being combined to form a data record and being written into the second memory area.
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. 12. The method according to claim 1, characterized in that a first table and a second table are provided as a second memory area in the same memory as the first memory area.
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.13. The method according to claim 1 or 12, characterized in that the first memory area and the second memory area is divided into software sections of equal size, a new software part being writable in each software section of the second memory area.
14. Verfahren nach Anspruch 10 oder 13, dadurch gekennzeichnet, dass jeder Datensatz oder jeder Softwareabschnitt mit einer Kennung versehen ist.14. The method according to claim 10 or 13, characterized in that each data record or each software section is provided with an identifier.
15. Verfahren nach Anspruch 14, dadurch gekennzeichnet, dass die Kennung für einen Softwareabschnitt im ersten Speicherbereich, der einen alten Softwareteil enthält und die15. The method according to claim 14, characterized in that the identifier for a software section in the first memory area which contains an old software part and the
Kennung für den entsprechenden Softwareabschnitt mit dem neuen Softwareteil, der den alten Softwareteil ersetzt gleich ist.Identifier for the corresponding software section with the new software part that is the same as the old software part.
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.16. Device for changing software in a first memory area in a control device for controlling operating processes, the execution of old software parts being replaced by the execution of new software parts and the old software parts being written into the first memory area, characterized in that means are contained, which write the new software parts in a second memory area and a first branch in the first memory area, whereby instead of the old software parts in the first memory area, the new software parts are executed in the second memory area, the means also writing a second branch in the second memory area, whereby after execution of the new software parts, branching back into the first memory area and the execution of the further software different from the old software parts is continued in the first memory area, the old software parts in the first memory area area remain.
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.17. Control unit with a first memory area in which old software parts and further software parts different from the old software parts are stored, characterized in that the control unit contains a second memory area which contains new software parts replacing the old software parts, characterized in that they contain means are, which write the new software parts in a second memory area and a first branch in the first memory area, whereby instead of the old software parts in the first memory area, the new software parts are executed in the second memory area, the means also having a second branch in the second Write in the memory area, whereby after the execution of the new software parts, the system branches back to the first memory area and the execution of the further software different from the old software parts is continued in the first memory area, the old software parts remaining in the first memory area.
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. 18. Computer program with program code for performing all steps according to one of claims 1 to 15, when the program is executed on a computer, in particular in a control unit.
EP03813535A 2002-12-19 2003-12-17 Method and device for modifying software in a control unit and corresponding control unit Withdrawn EP1614035A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE10260103A DE10260103A1 (en) 2002-12-19 2002-12-19 Method and device for changing software in a control unit and corresponding control unit
PCT/DE2003/004159 WO2004057465A2 (en) 2002-12-19 2003-12-17 Method and device for modifying software in a control unit and corresponding control unit

Publications (1)

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

Family

ID=32404083

Family Applications (1)

Application Number Title Priority Date Filing Date
EP03813535A Withdrawn EP1614035A2 (en) 2002-12-19 2003-12-17 Method and device for modifying software in a control unit and corresponding control unit

Country Status (5)

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

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102006016891A1 (en) 2006-04-11 2007-10-25 Robert Bosch Gmbh Extension of the functionality of a series software in a control unit
SE534471C2 (en) * 2010-01-13 2011-09-06 Scania Cv Ab Method and system for updating software
DE102010039021B4 (en) 2010-08-06 2023-02-23 Robert Bosch Gmbh Method for reconfiguration of software parameters in a microcontroller as well as microcontroller and control unit
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 (en) * 1993-02-12 1994-09-02 Fujitsu Ltd Memory patching device
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 (en) 2004-07-01
WO2004057465A2 (en) 2004-07-08
CN100392590C (en) 2008-06-04
WO2004057465A3 (en) 2005-01-13
US20060156297A1 (en) 2006-07-13
CN1729449A (en) 2006-02-01

Similar Documents

Publication Publication Date Title
EP0067364B1 (en) Method and arrangement for a non-volatile storage of the counting state of an electronic counter
DE102010011658A1 (en) Application platform and method for operating a data processing device with such
DE10308545A1 (en) Method and device for updating a distributed program
DE19839680B4 (en) Method and device for modifying the memory contents of control units
DE19911794B4 (en) Method and device for securing changes in the memory contents of control units
DE19931184A1 (en) Altering controller memory contents involves writing new data that is worthy of security into different memory area before transferring to original memory area contg. replaced data
EP1614035A2 (en) Method and device for modifying software in a control unit and corresponding control unit
EP2608037B1 (en) Method for managing data in a flash memory, driver assistance device and motor vehicle
DE19963475B4 (en) A method and apparatus for controlling operations in a vehicle and providing data therefor
EP3885957A1 (en) Device for storing data in a non-volatile memory
DE10321104B4 (en) Method for filing variable data
EP1480092A2 (en) Method for construing an automation system
WO2009103728A1 (en) Method and device for storing information data
DE10148047A1 (en) Securing data in memory component involves storing data and test and validity identifiers multiple times and securing data by bit-wise logically combining data when read out
DE19637883B4 (en) Data processing system for executing large program systems
WO2002099650A2 (en) Method for managing a chip card memory
DE102006013759B4 (en) Method and computing unit for operating a memory device
WO2022223313A1 (en) Method for efficiently storing data
DE102005034572B4 (en) Method for error analysis when storing data in electronic control units
EP2037360A2 (en) Control device for a mass storage and method for providing data for a start procedure of a computer
DE102008040366A1 (en) System e.g. antilock brake system, for controlling functional components of e.g. sports vehicle, has RAM connected with electrically EPROM utilized for storing control parameters, which parameterize system for different vehicle variants
DE10128752A1 (en) Storage of data in computer memory, especially EEPROM or flash memory by writing data to memory in pages, whereby each page contains a value and a reference to the next page in the chain
EP1564754A2 (en) Method and device for managing data in a non-volatile memory
WO2024078825A1 (en) Changing the memory content of a main memory of a microcontroller without a separate memory management unit
EP1516245A1 (en) Device and method for processing a sequence of jump instructions

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