DE102008052955B4 - 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 Download PDF

Info

Publication number
DE102008052955B4
DE102008052955B4 DE102008052955A DE102008052955A DE102008052955B4 DE 102008052955 B4 DE102008052955 B4 DE 102008052955B4 DE 102008052955 A DE102008052955 A DE 102008052955A DE 102008052955 A DE102008052955 A DE 102008052955A DE 102008052955 B4 DE102008052955 B4 DE 102008052955B4
Authority
DE
Germany
Prior art keywords
control unit
program
memory
program codes
programmer
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.)
Active
Application number
DE102008052955A
Other languages
English (en)
Other versions
DE102008052955A1 (de
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
Priority to DE102008052955A priority Critical patent/DE102008052955B4/de
Application filed by Knorr Bremse Systeme fuer Nutzfahrzeuge GmbH, Knorr Bremse Systeme fuer Schienenfahrzeuge GmbH filed Critical Knorr Bremse Systeme fuer Nutzfahrzeuge GmbH
Priority to PCT/EP2009/007313 priority patent/WO2010046043A1/de
Priority to BRPI0920595 priority patent/BRPI0920595B1/pt
Priority to US12/998,451 priority patent/US8782328B2/en
Priority to EP09740650A priority patent/EP2340486A1/de
Priority to RU2011120350/08A priority patent/RU2534927C2/ru
Priority to CN200980142122.1A priority patent/CN102197375B/zh
Publication of DE102008052955A1 publication Critical patent/DE102008052955A1/de
Application granted granted Critical
Publication of DE102008052955B4 publication Critical patent/DE102008052955B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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; CALCULATING OR 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

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

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 Programmspeichers des Steuergerätes auf einen Standardwert;
c) Einschreiben eines ungültigen Programmcodes in alle unbenutzten Speicherzellen des Programmspeichers des Steuergerätes;
d) Komprimieren des Programmcodes des Programmiergerätes nach einen verlustfreien Datenkompressionsverfahren;
e) Sequentielles Übertragen nur von gültigen komprimierten Programmcodes vom Programmiergerät an das Steuergerät, während der Wert des ungültigen Programmcodes maximal einmal vom Programmiergerät an das Steuergerät übertragen wird;
f) Dekomprimieren des empfangenen Programmcodes im Steuergerät; und
g) Speichern des dekomprimierten Programmcodes im Programmspeicher des Steuergerätes.

Description

  • Die Erfindung bezieht sich auf ein Verfahren zur Übertragung von Programmcodes an einem Programmspeicher eines Steuergerätes.
  • Aus der DE 102 34 063 A1 ist ein Verfahren zur Übertragung von Programmcodes an einen Programmspeicher eines Steuergerätes für Kraftfahrzeuge bekannt, bei dem eine Schnittstelle eines Steuergerätes drahtgebunden oder drahtlos an ein die Programmcodes enthaltendes Programmiergerät angeschlossen wird. Die zu übertragenden Programmcodes werden im Programmiergerät einem verlustfreien Datenkompressionsverfahren unterworfen, anschließend an das Steuergerät übertragen und dort dekomprimiert und im Programmspeicher gespeichert. Speziell geht es in dieser Schrift darum, variantenübergreifende Programmteile als Basisprogramm im Speicher abzulegen und variantenspezifische Programm- und Datenänderungsinformationen separat zu übertragen, um die Zeit für die Programmierung eines variantenspezifischen Steuergerätes zu verringern.
  • Die DE 10 2005 013 285 A1 beschreibt ein Verfahren zum Konfigurieren eines Steuergerätes, das einen Arbeitsspeicher und einen Variantenspeicher aufweist. Vor der Übertragung von Daten an das Steuergerät wird der Arbeitsspeicher gelöscht, wobei dies auch ein Löschen einzelner Speichersektoren sein kann.
  • Das Übertragen komprimierter Programmcodes und anschließende Dekomprimierung vor dem Abspeichern ist auch aus der DE 10 2004 005 676 A1 , DE 100 12 272 B4 , DE 10 2005 045 149 A1 , DE 600 00 252 T2 , DE 100 37 397 A1 und DE 10 2005 034 168 A1 bekannt.
  • Ein Kompressionsverfahren, das unter dem Namen Huffman bekannt ist, ist in D. A. Huffman: ”A Method for the Construction of Minimum-Redundancy Codes”. In: Proceedings of the I. R. E., September 1952, PP 1098–1102 beschrieben.
  • 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 Programmspei chers 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 Universal-Steuergeräte, die bei der Herstellung des Kraftfahrzeuges 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 Neuprogrammierung des Steuergerätes möglichst kurz zu halten.
  • Die DE 10 2006 016 891 A1 beschäftigt sich mit der nachträglichen Änderung der Software eines Steuergerätes und unterscheidet zwischen einer Seriensoftware und einer ”Upload-Software”. Zur Verringerung des Auf wandes 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 aus der DE 102 34 063 A1 genannten Art dahingehend zu verbessern, daß die Zeitdauer für die Übertragung von Programmcodes an den Speicher des Steuergerätes wesentlich verkürzt und sichergestellt wird, daß kein fehlerhafter Programmcode im Speicher vorhanden ist.
  • Diese Aufgabe wird durch die im Patentanspruch 1 angegebenen Merkmale gelöst. Vorteilhafte Ausgestaltungen und Weiterbildungen der Erfindung sind den Unteransprüchen zu entnehmen.
  • Durch das Setzen aller unbenutzten Speicherzellen des Speichers auf einen ungültigen Programmcode 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 Datenkompressionsverfahrens treten auch keine Datenverluste auf. Für Kompression und Dekompression ist bevorzugt die Huffman- Codierung zu verwenden, die einen hohen Komprimierungsfaktor erreicht.
  • Beim Setzen aller Speicherzellen des Speichers auf einen Standardwert wird 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 Programmcodes vom Programmiergerät an das Steuergerät übertragen wird.
  • Weiter werden nur benötigte Programmcodes sequentiell übertragen, während der Wert des ungültigen Programmcodes maximal einmal vom Programmiergerät an das Steuergerät übertragen wird, wodurch das zu übertragende Datenvolumen reduziert wird.
  • Im folgenden wird die Erfindung im Zusammenhang mit einem Ausführungsbeispiel ausführlicher erläutert. Es zeigt:
  • 1 ein Prinzipschaltbild eines Steuergerätes und eines Programmiergerätes;
  • 2 ein Flußdiagramm der bei der Erfindung ablaufenden Verfahrensschritte.
  • 3a eine Darstellung der einzelnen Schritte für bis 3g die Datenkompression;
  • 4 eine Darstellung von Verfahrensschritten der Datenkompression mittels einen Hilfsvektors; und
  • 5 eine Darstellung eines Decodierbaumes.
  • Das elektronische Steuergerät 1 der 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 Programmcodes 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 Programm mit den Einzelnen Programmcodes in den Programmspeicher 2 eingeschrieben wurde. Eventuell vorher belegte Speicherzellen des Programmspeichers 2 werden dabei überschrieben.
  • Das in 2 dargestellte Verfahren nach der Erfindung arbeitet wie folgt: In einem ersten Schritt S1 wird vom Programmiergerät 4 über die Schnittstelle 3 an die Steuereinheit 1 zunächst an den sog. ”Bootloader” 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 vorbelegt 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 Beginn des Datenstromes übertragen. Sodann folgt der Decodierbaum 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 Huffmancodierten 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 3 bis 5 erläutert.
  • Zunächst wird für alle vorkommenden Zeichen deren Häufigkeit ermittelt, was an folgendem Beispiel erläutert wird.
    Häufigkeit 0 0 0 5 8 0 9 22
    Zeichen 0 1 2 3 4 5 6 7
  • Im nächsten Schritt werden die Zeichen der Häufigkeit nach sortiert (3a), was in absteigender oder aufsteigender Sortierreihenfolge erfolgen kann. In absteigender Reihenfolge ergibt sich aus obigem Beispiel.
    Häufigkeit 22 9 8 5 0 0 0 0
    Zeichen 7 6 4 3 0 1 2 5
  • 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 (3b und 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 (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 (3d und 3e).
  • Dies wird so lange wiederholt, bis noch ein einziger letzter Eintrag übrig bleibt, der auf die Spitze des Baumes zeigt (3f und 3g).
  • In den 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 3 ergibt sich dann folgende Codiertabelle:
    Zeichen Code Länge
    0 -
    1 -
    2 -
    3 0-1-0 3
    4 1-1-0 3
    5 -
    6 0-0 2
    7 1 1
  • 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 Komprimierungsfaktor
    Zeichen Länge Anzahl Bits
    3 3 5 15
    4 3 8 24
    6 2 9 18
    7 1 22 22
    79 gesamt
  • 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 (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 N1 und N2 enthalten dementsprechend Zeiger oder das decodierte Zeichen, was in 3 dargestellt ist. Der linke Pfad bedeutet dort jeweils ”0” der rechte ”1”. Diese Zuordnung muß identisch zur Codierung getroffen werden. Wird im Beispiel der 3 die Sequenz 0-1-1 empfangen, folgt man bei der Decodierung (5) den Einträgen N1, 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 N1, 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ültigen Zeichen zu unterscheiden. Für jedes Blatt sind die Einträge N1 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 2 werden die so Huffman komprimierten 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 Checksummenprüfung oder eine zyklische Redundanzprüfung (CRC; cyclic 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 einfaches 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 (3)

  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 Programmspeichers des Steuergerätes auf einen Standardwert; c) Einschreiben eines ungültigen Programmcodes in alle unbenutzten Speicherzellen des Programmspeichers des Steuergerätes; d) Komprimieren des Programmcodes des Programmiergerätes nach einen verlustfreien Datenkompressionsverfahren; e) Sequentielles Übertragen nur von gültigen komprimierten Programmcodes vom Programmiergerät an das Steuergerät, während der Wert des ungültigen Programmcodes maximal einmal vom Programmiergerät an das Steuergerät übertragen wird; f) Dekomprimieren des empfangenen Programmcodes im Steuergerät; und g) Speichern des dekomprimierten Programmcodes im Programmspeicher des Steuergerätes.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der in Schritt b) des Anspruches 1 genannte Standardwert ein ungültiger Programmcode ist.
  3. Verfahren nach einem der Ansprüche 1 oder 2, dadurch gekennzeichnet, daß das Komprimieren und Dekomprimieren der Programmcodes nach der Huffman-Codierung erfolgt.
DE102008052955A 2008-10-23 2008-10-23 Verfahren zur Übertragung von Programmcodes an einen Speicher eines Steuergerätes, insbesondere für Kraftfahrzeuge Active DE102008052955B4 (de)

Priority Applications (7)

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
BRPI0920595 BRPI0920595B1 (pt) 2008-10-23 2009-10-12 processo para a transferência de códigos de programa para a memória de um aparelho de comando, especialmente para veículos automotores
US12/998,451 US8782328B2 (en) 2008-10-23 2009-10-12 Method for transmitting program codes to a memory of a control device, particularly for motor vehicles
EP09740650A EP2340486A1 (de) 2008-10-23 2009-10-12 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
RU2011120350/08A RU2534927C2 (ru) 2008-10-23 2009-10-12 Способ передачи программных кодов в память прибора управления, в частности, автомобилей
CN200980142122.1A CN102197375B (zh) 2008-10-23 2009-10-12 用于将程序编码传输给特别是机动车的控制装置的存储器的方法

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
DE102008052955A1 DE102008052955A1 (de) 2010-05-06
DE102008052955B4 true DE102008052955B4 (de) 2010-06-24

Family

ID=41401972

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102008052955A Active DE102008052955B4 (de) 2008-10-23 2008-10-23 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

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10037397A1 (de) * 2000-08-01 2002-02-14 Daimler Chrysler Ag Verfahren zum Laden von Software
DE60000252T2 (de) * 1999-03-25 2002-12-12 Peugeot Citroen Automobiles Sa Verfahren und System zur Datenfernübertragung zum Bordrechner eines Kraftfahrzeuges
DE10234063A1 (de) * 2002-07-26 2004-02-19 Audi Ag Verfahren zum variantenspezifischen Programmieren eines Programm- und Datenspeichers eines Steuergeräts, insbesondere eines Steuergeräts eines Kraftfahrzeugs
DE10012272B4 (de) * 2000-03-14 2004-04-08 Daimlerchrysler Ag Verfahren zur Abspeicherung von Daten in rechnergestützten Geräten von Verkehrsmitteln
DE102004005676A1 (de) * 2004-02-05 2005-08-25 Giesecke & Devrient Gmbh Datenträger mit plattformunabhängigem Anwendungs-Programmcode
DE102005013285A1 (de) * 2005-03-22 2006-10-05 Siemens Ag 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
DE102005045149A1 (de) * 2005-09-22 2007-04-05 Giesecke & Devrient Gmbh Verfahren zur Initialisierung und/oder Personalisierung eines tragbaren Datenträgers

Family Cites Families (13)

* 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
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
US6670897B1 (en) * 2002-10-03 2003-12-30 Motorola, Inc. Compression/decompression techniques based on tokens and Huffman coding
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
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 Михаил Викторович Ерещенко Автомобильный компьютер

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE60000252T2 (de) * 1999-03-25 2002-12-12 Peugeot Citroen Automobiles Sa Verfahren und System zur Datenfernübertragung zum Bordrechner eines Kraftfahrzeuges
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
DE10234063A1 (de) * 2002-07-26 2004-02-19 Audi Ag Verfahren zum variantenspezifischen Programmieren eines Programm- und Datenspeichers eines Steuergeräts, insbesondere eines Steuergeräts eines Kraftfahrzeugs
DE102004005676A1 (de) * 2004-02-05 2005-08-25 Giesecke & Devrient Gmbh Datenträger mit plattformunabhängigem Anwendungs-Programmcode
DE102005013285A1 (de) * 2005-03-22 2006-10-05 Siemens Ag 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
DE102005045149A1 (de) * 2005-09-22 2007-04-05 Giesecke & Devrient Gmbh Verfahren zur Initialisierung und/oder Personalisierung eines tragbaren Datenträgers

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
D.A. Huffman: "A Method for the Construction of Minimum-Redundancy Codes". In: Proceedings of the I.R.E., September 1952, pp 1098- 1102 *

Also Published As

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

Similar Documents

Publication Publication Date Title
DE3606869C2 (de) Vorrichtung zur Datenkompression
DE102008052955B4 (de) Verfahren zur Übertragung von Programmcodes an einen Speicher eines Steuergerätes, insbesondere für Kraftfahrzeuge
DE2139731C2 (de) Anordnung zur Code-Umsetzung
DE2264090C3 (de) Datenverdichtung
DE2801988A1 (de) Arithmetische codierung von symbolfolgen
DE102009020807A1 (de) Verfahren zur effizienten Komprimierung für Messdaten
DE112018001315T5 (de) Steuervorrichtung, programmaktualisierungssystem und programmaktualisierungsverfahren
DE60110493T2 (de) Entropie Kodierer/Dekodierer zur schnellen Datenkompression und -dekompression
EP1286471B1 (de) Verfahren zur Kompression von Daten
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
DE19907728A1 (de) Vorrichtung und Verfahren zum Erzeugen eines Datenstroms und Vorrichtung und Verfahren zum Lesen eines Datenstroms
EP3608778A1 (de) Verfahren zum booten eines datenverarbeitungssystems
EP0427884B1 (de) Verfahren und Anordnung zum Komprimieren und Dekomprimieren von Daten
DE102020108101A1 (de) Vorrichtung zur Speicherung von Daten in einem nichtflüchtigen Speicher
DE2144113C3 (de) Verfahren zur Codeumsetzung und Assozjathr-Speichereinrlchtung zur Durchführung dieses Verfahrens
DE102010009263B4 (de) Verfahren zur Datenübertragung zu einem elektronischen Steuergerät
DE19721786A1 (de) Verfahren zum Betreiben eines Datenverarbeitungsgerätes, insbesondere Automatisierungsgerätes
DE4432436C2 (de) Datenkompressionsverfahren und Vorrichtung zum Komprimieren von Daten
WO1986001660A1 (en) Data compression and expansion system for the transfer or storage of data
EP1293938A2 (de) Binärzähler mit permutierten Speicherung
DE60003418T2 (de) Vorrichtung zur kompression und dekompression von bitketten
EP1153481A1 (de) Verfahren und vorrichtung zum erzeugen eines datenstroms aus codeworten variabler länge und verfahren und vorrichtung zum lesen eines datenstroms aus codeworten variabler länge
DE10340010B4 (de) Verfahren und Vorrichtung zum sicheren Speichern von Daten
WO2000069179A1 (de) Verfahren und vorrichtung zur komprimierung und dekomprimierung von daten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition