Diagnostika vozidel

Firmware komunikačního rozhraní
Každé vozidlo mluví trochu jiným jazykem. Vedle standardů jako OBD nebo J1939 má řada výrobců vlastní nářečí — a diagnostický přístroj jim musí rozumět všem. Pro českého výrobce automobilové diagnostiky vyvíjíme firmware komunikačního rozhraní, které překládá mezi vozidlem a diagnostickým softwarem. Jedno zařízení, mnoho protokolů — od třicet let starých sběrnic až po diagnostiku po Ethernetu.
Zařízení se připojí k vozidlu a zpřístupní jeho řídicí jednotky diagnostickému softwaru v počítači — po USB, bezdrátově přes Bluetooth, nebo po síti. Firmware v něm obsluhuje standardní diagnostické protokoly (OBD, KWP2000 a ISO 9141 po K-line, J1850 ve variantách VPW i PWM, CAN s ISO-TP a J1939) i proprietární protokoly konkrétních výrobců, u nichž jedna značka běžně znamená několik různých transportních variant. Naměřená data umí zařízení průběžně zaznamenávat do vlastní paměti — funguje tak i jako černá skříňka pro pozdější analýzu. Vedle samotného firmwaru dodáváme i nástroje pro počítač, kterými se zařízení sestavuje, provisionuje, aktualizuje a testuje.
Technologie
Firmware je napsaný v C pro ARM Cortex-M7 (STM32H7) nad jádrem FreeRTOS, se sdílenou knihovnou pro dispatch, kryptografii, komunikaci a audit. O komunikaci se starají tři CAN transceivery, K-line a J1850 budiče, sériové kanály, USB, Ethernet se síťovým stackem pro DoIP a modul Bluetooth Low Energy. Data se zaznamenávají do externí NOR flash paměti, která zároveň nahrazuje EEPROM pro konfiguraci. Zabezpečení stojí na šifrované relaci AES-GCM, HMAC ověření a podepsaných firmwarových balíčcích s ochranou proti návratu na starší verzi. Doprovodné nástroje pro počítač jsou v Pythonu a řídí build přes CMake a Ninja, flashování přes OpenOCD a aktualizaci po USB; testy běží ve čtyřech vrstvách — jednotkové přímo na cílovém hardwaru, integrační řízené z počítače, proti simulovanému vozidlu a systémové s reálným hardwarem — automaticky v CI.
Zadání
Šlo o náhradu firmwaru běžícího zařízení, ne o vývoj na zelené louce. Nová platforma musela zůstat datově kompatibilní s existujícím diagnostickým softwarem zákazníka, což znamenalo rozebrat chování původního řešení protokol po protokolu a znovu ho postavit na udržovatelném základu. K tomu platí jiná pravidla než na webu: megahertzy a kilobajty se počítají, časování sběrnic je závazné a chyba se neopravuje refreshem stránky. Firmware musí souběžně obsluhovat několik CAN kanálů, sériové linky, USB, síť i bezdrátovou komunikaci — v reálném čase a spolehlivě, protože na výstupu závisí diagnóza vozidla. A protože se zařízení prodává v produktových řadách s různou výbavou, bylo potřeba vyřešit i ochranu know-how: šifrovaný firmware, bezpečné zavedení klíčů do desky a licence vázané na konkrétní kus.
Řešení
Firmware je postavený jako vrstvená architektura v jazyce C nad real-time jádrem FreeRTOS. Nejníž leží ovladače sběrnic — tři kanály CAN, K-line, J1850, sériové linky, USB, Ethernet a Bluetooth. Nad nimi stojí protokolové automaty jednotlivých diagnostických standardů a značkových protokolů, nejvýš správce komunikace s počítačem a datalogger s vlastní správou externí flash paměti. Bezpečnost stojí na bootloaderu jako jediném důvěryhodném bodu zařízení: třístupňový boot řetěz, kde každý stupeň ověřuje ten následující, dvojitá banka s návratem na předchozí verzi, podepsaný a šifrovaný aktualizační balík doručený po USB a šifrovaná relace mezi počítačem a zařízením. Klíče se do desky zavádějí řízeným provisioningem, licence se vyhodnocuje za běhu proti sériovému číslu zařízení a odemyká tu podmnožinu protokolů, kterou má zákazník zaplacenou. Celý řetěz — build, flashování, balíček, aktualizace, provisioning i testy — obsluhuje jediný nástroj příkazové řádky pro Windows, macOS i Linux.
Klíčové funkce
- standardní protokoly OBD, KWP2000, ISO 9141, J1939, J1850 (VPW i PWM) a CAN
- diagnostika po Ethernetu dle ISO 13400-2 včetně vyhledání vozidla v síti a řízení relace
- značkové protokoly výrobců, kde jedna značka znamená i čtyři různé transportní varianty
- nahrávání a stahování kalibračních map pro ladění řídicích jednotek
- tři souběžné CAN kanály, USB, Ethernet a Bluetooth jako plnohodnotná náhrada kabelu
- záznam až 25 definovaných veličin do 128MB paměti — režim černé skříňky bez počítače
- šifrovaná relace, podepsaný firmware, návrat na předchozí verzi a audit log
- licence vázaná na sériové číslo zařízení odemyká zaplacené protokoly
- simulace vozidla přímo v zařízení — testy běží i bez fyzické řídicí jednotky
- nástroje pro počítač na sestavení, aktualizaci, provisioning a ověření desky
Výsledky a přínosy
- kompletní náhrada firmwaru běžícího zařízení ve čtyřech vydáních za pět měsíců
- jedno zařízení pokrývá standardní i značkové protokoly, od K-line po diagnostiku v síti
- bezdrátové připojení a třetí CAN kanál rozšířily zařízení nad rámec původní verze
- licencování na úrovni zařízení umožnilo prodávat produktové řady z jednoho firmwaru
- automatizované testy ověří zařízení bez připojeného vozidla, včetně osmihodinového zátěžového běhu
- ukázka přesahu Oidis mimo web: embedded vývoj, HW, bezpečnost a automotive

