Embedded-Software

Einsatz von MISRA C

17. Juli 2023, 6:00 Uhr | Von Mark Pitchford, LDRA
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 1

Die Struktur der MISRA‑C-Guidelines

Die MISRA‑C-Guidelines schränken die Syntax und Semantik der C-Sprache auf eine vorhersagbare Teilmenge ein, die den Anforderungen Safety- und Security-kritischer Systeme genügt. Mithilfe von Regeln und Vorschriften minimieren oder eliminieren diese Richtlinien alle als riskant oder unsicher bekannten Codierpraktiken:

  • Eine Regel (Rule) ist eine Quellcode-Anforderung, die vollständig, objektiv und eindeutig ist. Die Richtlinien stufen Regeln als entscheidbar ein, wenn sie mit Techniken wie der statischen Analyse beweiskräftig verifizierbar sind, und als unentscheidbar, wenn eine Verifikationsgarantie nicht möglich ist.
  • Beispiel für eine Regel: »Der Wert eines Objekts mit automatischer Speicherdauer darf nicht gelesen werden, bevor er festgelegt wurde.« (MISRA C:2012, Regel 9.1)
  • Eine Vorschrift (Direktive) ist dagegen eine Richtlinie, die durch Code, Prozesse, Dokumentation oder eine funktionale Anforderung erfüllt werden kann. Da Direktiven interpretierbar sind, können möglicherweise Analyse-Tools beim Prüfen der Konformität helfen. Ist dies nicht der Fall, müssen verschiedene Validierungstechniken angewandt werden.
    Beispiel einer Direktive: »Jedes von der Implementierung definierte Verhalten, von dem die Ausgabe des Programms abhängt, muss dokumentiert und verstanden werden.« (MISRA C:2012, Direktive 1.1)

Im folgenden Beispiel wird der sizeof()-Operator gemäß dem C-Standard verwendet:

passend zum Thema

LDRA
© LDRA

Da sizeof() die übergebenen Ausdrücke jedoch nicht ausführt, sondern lediglich Typ und Umfang des resultierenden Ausdrucks zum Zeitpunkt der Kompilierung evaluiert, kann dieser Code zur Laufzeit zu unerwartetem Verhalten führen. Folglich wird die Verwendung des sizeof-Operators in MISRA C:2012, Regel 13.6 wie folgt eingeschränkt: »Der Operand des sizeof-Operators darf keine Ausdrücke ent­halten, die das Risiko potenzieller Nebenwirkungen bergen.«

Hierbei handelt es sich um eine entscheidbare Regel. Entwickler können deshalb mithilfe der statischen Analyse ermitteln, an welchen Stellen diese Regel verletzt wurde. Wurde eine solche Stelle gefunden, kann der Fehler durch eine einfache Modifikation korrigiert werden:

LDRA
© LDRA

Der 25-jährige Werdegang der MISRA‑C-Guide­-lines sowie die zunehmende Komplexität heutiger Embedded-Software haben dazu geführt, dass die Konformitätsprüfungs-Tools über Jahrzehnte hinweg verbessert wurden. Sogar MISRA C selbst empfiehlt die Verwendung von Statische-Analyse-Tools zum Sicherstellen der Konformität.


  1. Einsatz von MISRA C
  2. Die Struktur der MISRA‑C-Guidelines
  3. Die Relevanz von MISRA C für die Cybersicherheit
  4. Umsetzung der Konformität zu MISRA C
  5. Einführung in MISRA C:2023

Lesen Sie mehr zum Thema


Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu LDRA Inc.

Weitere Artikel zu Entwicklungswerkzeuge