Zum Inhalt springen

Projektstatus / Projekt 2 · Phasen 0–17 abgeschlossen

Automotive Safety PlatformPrototyp einer zonalen Fahrzeugarchitektur

Portfolio-Prototyp nach ASIL-D-Prinzipien: 7 Steuergeräte, 475 Anforderungen, 1.648 Unit-Tests und rund 43.800 Zeilen C. Die Nachweise reichen von der Gefährdungsanalyse bis zur Software-Verifikation.

Zuerst lesen / Schnelleinstieg

  • Die interaktive Übersicht zeigt Architektur, Kennzahlen, Codebeispiele und Prozessnachweise.
  • Das Entscheidungsprotokoll fasst die wichtigsten technischen Entscheidungen und Abwägungen zusammen.

Hinweis: Das Quelldokument selbst ist aktuell auf Englisch.

Phasen 0-17 ABGESCHLOSSENAn ASIL D orientiert | An ASPICE SWE.6 ausgerichtet | MISRA C

7

ECU-Knoten

4 physisch + 3 simuliert

475

Anforderungen

Sicherheits-Artefakte

1.648

Unit Tests

Testgetriebene Entwicklung

~43.800

Firmware LOC

Echte C-Firmware

475

Traceability Links

SG zu SWR zu Test

>=99%

SPFM

Gegen ein ASIL-D-Ziel modelliert

Übersicht der Systemarchitektur

Fahrzeugschicht
Edge-Gateway
Cloud-Plattform
Qualitätsworkflow

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 für 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

Gemeinsame BSW-Schicht (18 AUTOSAR-ähnliche 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 (unabhängige Überwachung auf TMS570)

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

Mock-API für den Qualitätsworkflow (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 Gefährdungsereignisse, 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 Zustände × 11 Ereignisse

"Jeder Übergang ist statisch definiert — keine Überraschungen zur Laufzeit"

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-Plausibilität mit Entprellung(Swc_Pedal.c:323-334)

Pattern: Kreuzprüfung zweier unabhängiger Sensoren, Entprellung vor der Fehlererkennung

"Beide AS5048A-Sensoren müssen innerhalb des Schwellwerts für N aufeinanderfolgende Zyklen übereinstimmen"

/* 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-geschützt — erkennt Beschädigung, Verlust und Wiederholung"

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 mit Inhalten, noch nicht formal geprüft

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 rückverfolgbare Anforderungen: SG zu FSR zu TSR zu SSR zu SWR zu Modul zu Test
  • Jedes Schutzziel ist vollständig zu Code und Tests rückverfolgbar
  • 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 enthält eine Begründung, zwei Alternativen und die Gründe für die Auswahl
Prozessreife
  • 26 Regeldateien in .claude/rules/ (MISRA, ISO, ASPICE, Security, Testing)
  • Git-Flow-Strategie mit unveränderlichen Baselines
  • Phasenbasierte Ausführung mit Gate-Kriterien