Diagnostika vozidel

Diagnostika vozidel — firmware komunikačního rozhraní

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.

/// Firmware/// Hardware/// Automotive

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

Další projekty a reference

Zobrazit všechny projekty →