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

Fortgeschrittenes C und C++ für Embedded Systems

Fortgeschritten
28 h
4.8 (142 Bewertungen)

Geplante Sessions

Aktuell sind keine Termine verfügbar.
Fortgeschrittenes C und C++ für Embedded Systems

Fortgeschrittene Embedded-Programmierung: Wechseln Sie von einfachen Plattformen wie Arduino oder AVR zu branchenüblichen ARM Cortex-M4-Mikrocontrollern, mit speziellem Fokus auf den STM32 G474RE.

Sammeln Sie praktische Erfahrungen durch den Bau eines kompletten Automotive-ECU-Simulators, wobei die Teamverantwortlichkeiten zwischen Sensordatenerfassung, präziser Motorsteuerung und zentralem Systemmanagement aufgeteilt werden.

Wenden Sie moderne C- und C++-Praktiken an, um komplexe Hardwarebeschränkungen zu lösen, die Speicherverwaltung zu optimieren und Echtzeit-Scheduling-Herausforderungen ohne den Overhead schwerer Abstraktionen zu meistern.

Sammeln Sie praktische Erfahrungen durch intensive Programmierlabore (ca. 70 % des Kurses), die direkt mit Automotive-Anwendungsfällen, Interaktionen auf Hardwareebene und fortgeschrittenem Debugging verknüpft sind.

Für wen es gedacht ist: Entwickelt für Softwareingenieure mit grundlegenden C-Kenntnissen, die fortgeschrittene Konzepte, direkten Hardwarezugriff und modernes C++ in ressourcenbeschränkten Umgebungen meistern möchten.

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

Haben Sie an diesem Kurs teilgenommen?

Ihre Meinung ist uns sehr wichtig. Teilen Sie Ihre Erfahrungen mit uns und helfen Sie uns, diesen Kurs für zukünftige Teilnehmer weiter zu verbessern.

Feedback teilen

Möchten Sie mehr erfahren? Wir helfen Ihnen gern!

Oder schreiben Sie uns direkt an training@edocti.com.