Hallo,
ich stelle hier ein Werkzeug vor, an dem ich seit einiger Zeit arbeite: XCP-Ray, ein Mess- und Kalibrierprogramm für XCP (ASAM MCD-1), wie man es aus der Steuergeräte-Entwicklung kennt. Damit lassen sich Variablen einer laufenden Firmware im festen Raster aufzeichnen und Parameter im Betrieb ändern, ohne neu zu flashen.
Was es kann:
- XCP on CAN und CAN FD (Linux: SocketCAN; Windows: PEAK PCAN-Basic und J2534), XCP on UDP/IP und TCP/IP, dazu XCP über eine serielle Leitung
- Dynamisches DAQ mit Zeitstempeln des Steuergeräts, mehrere Steuergeräte gleichzeitig, mitgehörte CAN-Busse mit DBC
- Werte, Kennlinien und Kennfelder (Heatmap und 3D) kalibrieren, Datensätze als DCM, Kalibrierseiten (Referenz-/Arbeitsseite), Seed & Key über ein eigenes Skript
- Aufzeichnung mit Export nach MDF4 und CSV, Python-Schnittstelle für automatisierte Tests
Für eigene Boards: Für Arduino-Boards (AVR), Raspberry Pi Pico und STM32 gibt es die Bibliothek x1xcp_serial. XCP läuft über den USB-Seriell-Port in Rahmen (COBS + CRC16), dazwischen bleibt Serial.print() nutzbar, der Text landet in einer Konsole. Für ESP32 und ESP8266 gibt es x1xcp_esp32 und x1xcp_esp8266 (XCP on UDP über WLAN). Die Bibliotheken sind MIT-lizenziert und im Bibliotheksverwalter bzw. für PlatformIO verfügbar. Die A2L-Datei erzeugt x1-elf2a2l aus der DWARF-Info der ELF-Datei, eine kurze JSON-Liste wählt die Variablen und ergänzt Einheiten, Umrechnungen und Grenzen.
Das Programm läuft unter Linux und Windows. Es ist eine öffentliche Beta und kostenlos, auch kommerziell; für Maker, Studierende und Lehre soll es kostenlos bleiben. Getestet habe ich mit einem Infineon XMC4700, einem Seriensteuergerät über CAN, ESP32, ESP8266, Arduino Nano, Pico und STM32.
Ich freue mich über Kritik und Erfahrungsberichte! Viele Grüße Florian