Edocti
Fortgeschrittene technische Ausbildung für den modernen Softwareingenieur
Edocti Training

Architektur und Design eingebetteter Software

Fortgeschritten
21 h
4.6 (53 Bewertungen)
Architektur und Design eingebetteter Software

Architektur und Design eingebetteter Software: Zuverlässige, modulare und skalierbare Embedded‑Systeme entwerfen.

Hands‑on mit Schichtenarchitekturen, Komponentendesign und UML‑Modellierung.

Moderne C++‑Praktiken auf Embedded‑Constraints und Echtzeitsysteme anwenden.

Praktische Erfahrung sammeln durch ~70% Labs zum Aufbau von Embedded Designs.

Nutzen: Wartbarkeit, Testbarkeit und Performance von Embedded‑Software verbessern.

Für wen: gedacht für Personen mit C/C++‑Erfahrung in Embedded‑Projekten.

Mit optionalem Teil zu Advanced Patterns und Architektur‑Trade‑offs.

Curriculum

Tag 1 — Von Anforderungen zur Architektur (Embedded‑Realitäten)
  • Problemrahmen und Stakeholder; Qualitätsattribute (Safety, Performance, Availability, Energie)
  • Anforderungserfassung und Traceability (Use Cases, Non‑Funktionales, Interface Contracts)
  • Kontext, Hardware‑Constraints, Memory/CPU/Energie‑Budgets; frühe Risiken und ADRs
  • Architektur‑Sichten: Kontext, Container/Komponenten, Deployment; Mapping auf das Target
Tag 1 — Strukturelles Modellieren für Embedded‑Systeme
  • UML mit Enterprise Architect: Packages, Components, Deployment‑ und Klassendiagramme
  • Layer und Grenzen: Applikation, Services, Treiber; HAL/SAL‑Patterns; Portabilitäts‑Seams
  • Dataflow und Nebenläufigkeitsmodell (Event‑driven vs. Time‑triggered; Task‑Graph)
  • Schnittstellen und Verträge: APIs, Fehlercodes, Pre/Postconditions
Tag 2 — Verhalten, Timing und Echtzeit‑Design
  • State Machines richtig (Hierarchie, Mealy/Moore, Mode Management, Reentrancy)
  • Sequence/Activity/Timing‑Diagramme für Flüsse und Zeitbudgets
  • Scheduling: periodische/sporadische Tasks, Rate‑Monotonic vs. EDF, kooperativ vs. präemptiv
  • Priority Inversion und Ceilings; Partitionierung über Cores; WCET‑Abschätzung
Tag 2 — Embedded C/C++‑Techniken
  • Ressourcenbesitz und RAII; Smart Pointers vs. statischer Speicher; pimpl und Interfaces
  • Statischer vs. dynamischer Polymorphismus; CRTP; constexpr und Compile‑Time‑Konfiguration
  • Fixed‑Point‑Mathematik; Memory Pools, Ringpuffer und Zero‑Copy‑Pipelines
  • ISR‑sicherer Code und DMA‑Patterns; volatile, Atomics, Alignment und Endianness
Tag 3 — Hardwarezugriff, Portabilität und Startup
  • Memory‑mapped I/O und Registerzugriffsmuster; Bitfields und Masken sicher einsetzen
  • Treiber vs. Services; CMSIS‑artige Header; Device Trees (Überblick, falls relevant)
  • Boot‑Sequenz und Initialisierung; Secure‑Boot‑Basics; Linker‑Script‑Essentials (Überblick)
Tag 3 — Zuverlässigkeit, Diagnose und Tests
  • Fehlerbehandlung; Watchdogs und Brown‑out; Graceful Degradation
  • Logging/Tracing; Ereignislogs und Performance‑Counter; Telemetrie‑Hooks
  • Static Analysis und MISRA C/C++; Unit/Integration‑Tests; SIL/HIL und Fault Injection
Tag 3 — Vom Modell zum Code‑Skeleton
  • Modell auf Module/Ordner abbilden; Abhängigkeitsregeln; Public vs. Private Headers
  • Buildsystem (CMake) und Toolchain‑Integration; Feature Flags und Varianten
  • Applikations‑Skeleton generieren; ersten Use Case verdrahten und CI‑Smoke‑Tests

Optionale Module

Optional — Safety & Security
  • ISO 26262‑Ausrichtung (ASIL‑Denken, Safety Mechanisms) — Überblick
  • Sichere Kommunikation und Secure Flashing; Hardening‑Checkliste

Kursablauf

  • Part 1: 09:00–10:30
  • Break: 10:30–10:45
  • Part 2: 10:45–12:15
  • Lunch break: 12:15–13:15
  • Part 3: 13:15–15:15
  • Break: 15:15–15:30
  • Part 4: 15:30–17:30