FLASH
FLASH
Wir kommen jetzt zu den ODX-Containerelementen, die für besondere Aufgaben vorgesehen sind und beginnen mit dem Containerelement Flash für die Flash-Programmierung.
Die eigentliche Programmierung wird natürlich mit Diagnosediensten wie beispielsweise TransferData durchgeführt, die innerhalb der Diag-Layer beschrieben sind. Die Aufgabe des Flash-Containers besteht darin, die zu programmierenden Daten und ihre Abbildung im Steuergerätespeicher zu beschreiben. Ein kleines Beispiel, siehe Abbildung: Es gibt ein Tachometersteuergerät in einer USA- und einer Europaausführung. Die Steuergerätesoftware (Applikation) ist in beiden Fällen dieselbe. Der Datensatz dagegen unterscheidet sich. Es gibt eine Variante für Europa, bei der die Verarbeitung und Anzeige in km/h erfolgt und eine Variante für die USA, in welcher die Anzeige der Geschwindigkeit mit mph vorgeschrieben ist. Zusätzlich wird für die Programmierung noch ein Flash-Lader benötigt. Dies ist ein kleines Treiber-Programm, das den Programmieralgorithmus für den Flash-Speicher enthält. Typischerweise werden solche Treiber-Programme nicht permanent im Steuergerätespeicher gehalten, sondern werden bei Bedarf, nämlich beim Flashprogrammiervorgang vor dem eigentlichen Programmierdatensatz heruntergeladen.
Programmierdatensätze für ein Tachometer-Steuergerät |
Dieses Beispiel ist in der obigen Abbildung dargestellt. Gleichzeitig sind hier auch die entsprechenden ODX-Bezeichnungen angegeben. Die beiden Varianten für USA und für Europa werden innerhalb von sogenannten Sessions angelegt. Die eigentlichen Datensätze und ihre Beschreibung erfolgt über sogenannte Data-Blocks. Die Sessions verweisen auf die entsprechenden Data-Blocks. Sie sehen hier zum Beispiel die Session für die USA und die Session für Europa verweisen beide auf dieselbe Applikation, denselben Flash-Treiber aber auf zwei unterschiedliche Datensätze.
Nachfolgend werden die wichtigsten Elemente des FLASH-Containers aufgelistet:
- DATABLOCK beschreibt die Struktur des zu programmierenden Adressbereiches, er besitzt immer ein SEGMENT
- DATABLOCK beschreibt die Struktur des zu programmierenden Adressbereiches, er besitzt immer ein SEGMENT
- Zusammenhängende Programmierdaten im INTEL-HEX, MOTOROLA-S oder BINARY Format (FLASHDATAS) werden in Datenblöcken auf SEGMENTS abgebildet und durch SOURCE-START-ADDRESS und SOURCE-END-ADDRESS abgegrenzt
- Zusammenhängende Programmierdaten im INTEL-HEX, MOTOROLA-S oder BINARY Format (FLASHDATAS) werden in Datenblöcken auf SEGMENTS abgebildet und durch SOURCE-START-ADDRESS und SOURCE-END-ADDRESS abgegrenzt
- Der Zugriffsschutz (Seed & Key) erfolgt meist über SINGLE-ECU-JOBS welche auf eine externe *.JAR Datei verweisen
- Der Zugriffsschutz (Seed & Key) erfolgt meist über SINGLE-ECU-JOBS welche auf eine externe *.JAR Datei verweisen
- In den SECURITY Objekten sind Prüfsummen und Signaturen abgelegt, welche einer SESSION oder einem DATABLOCK zugewiesen werden
- In den SECURITY Objekten sind Prüfsummen und Signaturen abgelegt, welche einer SESSION oder einem DATABLOCK zugewiesen werden
- PHYS-MEM beschreibt die reale Speicherstruktur eines Steuergeräts, damit das Laufzeitsystem die Gültigkeit der Flash-Daten prüfen kann
- PHYS-MEM beschreibt die reale Speicherstruktur eines Steuergeräts, damit das Laufzeitsystem die Gültigkeit der Flash-Daten prüfen kann
- Die Programmierung erfolgt durch eine Aneinanderreihung verschiedener Diagnosedienste innerhalb eines SINGLE-ECU-JOBs (Flash-Job)
- Die Programmierung erfolgt durch eine Aneinanderreihung verschiedener Diagnosedienste innerhalb eines SINGLE-ECU-JOBs (Flash-Job)
- Der ECU-MEM-CONNECTOR stellt eine Verbindung zwischen dem Flash-Job im DIAG-LAYER-CONTAINER und einer SESSION im FLASH-Objekt her
Steuergeräteprogrammierung – Datencontainer |
In ODX setzt sich ein Data-Block aus Segmenten und Flash-Data Elementen zusammen. Ein Flash-Data Element enthält die zu programmierenden Daten in einem Objektcode-Format. Der Segment-Abschnitt bildet diese Daten auf den Speicherbereich des Steuergerätes ab. Das heißt, dort sind Anfangs- und Endadresse der entsprechenden Adressbereiche definiert. Der Zugriffschutz für die Flash-Programmierung wird über ein Security Element realisiert. Dort wird beschrieben welche Art von Zugriffschutz also zum Beispiel welches Seed-And-Key-Verfahren durchgeführt wird. Dieses Security-Element ist mit einer Session verbunden. Der Physical-Memory Block beschreibt die reale Speicherstruktur eines Steuergerätes. Auf diese Weise kann das Laufzeitsystem während der Programmierung überprüfen, ob der Programmierdatensatz und die reale Speicherstruktur des Steuergerätes zusammen passen. Das heißt, unter Segment sind die gewünschten Speicherbereiche aus Sicht des Programmierdatensatzes spezifiziert und in Physical-Memory sind die tatsächlich vorhandenen Speicherbereiche aus Sicht des Steuergerätes abgelegt. Bei der Programmierung vergleicht das Laufzeitsystem die Beiden miteinander. Der eigentliche Programmiervorgang wird typischerweise durch einen so genannten Flash-Job, das ist ein Single-ECU-Job, siehe Diag-Layer-Container, beschrieben. Dies ist ein Java-Programm, das die einzelnen für die Programmierung notwendigen Diagnosedienste ausführt. Die Verbindung zwischen dem Flash-Daten Container und diesen Single-ECU-Jobs erfolgt über das den ECU-Memory-Connector.
Steuergeräteprogrammierung – FLASH (Schema) |
Siehe auch
Diagnoselayer und Diagnosedienste