EP2340486A1 - Verfahren zur übertragung von programmcodes an einen speicher eines steuergerätes, insbesondere für kraftfahrzeuge - Google Patents

Verfahren zur übertragung von programmcodes an einen speicher eines steuergerätes, insbesondere für kraftfahrzeuge

Info

Publication number
EP2340486A1
EP2340486A1 EP09740650A EP09740650A EP2340486A1 EP 2340486 A1 EP2340486 A1 EP 2340486A1 EP 09740650 A EP09740650 A EP 09740650A EP 09740650 A EP09740650 A EP 09740650A EP 2340486 A1 EP2340486 A1 EP 2340486A1
Authority
EP
European Patent Office
Prior art keywords
program
memory
control unit
program code
transmitted
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.)
Ceased
Application number
EP09740650A
Other languages
English (en)
French (fr)
Inventor
Uwe Fischer
Ulrich Kanzler
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.)
Knorr Bremse Systeme fuer Nutzfahrzeuge GmbH
Knorr Bremse Systeme fuer Schienenfahrzeuge GmbH
Original Assignee
Knorr Bremse Systeme fuer Nutzfahrzeuge GmbH
Knorr Bremse Systeme fuer Schienenfahrzeuge 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 Knorr Bremse Systeme fuer Nutzfahrzeuge GmbH, Knorr Bremse Systeme fuer Schienenfahrzeuge GmbH filed Critical Knorr Bremse Systeme fuer Nutzfahrzeuge GmbH
Publication of EP2340486A1 publication Critical patent/EP2340486A1/de
Ceased legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code

Definitions

  • the invention relates to a method for transmitting program codes to a program memory of a control unit according to the preamble of claim 1. Such a method is known from DE 10 2006 016 891 A1.
  • Modern motor vehicles include one or more electronic control devices that include a program memory that can be programmed in the installed state of the controller, i. can be described with program codes.
  • the program memory is usually a so-called. Flash memory, which is often integrated into a microcontroller.
  • Common controllers include an interface, also called a diagnostic interface, used to transfer commands and data.
  • the interface used is often a "CAN" bus.
  • a common diagnostic protocol is UDS in accordance with ISO 14229. These are only given by way of example, since a variety of other interfaces and protocols exist.
  • the control unit usually also contains a diagnostic software which provides commands for deleting and programming the program memory via the diagnostic interface. This software is often called a "boot loader".
  • a programmer which has the required counterpart to the diagnostic interface in the controller.
  • a programming device is often referred to as a diagnostic device or diagnostic tester.
  • this programmer today is often a personal computer, such as a personal computer. a laptop.
  • Control units of motor vehicles are often universal control devices which, when the motor vehicle is manufactured at the end of the belt, are individually designed for the respective vehicle
  • Motor vehicle be programmed.
  • the time required for the programming of the control unit is therefore a critical factor for the production of the motor vehicle and should be as short as possible.
  • Memory area are transferred and not the entire software.
  • Object of the present invention is to improve the method of the type mentioned in that the time duration for the transmission of program codes to the memory of the control unit is significantly shortened.
  • the basic idea of the present invention is to set all memory cells of the memory to a standard value (default) before writing the program codes into the memory of the control unit; then the program codes to be transmitted by the programmer in the programmer to a lossless data com- submission, preferably according to the Huffman Code,
  • the default value when setting all the memory cells of the memory to a default value, the default value is selected such that it contains an invalid program code (so-called illegal opcode).
  • illegal opcode many microprocessors store their value in the microprocessor. Depending on the microprocessor or programming language used, it can also be a different value, which then in an initialization phase before transmitting the Progra ⁇ uncodes is transmitted from the programmer to the controller.
  • Fig. 1 is a block diagram of a control unit and a programming device
  • FIG. 2 is a flow chart of the process steps of the invention.
  • Fig. 3a shows an illustration of the individual steps for up to 3 g of data compression
  • Fig. 4 shows an illustration of method steps of the data compression by means of an auxiliary vector
  • Fig. 5 is an illustration of a decoding tree.
  • the electronic control unit 1 of Fig. 1 which is designated by ECU (Electronic Control Unit), has a program memory 2, which is designed as erasable and writable memory.
  • the control unit 1 is connected via an interface 3 to a programming device 4 connectable, which may be a PC, such as a laptop, for example.
  • program codes are stored, which are to be transmitted via the interface 3 to the control unit 1.
  • the program codes are usually available as binary or hex files.
  • the "programming" of the control unit 1 is effected in that the program codes are transmitted from the programming device 4 to the control unit 1 and stored there in the program memory 2.
  • control unit Previously, the programming or reprogramming of the control unit was characterized in that the entire program was written with the individual program codes in the program memory 2. Any previously occupied memory cells of the program memory 2 will be overwritten.
  • a first step S1 the programmer 4 sends an instruction via the interface 3 to the control unit 1 first to the so-called "boot charger" of the control unit 1, with which the program memory 2 is deleted.
  • this erase includes writing all the memory cells of the program memory 2 to invalid program code (illegal opcode).
  • This code can be pre-assigned as default value (default) in the control unit 1.
  • the program codes stored in the programming device 4 are subjected to a non-lossy compression method, ie coded or compressed.
  • the requirements for the compression method are minimal consumption of resources, in particular computing time, program memory and main memory.
  • Some existing memory modules can only be programmed completely. In other memory modules at least predetermined areas must be described without gaps. This results in the requirement that the decompressed data must be available without gaps, at least in certain areas. The easiest way is the decompressed data to handle, if they arrive completely over the entire memory area to be programmed. Since the existing working memory of the control unit 1 is usually much smaller than the program memory 2, it is not possible to decompress the entire data before programming. It is therefore necessary that the data to be transmitted arrive completely.
  • the Huffman coding which is known per se, has proven particularly suitable, in which, in contrast to many other coding methods, the data to be transmitted arrive without gaps.
  • this coding or compression a lossless compression and decompression of the data to be transmitted can be realized. In doing so, in principle often occurring data is encoded into short keywords and less common data is encoded into longer keywords.
  • the efficiency of the process depends on the distribution of the data to be transmitted. The more frequently certain data is available, the more frequently short keywords are used and thus a higher compression factor is achieved.
  • Sorting operations create a "tree" that can be used to create a "dictionary” for coding. From this tree, a corresponding tree can be created for decompression. This tree must either be transferred to the control unit 1 or can be permanently stored there. In this case, of course, the same dictionary must also be used for coding.
  • An adaptive variant in each case the coding tree is newly generated and transmitted, brings better results in the compression and requires more memory in the control unit 1, but less program memory, where the dictionary is deposited.
  • the adaptive or the non-adaptive variant may be more advantageous.
  • the structure of the decoding tree is transmitted in the adaptive variant in a non-compressed area at the beginning of the data stream. This is followed by the decoding tree followed by the compressed data.
  • the coding makes sense for data sizes that represent a multiple of one byte (8 bits).
  • the size of the decoding tree grows strongly with the length "L" of the words to be coded.
  • the length of Huffman coded characters may be longer for rare characters than the length of the uncoded character. Since not all characters occur in practice, especially in 16-bit coding, the decoding tree can become correspondingly smaller. Nevertheless, it becomes clear that smaller data areas are encoded better 8-bit wise.
  • the 16-bit encoding yielded a higher compression factor in experiments. However, this is effective only from a minimum amount of data to be transmitted, since the decoding tree must also be transmitted.
  • FIGS. 3a, 3d and 3f a corresponding tree is shown linear because it is easy to implement in this form. With the help of this tree now the coding and decoding tables can be generated.
  • the decoding tree required for decoding is built up by the tree top ( Figure 5). No characters are created for non-existing characters. This tree is again a linked list.
  • the codes to be decoded are analyzed from right to left according to the above coding table.
  • the codes are also transmitted in this direction. In the example above, 4 is transmitted as 0-1-1.
  • the roots in the tree are marked accordingly. For this purpose, one additional bit per entry is sufficient to distinguish a valid character from a pointer.
  • the entries N1 and N2 accordingly contain pointers or the decoded character, which is shown in Fig. 3dargesteilt.
  • the left path means there "0" the right "1". This assignment must be made identically to the coding. If the sequence 0-1-1 is received in the example of FIG. 3, the decoding (FIG. 5) is followed by the entries N1, N2 proceeding from the tree top (left-hand page) and the result obtained is "4".
  • the number of leaves in the decoding tree is less than or equal to the number of characters to be encoded. In the example shown, three leaves suffice for a decoding tree of four codes.
  • the entries N1, N2 contain either a time ger or index or the coded character. For the number of bites of the indices, the result is:
  • L is the length of the words to be coded (e.g., 8 or 16).
  • step S3 the program codes thus compressed in step S3 are transmitted from the programming device 4 via the interface 3 to the control unit 1, then decompressed correspondingly in step S4 and written into the program memory 2 in step S5.
  • a check of the transmitted program codes can be carried out, for example by means of a checksum check or a cyclic redundancy check (CRC) (see step S7). If desired, the result of this check can be reported back to the programming device 4 in a step S8.
  • CRC cyclic redundancy check
  • the program codes to be coded for control units of motor vehicles are codes for microprocessors in which, according to experience, certain codes (opcodes) occur much more frequently than others, so that the described compression method can have a very good effect.
  • opcodes codes for microprocessors in which, according to experience, certain codes (opcodes) occur much more frequently than others, so that the described compression method can have a very good effect.
  • opcodes Depending on the degree of filling of the program memory, a considerable saving can also be achieved by not transmitting program codes for unused areas.
  • the use of invalid program codes (illegal opcodes) for these areas provides additional operational safety in the event of failures or software failures, since microprocessors cause an interruption in the case of invalid program codes, which can be used to detect the error.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Stored Programmes (AREA)

Abstract

Zur Übertragung von Programmcodes an einen Programmspeicher eines Steuergerätes insbesondere für Kraftfahrzeuge werden alle Speicherzellen des Programmspeichers zunächst gelöscht und vorzugsweise mit einem ungültigen Programmcode (illegal Opcode) beschrieben. Gültige Programmcodes werden nach einem verlustfreien Datenkompressionsverfahren und insbesondere der Huffman-Codierung komprimiert, an das Steuergerät übertragen, dort entsprechend dekomprimiert und in den Programmspeicher des Steuergerätes eingeschrieben. Der Wert für ungültige Programmcodes ist als Standardwert (default) im Steuergerät eingespeichert oder wird maximal einmal vom Programmiergerät an das Steuergerät übertragen. Durch diese Maßnahmen wird die zu übertragende Datenmenge und damit die Zeit für die Übertragung der Programmcodes wesentlich reduziert.

Description

Verfahren zur Übertragung von Prograπuncodes an einen Speicher eines Steuergerätes, insbesondere für Kraftfahrzeuge
Beschreibung
Die Erfindung bezieht sich auf ein Verfahren zur Über- tragung von Programmcodes an einen Programmspeicher eines Steuergerätes gemäß dem Oberbegriff des Patentanspruches 1. Ein solches Verfahren ist aus der DE 10 2006 016 891 Al bekannt.
Moderne Kraftfahrzeuge enthalten ein oder mehrere elektronische Steuergeräte, die einen Programmspeicher enthalten, der im eingebauten Zustand des Steuergerätes programmiert werden kann, d.h. mit Programmcodes beschrieben werden kann. Der Programmspeicher ist im Regelfall ein sog. Flash-Speicher, der häufig auch in einen MikroController integriert ist.
Die üblichen Steuergeräte enthalten eine Schnittstelle, auch Diagnoseschnittstelle genannt, die für die Übertragung von Befehlen und Daten verwendet wird. Als Schnittstelle wird häufig ein "CAN" -Bus benutzt. Ein übliches Diagnoseprotokoll ist UDS nach ISO 14229. Diese sind nur beispielhaft genannt, da eine Vielzahl anderer Schnittstellen und Protokolle existiert. Im Steuergerät ist meist auch eine Diagnosesoftware enthalten, die über die Diagnoseschnittstelle Befehle zum Löschen und zum Programmieren des Programmspeichers zur Verfügung stellt. Diese Software wird häufig als "Bootloader" bezeichnet.
Zur Kommunikation mit dem Steuergerät wird ein Programmiergerät verwendet, das über das erforderliche Gegenstück zur Diagnoseschnittstelle im Steuergerät verfügt. Ein solches Programmiergerät wird häufig auch als Diagnosegerät oder Diagnosetester bezeichnet. In der Praxis ist dieses Programmiergerät heute oftmals ein Personal Computer, wie z.B. ein Laptop.
Bei der Programmierung von Steuergeräten werden sehr große Datenmengen an Programmcodes übertragen, was mit den heutigen Verfahren sehr zeitaufwendig ist. Steuergeräte von Kraftfahrzeugen sind häufig Universalsteuergeräte, die bei der Herstellung des Kraftfahr- zeuges am Bandende individuell für das jeweilige
Kraftfahrzeug programmiert werden. Der Zeitbedarf für das Programmieren des Steuergerätes ist daher für die Herstellung des Kraftfahrzeuges ein kritischer Faktor und soll möglichst kurz sein.
Auch während des Betriebes des Kraftfahrzeuges sind in der Praxis Änderungen (sog. Upgrades) der Software durchzuführen, was normalerweise in einer Werkstatt geschieht. Auch hier ist die Zeitdauer für die Neupro- grammierung des Steuergerätes möglichst kurz zu halten. Die eingangs genannte DE 10 2006 016 891 Al beschäf¬ tigt sich mit der nachträglichen Änderung der Software eines Steuergerätes und unterscheidet zwischen einer Seriensoftware und einer "Upload-Software" . Zur Ver- ringerung des Aufwandes für das Nachladen der Upload- Software wird dort vorgeschlagen, zwei getrennte Speicherbereiche vorzusehen, nämlich einen für die Seriensoftware und einen für die Upload-Software. Für eine Erweiterung der Funktionalität des Steuergerätes muß dann nur noch die Upload-Software in den getrennten
Speicherbereich übertragen werden und nicht die gesamte Software.
Für die Erstprogrammierung des Steuergerätes ergeben sich hierdurch keine Vorteile.
Aufgabe der vorliegenden Erfindung ist es, das Verfahren der eingangs genannten Art dahingehend zu verbessern, daß die Zeitdauer für die Übertragung von Pro- grammcodes an den Speicher des Steuergerätes wesentlich verkürzt wird.
Diese Aufgabe wird durch die im Patentanspruch 1 angegebenen Merkmale gelöst. Vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung sind den Unteransprüchen zu entnehmen.
Die Grundidee der vorliegenden Erfindung liegt darin, vor dem Einschreiben der Programmcodes in den Speicher des Steuergerätes alle Speicherzellen des Speichers auf einen Standardwert (default) zu setzen; sodann die von dem Programmiergerät zu übertragenden Programmcodes im Programmiergerät einem verlustfreien Datenkom- pressionsverfahren zu unterwerfen, vorzugsweise nach dem Huffman-Code,
danach die komprimierten Programmcodes an das Steuer- gerät zu übertragen,
anschließend die Programmcodes im Steuergerät zu de- komprimieren und
schließlich die komprimierten Programmcodes im Speicher des Steuergerätes abzuspeichern.
Durch das Setzen aller Speicherzellen des Speichers auf den Standardwert wird sichergestellt, daß kein fehlerhafter Programmcode im Speicher vorhanden ist. Durch die Übertragung der komprimierten Programmcodes wird die zu übertragende Datenmenge wesentliche reduziert und damit auch die Übertragungszeit wesentlich verkürzt. Durch die Verwendung eines verlustfreien Da- tenkompressionsverfahrens treten auch keine Datenverluste auf. Für Kompression und Dekompression ist bevorzugt die Huffman-Codierung zu verwenden, die einen hohen Komprimierungsfaktor erreicht.
Nach einer vorteilhaften Weiterbildung der Erfindung wird beim Setzen aller Speicherzellen des Speichers auf einen Standardwert der Standardwert so gewählt, daß er einen ungültigen Programmcode enthält (sog. illegal Opcode) . Bei vielen Mikroprozessoren ist dessen Wert im Mikroprozessor gespeichert. Je nach verwendetem Mikroprozessor oder verwendeter Programmiersprache kann es aber auch ein anderer Wert sein, der dann in einer Initialisierungsphase vor dem Übertragen der Prograπuncodes vom Programmiergerät an das Steuergerät übertragen wird.
Nach einer Variante der Erfindung ist es möglich, den gesamten Inhalt des Speichers des Steuergerätes vom
Programmiergerät an das Steuergerät zu übertragen, also auch den Inhalt nicht benutzter Speicherzellen. Bevorzugt ist allerdings, nur benötigte Programmcodes zu übertragen, da nicht benutzte Speicherzellen oder nicht benutzte Adressbereiche mit dem Standardwert vorbelegt sind. Hierdurch wird das zu übertragende Datenvolumen weiter reduziert.
Im folgenden wird die Erfindung im Zusammenhang mit einem Ausführungsbeispiel ausführlicher erläutert. Es zeigt:
Fig . 1 ein Prinzipschaltbild eines Steuergerätes und eines Programmiergerätes;
Fig . 2 ein Flußdiagramm der bei der Erfindung ablaufenden Verfahrensschritte,
Fig . 3a eine Darstellung der einzelnen Schritte für bis 3g die Datenkompression;
Fig . 4 eine Darstellung von Verfahrensschritten der Datenkompression mittels einen Hilfsvektors; und Fig. 5 eine Darstellung eines Decodierbaumes .
Das elektronische Steuergerät 1 der Fig. 1, das mit ECU (Electronic control unit) bezeichnet ist, hat einen Programmspeicher 2, der als lösch- und schreibbarer Speicher ausgebildet ist. Das Steuergerät 1 ist über eine Schnittstelle 3 mit einem Programmiergerät 4 verbindbar, das beispielsweise ein PC, wie z.B. ein Laptop sein kann. Im Programmiergerät 4 sind Programmcodes gespeichert, die über die Schnittstelle 3 an das Steuergerät 1 übertragen werden sollen. Die Programm- codes liegen im Regelfall als Binär- oder Hexdatei vor .
Die "Programmierung" des Steuergerätes 1 erfolgt dadurch, daß die Programmcodes aus dem Programmiergerät 4 an die Steuereinheit 1 übertragen und dort im Programmspeicher 2 abgespeichert werden.
Bisher erfolgte die Programmierung oder Umprogrammierung des Steuergerätes dadurch, daß das gesamte Pro- gramm mit den Einzelnen Programmcodes in den Programmspeicher 2 eingeschrieben wurde. Eventuell vorher belegte Speicherzellen des Programmspeichers 2 werden dabei überschrieben.
Das in Fig. 2 dargestellte Verfahren nach der Erfindung arbeitet wie folgt: In einem ersten Schritt Sl wird vom Programmiergerät 4 über die Schnittstelle 3 an die Steuereinheit 1 zunächst an den sog. "Bootloa- der" des Steuergerätes 1 ein Befehl gesendet, mit dem der Programmspeicher 2 gelöscht wird. Bevorzugt beinhaltet dieses Löschen das alle Speicherzellen des Programmspeichers 2 mit einem ungültigen Programmcode beschrieben werden (illegal Opcode) . Dieser Code kann als Standardwert (default) in der Steuereinheit 1 vor- belegt sein. Je nach verwendetem Mikroprozessor in der Steuereinheit 1 ist es aber auch möglich, diesen entsprechenden Code vom Programmiergerät 4 an das Steuergerät 1 zu übertragen. In einem zweiten Schritt S2 werden die im Programmiergerät 4 gespeicherten Programmcodes einem nicht verlustbehafteten Kompressionsverfahren unterzogen, also codiert bzw. komprimiert.
Die Anforderungen an das Kompressionsverfahren sind minimaler Verbrauch von Resourcen, insbesondere Rechenzeit, Programmspeicher und Arbeitsspeicher.
Manche existierende Speicherbausteine lassen sich nur lückenlos Programmieren. Bei anderen Speicherbausteinen müssen zumindest vorbestimmte Bereiche lückenlos beschrieben werden. Hieraus resultiert die Forderung, daß die dekomprimierten Daten zumindest bereichsweise lückenlos vorliegen müssen. Am einfachsten sind die dekomprimierten Daten zu Handhaben, wenn sie lückenlos über den gesamten zu programmierenden Speicherbereich eintreffen. Da der vorhandene Arbeitsspeicher des Steuergerätes 1 in der Regel sehr viel kleiner ist als der Programmspeicher 2, ist es nicht möglich die gesamten Daten vor dem Programmieren zu dekomprimieren. Es ist daher erforderlich, daß die zu übertragenden Daten lückenlos eintreffen.
Für die verlustfreie Komprimierung der zu übertragenden Programmcodes hat sich besonders die an sich bekannte Huffman-Codierung als geeignet erwiesen, bei der im Gegensatz zu vielen anderen Codierverfahren die zu übertragenden Daten lückenlos eintreffen. Mit dieser Codierung oder Kompression läßt sich eine verlustfreie Kompression und Dekompression der zu übertragenden Daten realisieren. Dabei werden im Prinzip häufig vorkommende Daten in kurze Schlüsselworte codiert und weniger häufig vorkommende Daten werden in längere Schlüsselworte codiert.
Die Effizienz des Verfahrens hängt von der Verteilung der zu übertragenden Daten ab. Je häufiger bestimmte Daten vorliegen, desto häufiger werden kurze Schlüsselworte verwendet und somit ein höherer Komprimierungsfaktor erzielt.
Über Sortiervorgänge wird ein "Baum" erzeugt, mit dessen Hilfe sich ein "Wörterbuch" für die Codierung erstellen läßt. Aus diesem Baum läßt sich ein entsprechender Baum für die Dekomprimierung erstellen. Dieser Baum muß entweder an die Steuereinheit 1 mitübertragen werden oder kann dort fest hinterlegt sein. In diesem Fall muß selbstverständlich auch zur Codierung dasselbe Wörterbuch verwendet werden.
Eine adaptive Variante, bei der jeweils der Codierbaum neu erzeugt und übertragen wird, bringt bessere Resultate bei der Kompression und benötigt mehr Arbeitsspeicher in der Steuereinheit 1, dafür weniger Programmspeicher, wo das Wörterbuch hinterlegt wird. Je nach Anwendungsfall kann die adaptive oder die nicht adaptive Variante vorteilhafter sein.
Die Struktur des Decodierbaumes wird bei der adaptiven Variante in einem nicht komprimierten Bereich am Be- ginn des Datenstromes übertragen. Sodann folgt der De- codierbaum und danach folgen die komprimierten Daten. Die Codierung erfolgt sinnvoll für Datengrößen, die ein vielfaches von einem Byte (8 Bit) darstellen. Die Größe des Decodierbaumes wächst stark mit der Länge "L" der zu codierenden Worte. Die Länge der Huffman- codierten Zeichen kann für seltene Zeichen größer sein, als die Länge des uncodierten Zeichens. Da insbesondere bei einer 16-Bit-Codierung in der Praxis nicht alle Zeichen vorkommen, kann der Decodierbaum entsprechend kleiner werden. Trotzdem wird deutlich, daß kleinere Datenbereiche besser 8-Bit weise codiert werden .
Die 16-Bit-Codierung ergab in Versuchen einen höheren Komprimierungsfaktor . Dies ist jedoch erst ab einer Mindestmenge an zu übertragenden Daten wirkungsvoll, da der Decodierbaum auch übertragen werden muß.
Bei der nicht adaptiven Variante muß entsprechend Speicherplatz für den Decodierbaum im nicht flüchtigen Programmspeicher zur Verfügung gestellt werden.
Nachfolgend wird die Codierung anhand eines Ausführungsbeispieles im Zusammenhang mit den Fig. 3 bis 5 erläutert .
Zunächst wird für alle vorkommenden Zeichen deren Häufigkeit ermittelt, was an folgendem Beispiel erläutert wird.
Im nächsten Schritt werden die Zeichen der Häufigkeit nach sortiert (Fig. 3a), was in absteigender oder aufsteigender Sortierreihenfolge erfolgen kann. In absteigender Reihenfolge ergibt sich aus obigem Beispiel :
Die Zeichen und die jeweils in "0", "1", "2" und "5" mit der Häufigkeit "0" können eliminiert werden.
Die Häufigkeiten der beiden Zeichen mit der niedrigsten Häufigkeit werden addiert und ergeben ein neues "Blatt" im Baum (Fig. 3b und Fig. 3c) . Dieses wird als zusätzliches Element in einem "array" entsprechender Strukturen angelegt und die Indizes bzw. Zeiger werden je nach Implementierung eingetragen. Dabei werden in einer beispielhaften Implementierung "Blätter" nicht wirklich sortiert, sondern in einem Hilfsvektor Zeiger bzw. Indizes der Blätter abgelegt (Fig. 4) . Sortiert werden lediglich diese, was den Aufwand beim Sortieren minimiert .
Bei der Erzeugung eines neuen Blattes wird dieses hinzugefügt und die beiden letzten Indizes entfernt und statt dessen der Index des neuen Blattes eingetragen (Fig. 3d und 3e) .
Dies wird so lange wiederholt, bis noch ein einziger letzter Eintrag übrig bleibt, der auf die Spitze des Baumes zeigt (Fig. 3f und 3g) . In den Fig. 3a, 3d und 3f ist ein entsprechender Baum linear dargestellt, weil er in dieser Form leicht zu implementieren ist. Mit Hilfe dieses Baumes können nun die Codier- und Decodiertabellen erzeugt werden.
Anhand des obigen Beispieles und der ansonsten selbsterklärenden Figur 3 ergibt sich dann folgende Codiertabelle:
Um beispielsweise den Code für die "3" zu ermitteln, durchläuft man 0-1-0, d.h. die Länge ist 3. Hieraus ergibt sich für die einzelnen Zeichen folgende Kompri- mierungsfaktor
Hier sind also 79 Bits nötig, um die Zeichen zu codieren. Bei einer 8-Bit-Codierung wären dagegen 352 Zeichen nötig. Somit ergibt sich ein Komprimierungsfaktor von ca. 0,22.
Der zum Decodieren erforderliche Decodierbaum wird von der Baumspitze aufgebaut (Fig. 5) . Für nicht vorhandene Zeichen werden keine Einträge erzeugt. Bei diesem Baum handelt es sich wiederum um eine verkette Liste. Die zu decodierende Codes werden von rechts nach links gemäß obiger Codiertabelle analysiert. In diese Richtung werden die Codes auch übertragen. Im obigen Beispiel wird also die 4 als 0-1-1 übertragen.
Um erkennen zu können, ob weiter decodiert werden muß oder ein gültiges Zeichen gefunden wurde, werden die Wurzeln im Baum entsprechend gekennzeichnet. Hierfür genügt ein zusätzliches Bit je Eintrag, um ein gültiges Zeichen von einem Zeiger zu unterscheiden. Die Einträge Nl und N2 enthalten dementsprechend Zeiger oder das decodierte Zeichen, was in Fig. 3dargesteilt ist. Der linke Pfad bedeutet dort jeweils "0" der rechte "1". Diese Zuordnung muß identisch zur Codierung getroffen werden. Wird im Beispiel der Fig. 3 die Sequenz 0-1-1 empfangen, folgt man bei der Decodierung (Fig. 5) den Einträgen Nl, N2 ausgehend von der Baumspitze (linkes Blatt) und erhält als Ergebnis die "4".
Die Zahl der Blätter im Decodierbaum ist kleiner oder gleich der Zahl der zu codierenden Zeichen. Im dargestellten Beispiel genügen drei Blätter für einen Decodierbaum von vier Codes. In der gewählten Implementierung enthalten die Einträge Nl, N2 entweder einen Zei- ger oder Index oder das codierte Zeichen. Für die Anzahl Bites der Indizes ergibt sich also:
B = Log (L) / Log (2) + 1 = 9 (für 8 Bit Codierung)
zu Runden auf die nächst größere ganze Zahl. Dabei ist L die Länge der zu codierenden Worte (z.B. 8 oder 16) .
Das zusätzliche Bit ist notwendig, um Indizes von gül- tigen Zeichen zu unterscheiden. Für jedes Blatt sind die Einträge Nl und N2 notwendig. Also ergibt sich eine minimale Länge der Decodiertabelle von 3*2*9=54 Bits.
Zusätzlich muß noch die Information über die Größe der Decodiertabelle sowie die Zahl der Bits B pro Eintrag an die Steuereinheit übertragen werden.
Zurückkommend zur Fig. 2 werden die so Huffman kompri- mierten Programmcodes im Schritt S3 vom Programmiergerät 4 über die Schnittstelle 3 an die Steuereinheit 1 übertragen, anschließend im Schritt S4 entsprechend dekomprimiert und im Schritt S5 in den Programmspeicher 2 eingeschrieben. Abschließend kann noch eine Überprüfung der übertragenen Programmcodes durchgeführt werden, beispielsweise durch eine Checksummen- prüfung oder eine zyklische Redundanzprüfung (CRC; cy- clic redundancy check) (vgl. Schritt S7) . Falls gewünscht, kann das Ergebnis dieser Überprüfung in einem Schritt S8 an das Programmiergerät 4 zurückgemeldet werden . Das beschriebene Kompressionsverfahren ist technisch einfach aber sehr wirkungsvoll. Für die Kompression sind im wesentlichen nur einfache Sortiervorgänge notwendig. Die Dekompression erfordert lediglich ein ein- faches Verfolgen von Einträgen im Decodierbaum. Die
Komprimierung ist um so besser je ungleichmäßiger die codierten Zeichen auftreten. Bei den für Steuergeräte von Kraftfahrzeugen zu codierenden Programmcodes handelt es sich um Codes für Mikroprozessoren, bei denen erfahrungsgemäß bestimmte Codes (Opcodes) deutlich häufiger vorkommen als andere, so daß das beschriebene Kompressionsverfahren sehr gut wirken kann. Je nach Füllgrad des Programmspeichers kann zusätzlich eine erhebliche Einsparung durch die Nicht-Übertragung von Programmcodes für nicht benutzte Bereiche erzielt werden. Durch die Verwendung von ungültigen Programmcodes (illegal Opcodes) für diese Bereiche erhält man eine zusätzliche Sicherheit im Betrieb bei Störungen oder Softwarefehlern, da Mikroprozessoren bei ungültigen Programmcodes eine Unterbrechung auslösen, was für die Erkennung des Fehlers verwendet werden kann.
Da in der Praxis der Programmspeicher des Steuergerätes nicht vollständig gefüllt ist und größere Lücken im Adreßbereich aufweist, ist es von Vorteil, auch diese Lücken mit dem Wert für "illegal Opcode" zu füllen.

Claims

Patentansprüche
1. Verfahren zur Übertragung von Programmcodes an einen Programmspeicher eines Steuergerätes, insbesondere eines Kraftfahrzeuges mit folgenden Schritten:
a) Anschließen einer Schnittstelle eines Steuergerätes an ein die Programmcodes enthaltendes Programmiergerät ; b) Setzen aller Speicherzellen des Programmspei- chers des Steuergerätes auf einen Standardwert ; c) Komprimieren des Programmcodes des Programmiergerätes nach einen verlustfreien Datenkompressionsverfahren; d) Übertragen des komprimierten Programmcodes an das Steuergerät; e) Dekomprimieren des empfangenen Programmcodes im Steuergerät; und f) Speichern des dekomprimierten Programmcodes im Programmspeicher des Steuergerätes.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß in alle unbenutzten Speicherzellen des Programmspeichers des Steuergerätes ein ungülti- ger Programmcode eingeschrieben wird.
3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß der in Schritt b) des Anspruches 1 genannte Standardwert ein ungültiger Programmcode ist.
4. Verfahren nach einem der Ansprüche 2 oder 3 , da- durch gekennzeichnet, daß der ungültige Programmcode vom Programmiergerät an das Steuergerät übertragen wird.
5. Verfahren nach einem der Ansprüche 1 bis 4, da- durch gekennzeichnet, daß vom Programmiergerät nur gültige Programmcodes sequentiell an das Steuergerät übertragen werden, während der Wert des ungültigen Programmcodes maximal einmal übertragen wird.
6. Verfahren nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß das Komprimieren und Dekomprimieren der Programmcodes nach der Huff- man-Codierung erfolgt.
EP09740650A 2008-10-23 2009-10-12 Verfahren zur übertragung von programmcodes an einen speicher eines steuergerätes, insbesondere für kraftfahrzeuge Ceased EP2340486A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
DE102008052955A DE102008052955B4 (de) 2008-10-23 2008-10-23 Verfahren zur Übertragung von Programmcodes an einen Speicher eines Steuergerätes, insbesondere für Kraftfahrzeuge
PCT/EP2009/007313 WO2010046043A1 (de) 2008-10-23 2009-10-12 Verfahren zur übertragung von programmcodes an einen speicher eines steuergerätes, insbesondere für kraftfahrzeuge

Publications (1)

Publication Number Publication Date
EP2340486A1 true EP2340486A1 (de) 2011-07-06

Family

ID=41401972

Family Applications (1)

Application Number Title Priority Date Filing Date
EP09740650A Ceased EP2340486A1 (de) 2008-10-23 2009-10-12 Verfahren zur übertragung von programmcodes an einen speicher eines steuergerätes, insbesondere für kraftfahrzeuge

Country Status (7)

Country Link
US (1) US8782328B2 (de)
EP (1) EP2340486A1 (de)
CN (1) CN102197375B (de)
BR (1) BRPI0920595B1 (de)
DE (1) DE102008052955B4 (de)
RU (1) RU2534927C2 (de)
WO (1) WO2010046043A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102010009263B4 (de) * 2010-02-25 2012-04-12 Knorr-Bremse Systeme für Nutzfahrzeuge GmbH Verfahren zur Datenübertragung zu einem elektronischen Steuergerät
DE102011100106A1 (de) 2011-04-30 2012-10-31 Daimler Ag System zur Diagnose einer Komponente in einem Fahrzeug
DE102011079399A1 (de) * 2011-07-19 2013-01-24 Bayerische Motoren Werke Aktiengesellschaft Steuervorrichtung für ein Kraftfahrzeug, Programmiervorrichtung und Programmiersystem
US9219499B2 (en) 2014-05-16 2015-12-22 Robert Bosch Gmbh Run time compression method for a vehicle communication bus
US9694766B2 (en) 2015-06-16 2017-07-04 Ford Global Technologies, Llc Compression algorithms for vehicle-bus-messaging of preview data
US11338816B2 (en) * 2019-02-02 2022-05-24 Ford Global Technologies, Llc Over-the-air flashing and reproduction of calibration data using data regression techniques

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4021782A (en) * 1974-01-07 1977-05-03 Hoerning John S Data compaction system and apparatus
US5937065A (en) * 1997-04-07 1999-08-10 Eaton Corporation Keyless motor vehicle entry and ignition system
US6023233A (en) * 1998-03-20 2000-02-08 Craven; Peter G. Data rate control for variable rate compression systems
US6393149B2 (en) * 1998-09-17 2002-05-21 Navigation Technologies Corp. Method and system for compressing data and a geographic database formed therewith and methods for use thereof in a navigation application program
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
US20020034971A1 (en) * 1999-02-08 2002-03-21 Chienchung Chang Data allocation for multiple applications on a microprocessor or dsp
FR2791507B1 (fr) * 1999-03-25 2001-06-29 Peugeot Citroen Automobiles Sa Procede et systeme de telechargement d'un fichier dans un calculateur de vehicule automobile
DE10012272B4 (de) * 2000-03-14 2004-04-08 Daimlerchrysler Ag Verfahren zur Abspeicherung von Daten in rechnergestützten Geräten von Verkehrsmitteln
DE10037397A1 (de) 2000-08-01 2002-02-14 Daimler Chrysler Ag Verfahren zum Laden von Software
FR2837946B1 (fr) * 2002-03-26 2006-12-29 Peugeot Citroen Automobiles Sa Systeme de telechargement d'au moins un fichier dans au moins un calculateur de vehicule automobile
US7248632B1 (en) * 2002-06-28 2007-07-24 Len Gollobin Video data storage and transmission system and method
DE10234063B4 (de) * 2002-07-26 2004-09-30 Audi Ag Verfahren zum variantenspezifischen Programmieren eines Programm- und Datenspeichers eines Steuergeräts, insbesondere eines Steuergeräts eines Kraftfahrzeugs, sowie Vorrichtung zur Durchführung des Verfahrens
US6670897B1 (en) * 2002-10-03 2003-12-30 Motorola, Inc. Compression/decompression techniques based on tokens and Huffman coding
DE102004005676A1 (de) * 2004-02-05 2005-08-25 Giesecke & Devrient Gmbh Datenträger mit plattformunabhängigem Anwendungs-Programmcode
DE102005013285B4 (de) * 2005-03-22 2009-09-03 Continental Automotive Gmbh Verfahren zum Konfigurieren eines Steuergeräts und Steuergerät
DE102005034168A1 (de) 2005-07-21 2007-02-01 Siemens Ag Verfahren zum Bedienen und Beobachten eines Steuergeräts, hiermit korrespondierendes Bedien-/Beobachtungsgerät, Steuergerät sowie Maschine mit einem solchen Steuergerät und Verwendungen des Verfahrens sowie Datenspeichermedien
US20070022243A1 (en) * 2005-07-22 2007-01-25 John Rudelic Method and apparatus capable of disabling authenticated operations and guaranteed secure boot in a wireless platform
DE102005045149A1 (de) * 2005-09-22 2007-04-05 Giesecke & Devrient Gmbh Verfahren zur Initialisierung und/oder Personalisierung eines tragbaren Datenträgers
DE102006013762A1 (de) * 2006-03-24 2007-09-27 Robert Bosch Gmbh Verfahren zum Betreiben einer Speichereinrichtung
DE102006016891A1 (de) 2006-04-11 2007-10-25 Robert Bosch Gmbh Erweiterung der Funktionalität einer Serien-Software in einem Steuergerät
RU62721U1 (ru) * 2006-07-31 2007-04-27 Михаил Викторович Ерещенко Автомобильный компьютер

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
None *
See also references of WO2010046043A1 *

Also Published As

Publication number Publication date
CN102197375B (zh) 2014-02-19
DE102008052955A1 (de) 2010-05-06
DE102008052955B4 (de) 2010-06-24
CN102197375A (zh) 2011-09-21
US20110264844A1 (en) 2011-10-27
US8782328B2 (en) 2014-07-15
RU2011120350A (ru) 2012-11-27
BRPI0920595B1 (pt) 2019-11-26
WO2010046043A1 (de) 2010-04-29
RU2534927C2 (ru) 2014-12-10
BRPI0920595A2 (pt) 2015-12-29

Similar Documents

Publication Publication Date Title
DE3606869C2 (de) Vorrichtung zur Datenkompression
DE69528152T2 (de) Datenkompressionsvorrichtung, Datenexpansionsvorrichtung und System zur Datenkompression und Expansion
DE3887627T2 (de) Effizienzabhängige Rücksetzung eines Datenkomprimierungswörterbuches.
DE60033184T2 (de) Verfahren und Vorrichtung zur Datenkomprimierung von Netzwerkdatenpaketen unter Verwendung von paketweisen Hash Tabellen
DE102008052955B4 (de) Verfahren zur Übertragung von Programmcodes an einen Speicher eines Steuergerätes, insbesondere für Kraftfahrzeuge
DE2264090C3 (de) Datenverdichtung
DE69323020T2 (de) Dekodierer für veränderliche Längenkodes
DE3850035T2 (de) Datenkomprimierungssystem mit Expandierungsschutz.
DE2801988A1 (de) Arithmetische codierung von symbolfolgen
DE2614916A1 (de) Konverter zur codeumwandlung
DE69524999T2 (de) Verfahren zum Komprimieren und Dekomprimieren von Dateien
EP3885957B1 (de) Vorrichtung zur speicherung von daten in einem nichtflüchtigen speicher
EP3424200B1 (de) Kennungscodierungseinrichtung und kennungsdecodierungseinrichtung zur datenverteilung in netzwerken sowie derartige einrichtungen aufweisende netzwerkelemente
EP1286471B1 (de) Verfahren zur Kompression von Daten
DE69937761T2 (de) Arithmetische Kodierung/Dekodierung eines digitalen Informationssignals
EP1350252B1 (de) Verfahren zum einspeichern einer datenmenge in einen zielspeicherbereich und speichersystem
DE10228128B4 (de) Verfahren zur Speicherung von Daten, Verfahren zum Lesen von Daten, Vorrichtung zur Komprimierung von Daten und Vorrichtung zur Dekomprimierung von Daten
DE102010009263B4 (de) Verfahren zur Datenübertragung zu einem elektronischen Steuergerät
EP2646670B1 (de) Verfahren zum reversiblen, manipulationssicheren codieren eines motorsteuergeräts für ein kraftfahrzeug und motorsteuergerät
DE69028601T2 (de) Datenkomprimierungssystem
EP0715313B1 (de) Verfahren zur Programmierung eines elektrisch löschbaren, nichtflüchtigen Speichers in einem elektronischen Rechengerät sowie Steuergerät zur Verwendung bei dem Verfahren
DE19721786A1 (de) Verfahren zum Betreiben eines Datenverarbeitungsgerätes, insbesondere Automatisierungsgerätes
DE2144113C3 (de) Verfahren zur Codeumsetzung und Assozjathr-Speichereinrlchtung zur Durchführung dieses Verfahrens
EP1293938A2 (de) Binärzähler mit permutierten Speicherung
DE10340010B4 (de) Verfahren und Vorrichtung zum sicheren Speichern von Daten

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

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO SE SI SK SM TR

AX Request for extension of the european patent

Extension state: AL BA RS

DAX Request for extension of the european patent (deleted)
17Q First examination report despatched

Effective date: 20120227

APBK Appeal reference recorded

Free format text: ORIGINAL CODE: EPIDOSNREFNE

APBN Date of receipt of notice of appeal recorded

Free format text: ORIGINAL CODE: EPIDOSNNOA2E

APBR Date of receipt of statement of grounds of appeal recorded

Free format text: ORIGINAL CODE: EPIDOSNNOA3E

APAF Appeal reference modified

Free format text: ORIGINAL CODE: EPIDOSCREFNE

REG Reference to a national code

Ref country code: DE

Ref legal event code: R003

APBT Appeal procedure closed

Free format text: ORIGINAL CODE: EPIDOSNNOA9E

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

Free format text: STATUS: THE APPLICATION HAS BEEN REFUSED

18R Application refused

Effective date: 20190122