UDS Firmware Download (UDSonCAN)

UDS ist ein Kommunikationsprotokoll zur Diagnose von ECUs im automobilen Umfeld, welches in ISO 14229 standardisiert ist. UDS ist auf verschiedenen Kommunikationsmedien nutzbar, aber nachfolgend soll nur UDSonCAN betrachtet werden. UDSonCAN setzt auf ISO-TP auf. ISO-TP ist ein internationaler Standard (ISO 15765-2) zur Übertragung von Daten über CAN. Das Protokoll umfasst dabei die OSI-Schichten 3 und 4. Mit ISO-TP können dabei Datenpakete von bis zu 4095 Bytes Länge segmentiert übertragen werden.

UDSonCAN ist selten das einzige CAN-Protokoll in einem Gerät, sondern tritt oft als Ergänzung zu proprietären Protokollen, J1939 oder CANopen auf. UDSonCAN definiert keine CAN-Identifier, sondern diese müssen jeweils von der Applikation bestimmt werden. In diversen Anwendungsfallen werden jedoch bestimmte CAN-IDs häufig für UDS verwendet. Bei J1939 sind auch 2 PGNs für die Datenübertragung per ISO-TP reserviert, welche dann auch für UDS genutzt werden.

Nachfolgend soll ein beispielhaft Firmware Download mit UDS betrachtet werden. Dazu sind nachfolgend drei Screenshots einer UDS-Interpretation des emotas CDEs eingefügt, welche nachfolgende genauer erläutert werden.

UDS Firmware Download

Das UDS-Logging beginnt mit einem funktionalen Request an alle Geräte, dass diese die normale TX-Kommunikation einstellen sollen.
Danach schickt das Tool ein DiagnosticSessionControl Request, dass das Gerät in die Programming Session wechseln soll, in der der Firmware-Update stattfinden wird.
In der Programming Session wird mit einem Seed-Key-Verfahren sichergestellt, dass das Tool berechtigt ist, die Firmware zu ändern.
Das Tool identifiziert sich mit einem Fingerprint, welche im Gerät gespeichert wird, so dass nachträglich festgestellt werden kann, welches Tool oder welche Reparaturwerkstatt den Firmware-Update durchgeführt hat. Danach wird mit einem Erase Memory Kommando das Löschen des Flash-Speichers angewiesen.
Das Löschen des Flashs, dauert üblicherweise länger als eine normale Antwort zu senden. Daher antwortet das Gerät zunächst mit einer RCRRP-Nachricht „Request Correctly Received Response Pending“ und nach nach Abschluss des Flash-Vorgangs wird die Response zu Erase Memory gesendet.
Daraufhin wird mit Request Download der Download angefordert und die das Gerät antwortet mit einer Blockgröße für den nachfolgenden Datentransfer mittel TransferData.
In diesem Beispiel wird die Blockgröße auf 258 Byte gesetzt, so dass die Firmware nun mit TransferData in solchen Blocken übertragen wird. Davon sind 2 Byte UDS-Protokol und 256 Nutzdaten. Dies wiederholt sich, bis die gesamte Firmware übertragen wurde.

Im mittleren Stück der Datenübertragung wird die neue Firmware weiterhin mittels des TransferData-Diensts übertragen. Die TesterPresent-Nachrichten dazwischen signalisieren dem Gerät, dass ein Testtool weiterhin vorhanden ist.

Am Ende der Firmware-Übertragung beendet das Tool den Transfer mit einem RequestTransferExit. Danach werden in diesem Logging noch hersteller-spezifische Routinen zur Prüfung des Speichers ausgeführt. Sind diese erfolgreich, so folgt danach oft ein ECUReset, welches hier aber nicht mit dargestellt ist.

UDS Bootloader

UDS Bootloader werden von mehreren Herstellern – darunter die emotas embedded communciation GmbH angeboten.