Edocti Training
Fortgeschrittenes C und C++ für Embedded Systems
Geplante Sessions
Aktuell sind keine Termine verfügbar.
Fähigkeiten, die Sie lernen werden
Fortgeschrittenes C/C++
STM32 Bare-Metal-Programmierung
ARM Cortex-M4 Architektur
ARM Programmierung
RTOS & Task-Scheduling
Hardware-Interrupts (NVIC)
DMA & Zero-Copy-Pipelines
Eingebettete Zustandsautomaten
Automotive ECU-Simulation
Curriculum
Tag 1 — Essentielles C/C++ und Grundlagen auf Speicherebene
- Essentielles C & Sprachentwicklung: Tiefer Einblick in die Aufgaben des Linkers im Detail, ABI-Formate, Promotion- und Overflow-Fallen, fortgeschrittene Pointer-Manipulation, mehrdimensionale Arrays und die Lösung von Portabilitätsproblemen, die durch undefiniertes Verhalten verursacht werden.
- Übergang zu Embedded C++: Verständnis von Ressourcenbesitz und RAII (Resource Acquisition Is Initialization), Gegenüberstellung von Smart Pointern mit statischem Speicher in Umgebungen, die dynamische Speicherzuweisung strengstens verbieten.
- Datenmanagement: Sicherer Umgang mit komplexen Datentypen, korrekte Nutzung des volatile-Schlüsselworts, Verwaltung atomarer Operationen und Lösung von Problemen mit Speicherausrichtung (Alignment) und Endianness.
- Mathematik & Optimierung: Implementierung von Festkomma-Mathematik (Fixed-Point Math) für leistungsstarke Automobil-Algorithmen und Verwendung von constexpr, um den Konfigurations-Overhead von der Laufzeit auf die Kompilierzeit zu verlagern.
Tag 2 — STM32 G474RE Architektur, Peripherie und Hardware-I/O
- ARM Cortex-M4 Architektur: Wechsel von der veralteten 8-Bit-AVR- zur 32-Bit-ARM-Architektur. Untersuchung der Speicherstruktur, CPU-Kernfunktionen, der wichtigsten Register, Adressierungsmodi und der Stack-Pointer-Mechanik.
- Hardware-I/O & Peripherie: Bare-Metal-Konfiguration von I/O-Ports (GPIO), Einrichtung fortschrittlicher Timer, Analog-Digital-Wandler (ADC) und PWM-Erzeugung für präzise Motorsteuerung und Sensordatenerfassung.
- Fortgeschrittener Datentransfer: Nutzung von Speicherbussen, Peripherieanschlüssen und Direct Memory Access (DMA)-Controllern. Verständnis von DMA-Speicherbeschränkungen, Anwendung von DMA-Masken und Implementierung effizienter, nicht blockierender DMA-Muster.
- Projekt-Speicherstrategien: Entwurf und Integration von Memory Pools, Ringpuffern und Zero-Copy-Pipelines, um rohe Sensordaten nahtlos und ohne dynamische Laufzeit-Heap-Zuweisungen zur Steuerungslogik zu leiten.
Tag 3 — Nebenläufigkeit (Concurrency), RTOS und Zeitmanagement
- Interrupt-Behandlung (ARM NVIC): Beherrschung des Nested Vectored Interrupt Controllers. Best Practices für das Schreiben von Interrupt Service Routines (ISRs) — genau identifizieren, was zu tun ist und was nicht, Gewährleistung von ISR-sicherem Code und Nutzung aufschiebbarer Funktionen (Deferrable Functions).
- RTOS-Grundlagen & Task-Scheduling: Kernkonzepte des Echtzeit-Schedulings, Verständnis von Context Switching, Thread-Lebenszyklen und Vergleich von kooperativen versus präemptiven Scheduling-Mechanismen innerhalb von Embedded-Grenzen.
- Scheduling-Algorithmen: Analyse periodischer versus sporadischer Tasks, Vergleich von Rate-Monotonic- und EDF-Algorithmen (Earliest Deadline First) und Erforschung von Techniken zur genauen Schätzung der Worst-Case Execution Time (WCET).
- Synchronisation & gemeinsam genutzte Ressourcen: Sichere gemeinsame Nutzung von Ressourcen mithilfe von Mutexen (Vergleich robuster vs. nicht-robuster Richtlinien), Identifizierung kritischer Probleme der Prioritätsinversion und Implementierung von Priority Ceilings zum Schutz des Ausführungsflusses.
Tag 4 — Softwarearchitektur, Zustandsautomaten und finale Integration
- Objektorientierte Methoden für Leistung: Native Implementierung von Konstruktoren und Destruktoren und wie die Toolchain sie unterstützt. Bewertung von statischem vs. dynamischem Polymorphismus, Nutzung von CRTP (Curiously Recurring Template Pattern) und Anwendung des Pimpl-Idioms für saubere Embedded-Schnittstellen.
- Zustandsautomaten richtig gemacht (State Machines Done Right): Verwaltung komplexer Logik in Automobilanwendungen durch robuste Zustandsautomaten. Aufbau von Zustandshierarchien, Unterscheidung von Mealy-/Moore-Modellen, Management von Betriebsmodi und Gewährleistung sicherer Code-Reentranz.
- Energiemanagement (Power Management): Erforschung von STM32-Systemstromzuständen, Implementierung von Low-Power-Modi und Ausbalancierung von Rechenleistung mit strengen Anforderungen an die Energieeffizienz in Automobilumgebungen.
- Finale Projektintegration: Zusammenbau der Module des autonomen ECU-Simulators (Sensor, Aktor, Manager). Durchführung von praktischem Debugging direkt auf dem STM32 G474RE Board, Durchführung von Code-Reviews und Validierung der finalen Firmware.
Optionale Module
Optional — Automobilstandards & Sicherheitskonformität
- Grundlagen der ISO 26262-Ausrichtung: ASIL-Denkweise, Sicherheitsziele und Überblick über Hardware-Sicherheitsmechanismen.
- Integration der statischen Analyse: Übernahme von MISRA C/C++-Konformitätsgrundlagen und Einbindung grundlegender CI-Smoke-Tests.
Kursablauf
- Teil 1: 09:00–10:30
- Pause: 10:30–10:45
- Teil 2: 10:45–12:15
- Mittagspause: 12:15–13:15
- Teil 3: 13:15–15:15
- Pause: 15:15–15:30
- Teil 4: 15:30–17:30