This is an old revision of the document!
Table of Contents
Die OOBD Firmware Kommandos
Unter der Vorraussetzung, daß es manch andere Software gibt die zum Interface Kontakt aufnimmt und Botschaften sendet, ist die Kommandostruktur einfach aber flexibel gestaltet worden.
Die genaue Beschreibung der Syntax kann in RFC Firmware Syntax gefunden werden
Die Firmware und ihre Kommandos sind aufgeteilt in fünf verschiedene sogenannte Funktionsblöcke
- System
- Serielle Eingabe
- Serielle Ausgabe
- Protokoll
- Bus
in der jede der Funktionsblöcke selbst nochmal in generische und implementationsspezifische Teile aufgeteilt worden sind.
- Generisch bedeutet, das diese Funktionen gleich sind für den bestimmten Funktionsblock, was bedeutet das jede implentation muss diese Kommandos unterstützen. Aber bitte nimm zu Kenntnis das z.B. ein K-Line Bus andere generische Kommandos besitzt als ein CAN-Bus
- Implementationsspezifisch bedeutet, dass die Unterstützung dieser Kommandos, abhängig von tatsächlichen Typ oder der Durchführung des Funktionsbausteins sind. So ist z.B. das Setzen der CAN-ID Länge sicherlich unterstützt von einem CAN-Bus, aber nicht von einem K-Line Bus
Wenn man ein p - Kommando zur Firmware sendet, definiert die erste Zahl in dem Kommandozeichensatz immer zu welchem Funktionsblock der Befehl weitergeleitet wird. Dies gibt dann letztendlich die folgende Bedeutung der ersten Zahl:
Kommando beginnt mit | geht zu welchem Funktionsblock |
---|---|
p 0 | Systemspezifisch |
p 1 | Systemgenerisch |
p 2 | Serielle spezifische Eingabe |
p 3 | Serielle generische Eingabe |
p 4 | Serielle spezifische Ausgabe |
p 5 | Serielle generische Ausgabe |
p 6 | Protokollspezifisch |
p 7 | Protokollgenerisch |
p 8 | Busspezifisch |
p 9 | Busgenerisch |
max: Implementationsspezifisch (unsigned long)
Systemgenerische Kommandos (P 1)
Kommando | Wert1 | Wert2 | Bedeutung | Fehlerkodes |
---|---|---|---|---|
1 | 0 | 0 | aktiviere Protokoll CAN raw | |
1 | 1 | 0 | aktiviere Protokoll UDS diagnositc | |
1 | 3 | 0 | aktiviere Protokoll RTP (Real time data) | |
2 | 0 | 0 | deaktiviere blaue LED (= AUS) | |
2 | 0 | 1 | aktiviere blaue LED (= AN) | |
2 | 1 | 0 | deaktiviere grüne LED (= AUS) | |
2 | 1 | 1 | aktiviere grüne LED (= AN) | |
2 | 2 | 0 | deaktiviere rote LED (= AUS) | |
2 | 2 | 1 | aktiviere rote LED (= AN) | |
2 | 3 | 0 | deaktiviere Summer (= AUS) | |
2 | 3 | 1..max | aktiviere Summer (= AN) mit Frequenz in Hz mittels Wert2 | |
2 | 10000 | 0 | deaktiviere Relais (= AUS) | |
2 | 10000 | 1 | aktiviere Relais (= AN) |
Systemspezifische Kommandos (P 0)
Systemspezifische Kommandos (P 0) für die D2 Implementation
Kommando | Wert1 | Wert2 | Bedeutung | Fehlerkodes |
---|---|---|---|---|
0 | 0 | 0 | zeige Softwareversion an: OOBD <FW-ID> <Rev> <Hardware> <Model> [Erzeugungsdatum] (e.g.: OOBD D2 651 Lux-Wolf CAN-Invader Thu, 15 Aug 2013 01:15:25 +0200) | |
0 | 1 | 0 | zeige Seriennummer an: xx:xx:xx:xx:xx:xx (=BTM222 MAC-Address) | |
0 | 2 | 0 | zeige Spannungswert der Versorgung des OBD-II Steckers an | |
0 | 3 | 0 | zeige CPU info | |
0 | 4 | 0..max | zeige Speicherinformation von Adresse x an | |
0 | 5 | 0 | zeige ROM Tabellenort | |
0 | 6 | 0 | zeige freien dynamischen Speicher an | |
0 | 7 | 0 | überprüfe CRC-32 der Applikation | |
0 | 8 | 0 | zeige OOBD-Cup Gerätenamen | |
0 | 9 | 0 | zeige UART Geschwindigkeit | |
99 | 0 | 0 | Hardware - Reset |
Serielle Eingabe - Spezifische Kommandos (P 2)
Noch nichts implementiert
Serielle Eingabe - Generische Kommandos (P 3)
Noch nichts implementiert
Serielle Ausgabe - Spezifische Kommandos (P 4)
Noch nichts implementiert
Serielle Ausgabe - Generische Kommandos (P 5)
Noch nichts implementiert
Protokollspezifische Kommandos (P 6)
Protokollspezifische Kommandos (P 6) für das CAN UDS Protokoll
Kommando | Wert1 | Wert2 | Bedeutung | Fehlerkodes |
---|---|---|---|---|
1 | 0..max | 0 | setze den Anwortzeittimout in 10ms Vielfachen | |
5 | $xxx | 0 | setze ECU Anforderungs-ID (RECVID) | |
6 | $xxx | 0 | starte Testerpresent auf CAN-ID $xxx mit aktuellem Intervall und maskiere | 10 (kein Speicher nehr) |
7 | $xxx | 0 | stoppe Testerpresent auf CAN-ID | |
8 | 0..max | 0 | setze Testerpresent Intervall in 10ms Vielfachen (Default 250) | |
9 | $xxx | 0 | setze ECU Antwort-ID (SENDID) (Default 0, setzt SENDID= RECVID | 0x08) | |
10 | $xxx | 0 | setze Testerpresent Maske 02 xx (Default 0x80) |
Protokollspezifische Kommandos (P 6) für das CAN Raw Protokoll
Keine speziellen p- Kommandos für diesen Modus, weil die Funktion hauptsächlich von dem gesendeten Dateninhalt bestimmt wird. Mehr Informationen zu diesem ThemFor more details about the CAN Raw Mode, please refer to the RFC CAN Raw Mode
Protocol Specific Commands (P 6) for the CAN RTD Protocol
For more details about the CAN RTD Mode, please refer to the RFC CAN RTD Mode
Command | Value1 | Value2 | Meaning | Errorcodes |
---|---|---|---|---|
1 | clear the internal data buffer list, releases all used memory buffers |
Protocol Generic Commands (P 7)
Command | Value1 | Value2 | Meaning | Errorcodes |
---|---|---|---|---|
0 | 0 | 0 | show info of used protocol | |
1 | 0 | 0 | deactivate Listen mode | |
1 | 1 | 0 | activate Listen mode |
Bus Specific Commands (P 8)
Bus Specific Commands (P 8) for the CAN Bus, used in D2 Design
Command | Value1 | Value2 | Meaning | Errorcodes |
---|---|---|---|---|
2 | 0 | 0 | CAN transceiver: Silent mode (CAN deactive) | |
2 | 1 | 0 | CAN transceiver: Loop back (internal loop) | |
2 | 2 | 0 | CAN transceiver: Loop back combined with silent mode | |
2 | 3 | 0 | CAN transceiver: Normal mode (CAN active) | |
3 | 0 or 1 | 0 | Standard-CAN init (initialize CAN controller with 125kbit/s, 11bit) | |
3 | 2 | 0 | Standard-CAN init (initialize CAN controller with 250kbit/s, 11bit) | |
3 | 3 | 0 | Standard-CAN init (initialize CAN controller with 500kbit/s, 11bit) | |
3 | 4 | 0 | Standard-CAN init (initialize CAN controller with 1000kbit/s, 11bit) | |
3 | 5 | 0 | Extended-CAN init (initialize CAN controller with 125kbit/s, 29bit) | |
3 | 6 | 0 | Extended-CAN init (initialize CAN controller with 250kbit/s, 29bit) | |
3 | 7 | 0 | Extended-CAN init (initialize CAN controller with 500kbit/s, 29bit) | |
3 | 8 | 0 | Extended-CAN init (initialize CAN controller with 1000kbit/s, 29bit) | |
4 | 0 | 0 | HS-CAN (Relais switch - OFF) | |
4 | 1 | 0 | MS-CAN (Relais switch - ON) | |
10 | <Filter-No> | $<CAN-ID> | set Filter CAN-ID (11bit CAN-ID 0x0000-0x07FF) where Filter-No is 1-20, i.e. p 8 10 1 $720 | |
11 | <Filter-No> | $<Mask-ID> | set Filter Mask-ID (11bit Mask-ID 0x0000-0x07FF) where Filter-No is 1-20 and Filter Mask depends on Filter CAN-ID (0=don't care 1=match), i.e. p 8 11 1 $7F0 (here: $720 - $72F) | |
12 | <Filter-No> | $<CAN-ID> | set Filter CAN-ID (29bit CAN-ID 0x00000000-0x1FFFFFFF) where Filter-No is 1-10, i.e. p 8 12 1 $18F30557 | |
13 | <Filter-No> | $<Mask-ID> | set Filter Mask-ID (29bit Mask-ID 0x00000000-0x1FFFFFFF) where Filter-No is 1-10 and Filter Mask depends on Filter CAN-ID (0=don't care 1=match), i.e. p 8 11 1 $1FFFFFF0 (here: $18F30550 - $18F3055F) | |
14 | 0 | 0 | set all 11bit CAN filter to CAN-ID $0000 and Mask-ID $07FF (= disable any CAN traffic to application) |
Bus Generic Commands (P 9)
Bus Generic Commands (P 9) for the CAN Bus
Command | Value1 | Value2 | Meaning | Errorcodes |
---|---|---|---|---|
0 | 0 | 0 | show info which interface/bus is active (i.e. CAN-Bus) | |
0 | 3 | 0 | show info of CAN transceiver operating mode | |
0 | 4 | 0 | ?? | |
0 | 5 | 1 | read different CAN error counters | |
0 | 5 | 2 | delete all software internal CAN error counters | |
0 | 10 | 0 | show all 11bit CAN-ID filter, each line with two 11bit CAN-filters like: <CAN-ID> <Mask-ID> <CAN-ID> <Mask-ID> | |
0 | 11 | 0 | show all 29bit CAN-ID filter, each line with one 29bit CAN-filter like: <CAN-ID> <Mask-ID> |