Projekt 2 - Phasen 0-17 Fertig

Automotive Safety PlatformZonaler Vehicle Architektur Prototyp

ISO 26262 ASIL D zonale Fahrzeugplattform mit 7 ECUs, 475 Anforderungen, 1.648 Unit Tests und ~43.800 LOC C-Firmware. Vollstaendiger Safety-Lifecycle von HARA bis Unit-Verifikation.

Startpunkt

  • Runterscrollen fuer den interaktiven Showcase mit Metriken, Code-Snippets und Prozess-Nachweis.
  • Decision-Log Summary fuer eine schnelle Management-Uebersicht nutzen.

Hinweis: Das Quelldokument selbst ist aktuell auf Englisch.

Phasen 0-17 FERTIGISO 26262 ASIL D | ASPICE SWE.6 | MISRA C

7

ECU-Knoten

4 physisch + 3 simuliert

475

Anforderungen

Voller Safety-Lifecycle

1.648

Unit Tests

Testgetriebene Entwicklung

~43.800

Firmware LOC

Echte C-Firmware

475

Traceability Links

SG zu SWR zu Test

>=99%

SPFM

Uebertrifft ASIL D Ziel

Systemarchitektur Uebersicht

Fahrzeug-Schicht
Edge Gateway
Cloud Plattform
SAP QM + Business

Portfolio-Projekt — Firmware getestet in SIL (Software-in-Loop), noch nicht auf physischer Hardware. STM32 ist IEC 61508 zertifiziert (industriell), nicht ISO 26262 qualifiziert.

Physische Safety Hardware

  • 3x STM32G474RE (CVC, FZC, RZC) — Cortex-M4 170 MHz
  • TMS570LC43x Safety Controller — Cortex-R5 Lockstep (TUV-zertifiziert)
  • CAN 2.0B bei 500 kbps — 32 Nachrichtentypen, 24% Buslast
  • Diverse Redundanz: STMicroelectronics + Texas Instruments (verschiedene Hersteller, verschiedene Architekturen)
  • BOM: $537–$937 fuer die komplette Plattform

Delivery Roadmap

18 von 19 Phasen abgeschlossen95%

Phase 0

Projektsetup & Architektur-Dokumentation

Abgeschlossen

Phase 1

Safety Concept (HARA, Safety Goals, FSC)

Abgeschlossen

Phase 2

Safety Analyse (FMEA, DFA, HW Metriken)

Abgeschlossen

Phase 3

Anforderungen & Systemarchitektur

Abgeschlossen

Phase 4

CAN Protokoll & HSI Design

Abgeschlossen

Phase 5

Shared BSW Layer (18 AUTOSAR-aehnliche Module)

Abgeschlossen

Phase 6

CVC Firmware (12 SWCs, 254 Tests)

Abgeschlossen

Phase 7

FZC Firmware (Lenkung, Bremse, Lidar)

Abgeschlossen

Phase 8

RZC Firmware (Motorsteuerung, Strom, Batterie)

Abgeschlossen

Phase 9

Safety Controller (TMS570 unabhaengiger Monitor)

Abgeschlossen

Phase 10

BCM, ICU, TCU Firmware (simulierte ECUs)

Abgeschlossen

Phase 11

POSIX-Port + Docker SIL (7 ECUs containerisiert)

Abgeschlossen

Phase 12

DBC-Datei + Plant-Simulator (Physikmodelle)

Abgeschlossen

Phase 13

CAN-zu-MQTT Gateway + WebSocket Bridge

Abgeschlossen

Phase 14

Live-Telemetrie-Dashboard (/embedded)

Abgeschlossen

Phase 15

SAP QM Mock API (OData-Endpunkte)

Abgeschlossen

Phase 16

Edge-ML Anomalie-Erkennung + Fehlerinjektion

Abgeschlossen

Phase 17

VPS-Deployment + Live Demo

Abgeschlossen

Phase 18

Physischer Hardware-Aufbau + HIL-Tests

Geplant

Anforderungskaskade (V-Modell)

Safety Goals (8) -> FSR (25) -> TSR (51) -> SSR (81) -> SWR (197)
                                            -> HSR (25)
+ System Reqs (56) + Stakeholder Reqs (32) + FMEA (50 failure modes)
= 475 total requirements, 1,648 unit tests, 475 traced end-to-end

Safety-Lifecycle Zusammenfassung

  • HARA: 6 Betriebssituationen, 16 Gefaehrdungsereignisse, 8 Schutzziele (3 ASIL D, 2 ASIL C)
  • FMEA: 50 Fehlermodi, 11 Schweregrad >= 9, 23 Sicherheitsmechanismen
  • DFA: 6 Common-Cause-Failures, 5 kaskadierte Fehler analysiert
  • HW-Metriken: SPFM >= 99%, PMHF 5.2 FIT (unter 10 FIT ASIL D Ziel)

Code Showcase

Const Transition Table(Swc_VehicleState.c:69-154)

Pattern: Tabellengesteuerte Zustandsmaschine — 6 Zustaende x 11 Events

"Jeder Uebergang ist statisch definiert — keine Laufzeit-Ueberraschungen"

static const uint8 transition_table[CVC_STATE_COUNT][CVC_EVT_COUNT] = {
    /* CVC_STATE_INIT */
    {
        CVC_STATE_RUN,         /* EVT_SELF_TEST_PASS     -> RUN        */
        CVC_STATE_SAFE_STOP,   /* EVT_SELF_TEST_FAIL     -> SAFE_STOP  */
        CVC_STATE_INVALID,     /* EVT_PEDAL_FAULT_SINGLE -> (invalid)  */
        CVC_STATE_INVALID,     /* EVT_PEDAL_FAULT_DUAL   -> (invalid)  */
        ...
    },
    /* CVC_STATE_RUN */
    {
        CVC_STATE_INVALID,     /* EVT_SELF_TEST_PASS     -> (invalid)  */
        CVC_STATE_INVALID,     /* EVT_SELF_TEST_FAIL     -> (invalid)  */
        CVC_STATE_DEGRADED,    /* EVT_PEDAL_FAULT_SINGLE -> DEGRADED   */
        CVC_STATE_SAFE_STOP,   /* EVT_PEDAL_FAULT_DUAL   -> SAFE_STOP  */
        CVC_STATE_LIMP,        /* EVT_CAN_TIMEOUT_SINGLE -> LIMP       */
        CVC_STATE_SAFE_STOP,   /* EVT_CAN_TIMEOUT_DUAL   -> SAFE_STOP  */
        CVC_STATE_SAFE_STOP,   /* EVT_ESTOP              -> SAFE_STOP  */
        CVC_STATE_SAFE_STOP,   /* EVT_SC_KILL            -> SAFE_STOP  */
        ...
    },
    /* ... DEGRADED, LIMP, SAFE_STOP, SHUTDOWN */
};
Dual Sensor Plausibilitaet mit Entprellung(Swc_Pedal.c:323-334)

Pattern: Kreuzpruefung zweier unabhaengiger Sensoren, Entprellung vor Fehlererkennung

"Beide AS5048A Sensoren muessen innerhalb des Schwellwerts fuer N aufeinanderfolgende Zyklen uebereinstimmen"

/* Plausibility check (only if both sensors read OK) */
if (new_fault == CVC_PEDAL_NO_FAULT) {
    delta = Pedal_AbsDiff16(raw1_local, raw2_local);

    if (delta >= Pedal_CfgPtr->plausThreshold) {
        Pedal_PlausDebounce++;
        if (Pedal_PlausDebounce >= Pedal_CfgPtr->plausDebounce) {
            new_fault = CVC_PEDAL_PLAUSIBILITY;
        }
    } else {
        Pedal_PlausDebounce = 0u;
    }
}
E2E Schutz — CRC-8 + Alive Counter(E2E.c:101-131)

Pattern: AUTOSAR E2E Profil P01 — CRC + Counter in CAN PDU gepackt

"16 von 32 CAN-Nachrichten sind E2E-geschuetzt — erkennt Korruption, Verlust und Replay"

Std_ReturnType E2E_Protect(const E2E_ConfigType* Config,
                           E2E_StateType* State,
                           uint8* DataPtr, uint16 Length)
{
    uint8 crc;

    if ((Config == NULL_PTR) || (State == NULL_PTR) || (DataPtr == NULL_PTR))
        return E_NOT_OK;

    if (Length < E2E_PAYLOAD_OFFSET)
        return E_NOT_OK;

    /* Increment alive counter (4-bit, wraps 0..15) */
    State->Counter = (State->Counter + 1u) & 0x0Fu;

    /* Write byte 0: [counter:4 | dataId:4] */
    DataPtr[E2E_BYTE_COUNTER_ID] =
        (uint8)((State->Counter << 4u) | (Config->DataId & 0x0Fu));

    /* Compute CRC over payload (bytes 2..N-1) + DataId */
    crc = E2E_ComputePduCrc(DataPtr, Length, Config->DataId);
    DataPtr[E2E_BYTE_CRC] = crc;

    return E_OK;
}

Dokumentationsbibliothek

~160 Dokumente — Entwurf (befuellt), vollstaendiger Inhalt, noch nicht formal reviewed

ISO 26262 — Konzeptphase (Part 3)4
ISO 26262 — Safety Management (Part 2)2
  • Safety PlanLebenszyklusphasen, Rollen, Aktivitaeten, Tool-Qualifizierung
  • Safety CaseClaims, Argument, Evidenz-Struktur
ISO 26262 — Safety Analyse (Part 9)4
ISO 26262 — Safety-Anforderungen (Parts 4-6)5
ISO 26262 — Safety-Validierung1
ASPICE — System Engineering (SYS.1-3)5
ASPICE — Software Engineering (SWE.1-2)11
ASPICE — Verifikation (SWE.4-6, SYS.4-5)12
Hardware Engineering (HWE.1-3)2
Support & Management (SUP, MAN.3)5

Prozess & Governance

Traceability-Nachweis
  • 475 zurueckverfolgbare Anforderungen: SG zu FSR zu TSR zu SSR zu SWR zu Modul zu Test
  • Jedes Schutzziel hat eine vollstaendige Rueckverfolgung zu Code und Tests
  • Beispiel: SG-001 zu FSR-001 zu TSR-001 zu SSR-001 zu Swc_Pedal.c zu test_Swc_Pedal.c
ADR Governance
  • 13 Architecture Decision Records mit T1-T4 Tier-Bewertung
  • Bewertet auf 4 Dimensionen: Kosten, Zeit, Safety, Lebenslauf-Relevanz
  • Jede Entscheidung enthaelt Begruendung + 2 Alternativen + warum die Wahl gewinnt
Prozessreife
  • 26 Regeldateien in .claude/rules/ (MISRA, ISO, ASPICE, Security, Testing)
  • Git Flow Branching-Strategie mit unveraenderlichen Baselines
  • Phasenbasierte Ausfuehrung mit Gate-Kriterien