Architektonische Standardisierung in sicherheitsrelevanter Embedded-Software
Nippon Seiki – Automotive Head-Up-Display Systeme
Problem und Komplexität
Vor dem Umbau griffen zahlreiche Module direkt über AUTOSAR/MCAL auf CAN-Daten und Diagnosedienste zu. Schon kleine Änderungen führten zu neuer DaVinci-Konfiguration, vollständiger Neukompilierung und erweiterter Systemintegration. Die enge Kopplung erhöhte Aufwand, Fragilität und Kosten – insbesondere unter ASPICE/ISO 26262.
Zusätzlich erforderten Themen wie Schrittmotor-Seriellmodus, DMA-basierte Kommunikation und PWM-Backlight spezielle Prozeduren (Register, Interrupts, Synchronisation), die im Team gemieden wurden und die Gesamtkomplexität weiter steigerten.
Ansatz
Statt Einzelbugs zu fixen, habe ich eine architektonische Abstraktion etabliert: Verbot direkter AUTOSAR-Zugriffe, Einführung klar zugeschnittener Komponenten und typsicherer C-Templates mit bewährten Patterns (Proxy, Observer-Provider, State Machine, RingBuffer, LinkedList, Facade).
Zentrale Komponenten
- ParameterManager / EventProvider: zentraler Zugriff auf NvM nur via Parameter-ID, RAM-Pufferung (RingBuffer/LinkedList), automatische Benachrichtigungen.
- InputDataManager / SystemInfoService: zentrale CAN-Datenhaltung; Module entkoppelt von AUTOSAR.
- SystemErrorManager / EventProvider: vereinheitlichtes Fehlermanagement (inkl. DTC/Sperrlogik).
- Facade-Layer: abstrahierter Zugriff für Execution, MCAL, Diagnostics; ermöglicht PC-Lauf ohne AUTOSAR via Simulation → frühe Integrationstests.
- Strikte Schichtendisziplin: top-down Zugriff; untere Layer nur als Observer registriert.
Ergebnisse
- Wartung/Test deutlich reduziert: zentrale, validierte Implementierungen wiederverwendbar ohne erneute Volltests und globale Re-Konfiguration.
- Simulation: Firmware auf PC ohne AUTOSAR ausführbar → schnelleres Debugging & frühe Integration.
- ASPICE-Erfolg: Layered Architecture mit bidirektionaler Traceability in Audits verteidigt.
- Team-Produktivität: Onboarding jüngerer Engineers ohne tiefes AUTOSAR möglich.
- Low-Level-Durchbruch: Oszilloskop-Analysen, Register-Rekonfiguration (SPI/DMA/IRQs) und systematisches Debugging stabilisierten Stepper/DMA/PWM/Errors als Referenzimplementierungen.
Lessons Learned
- Starke Abstraktion + Design Patterns senken Kopplung, Komplexität und Kosten.
- Facade-Layer und AUTOSAR-Abschirmung machen Firmware portabel & simulationsfähig.
- Persistenz auf Hardware-Ebene entscheidet, wenn niemand das Thema anfassen will.
- Wissenstransfer (Guidelines, Webinare, Wiki) ist so wichtig wie der Code selbst.
- Architektur befähigt Teams, konsistent und effizient zu arbeiten.
„Architektur bedeutet nicht nur technische Korrektheit – sondern Teams so zu befähigen, dass Qualität reproduzierbar wird.“