MISRA C pro safety-relevantní výrobky: jak připravit embedded kód na sériovou výrobu

Říjen 2026 · Embedded software · 6 min čtení

Prototyp, který funguje na stole, ještě není firmware připravený na sériovou výrobu. U safety-relevantních výrobků normy jako IEC 61508 a ISO 26262 očekávají definovaný standard kódování – a v embedded C to obvykle znamená MISRA C. Přesně tímto krokem jsme nedávno prošli s firmwarem safety-relevantního výrobku. Takto při tom postupujeme.

Proč na MISRA C záleží

Jazyk C nechává hodně na kompilátoru: implicitní typové konverze, nedefinované chování a chování závislé na implementaci, ukazatelovou aritmetiku. MISRA C z těchto rizik dělá kontrolovatelná pravidla. Kód, který je dodržuje, je předvídatelnější, snáz se reviduje a snáz se obhajuje v safety argumentaci.

MISRA C:2012 dělí pravidla do tří kategorií:

KategorieVýznam
Mandatory (povinná)Musí se dodržet – odchylka není povolena
Required (vyžadovaná)Musí se dodržet, pokud není zdokumentována formální, zdůvodněná odchylka
Advisory (doporučená)Doporučená dobrá praxe

Náš postup v pěti krocích

  1. Výchozí stav. Nastavíme statický analyzátor na MISRA C a spustíme ho na celý kód. První report bývá dlouhý – to je normální.
  2. Třídění podle rizika. Oddělíme skutečné chyby od stylu. Nejdřív nedefinované chování, nekontrolované návratové hodnoty a nebezpečné konverze, čitelnost až potom.
  3. Opravy v malých, revidovatelných krocích. Každá změna je navázaná na svůj nález a revidovaná. Výrobek musí fungovat po každém kroku.
  4. Dokumentace odchylek. Kde vyžadované pravidlo rozumně dodržet nejde – třeba v kódu pro přímý přístup k hardwaru –, odchylku zdůvodníme a zdokumentujeme, místo abychom ji tiše přešli.
  5. Udržení čistoty. Analýza se stane součástí buildu, aby nový kód nevracel staré problémy.

Typické nálezy

  • Implicitní konverze mezi znaménkovými a neznaménkovými typy nebo různými šířkami
  • Návratové hodnoty funkcí, které se nikdy nekontrolují
  • Příkazy switch bez větve default
  • Vedlejší efekty skryté v podmínkách nebo makrech
  • Rekurze nebo dynamická paměť v kódu, který musí mít omezené zdroje
  • Nepoužívaný kód a proměnné, které ztěžují revize

Nic z toho není exotické – ale u safety-relevantního výrobku je každý z těchto bodů otázkou, kterou může položit posuzovatel.

Naplánujte to před sériovým nasazením

Práce na MISRA je nejlevnější na začátku a nejdražší těsně před sériovou výrobou, kdy každá změna vyžaduje nové kolo testů. Pokud je termín uvedení pevný, začněte hned výchozí analýzou: ukáže, jak velký úkol to doopravdy je.

Firmware Code Review

MISRA analýza, revize architektury a testovatelnosti jedné komponenty firmwaru – s prioritizovaným seznamem nálezů a konkrétními opravami.