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

Modernes C-Programmierung – Fortgeschrittene Themen

Fortgeschritten
21 h
4.9 (721 Bewertungen)
Modernes C-Programmierung – Fortgeschrittene Themen

Modernes C-Programmierung – Fortgeschrittene Themen: Essentielle C-Features für Embedded-Projekte meistern – vom Linker-Interna bis zu State Machines.

Hands-on mit Arrays, Pointern, objektorientierten Mustern in C und fortgeschrittenen Embedded-Konzepten (AVR-Fokus).

Die Entwicklung der C-Standards nachvollziehen und verstehen, wie neue Konstrukte Embedded-Code beeinflussen.

Praktische Erfahrung sammeln durch umfangreiche Labs (~70%), die reale Codebasen widerspiegeln.

Wie dieser Kurs hilft: Robuste, portable und effiziente Embedded-Software sicher entwickeln.

Für wen: konzipiert für Personen mit C-Erfahrung, die ihre Embedded-Expertise vertiefen möchten.

Am Ende wirst du komplexe Systeme in C souverän implementieren – von ISRs bis zu Low-Power-Design.

Curriculum

Essentielles C
  • Aufgaben des Linkers (im Detail)
  • Ausführungskontext von Anwendungen
  • ABI-Formate
  • Fallstricke bei Promotion und Overflow
  • Pointers
  • Arbeiten mit mehrdimensionalen Arrays
  • Fallstricke bei Arrays und C strings
  • Komplexe Datentypen
  • Inlining – erneut betrachtet
  • Portabilitätsprobleme und Lösungen
  • Undefined behaviors
Objektorientierte Methoden in C
  • Konstruktoren und Destruktoren sowie Toolchain-Unterstützung
  • "Virtual methods" in C und ihre Vorteile
  • "Inheritance" und "polymorphism"
  • Performance-Verbesserungen
State Machines richtig umsetzen
  • Zustandsrepräsentation (Enums, Function Pointers)
  • Transitionstabellen und Guards
  • Hierarchische State Machines (HSM)
  • Event-getriebene Architektur für Embedded-Systeme
Entwicklung der Sprache C
  • Neuere Sprachkonstrukte (Keywords, Trigraphs, Digraphs)
  • C11 _Generic und type-generic Macros
  • C11/C18-Updates mit Relevanz für Embedded-Codebasen
Umgang mit variabler Argumentanzahl
  • Grundlagen von varargs
  • Sicherheitsaspekte (Format-Strings, Grenzen, Undefined Behavior)
Embedded-Programmierung (AVR-Fokus)
  • Überblick zur AVR-Architektur (Memory, CPU)
  • Wichtige Register und Adressierungsarten
  • Zentrale AVR-Instruktionen
  • Timers
  • I/O ports
  • ADC
  • PWM
  • Interrupt handling
  • AVR interrupts und der Interrupt-Vektor
  • ISRs schreiben: Do's & Don'ts, Beispiele
  • Deferrable functions und deferred work
  • Zeitmanagement mit Timern
  • Timer-Betriebsmuster
  • RTOS-Grundlagen
  • Scheduling: Threads, Context Switching, Schedulertypen
  • Einen Task Scheduler für präzises Timing implementieren
  • Mutexes (Typen, robust vs. non-robust, Policy)
  • MMU-Grundlagen
  • Hardware-I/O: Busse und Ports
  • Register-Recap (GPIO/ADC/PWM/Watchdog)
  • Power Management und System-Power-States
Fortgeschrittenes Embedded C (zusätzlich)
  • C11 atomics vs. volatile; Memory Order und lock-free Patterns (wo anwendbar)
  • Ringpuffer für ISR ⇄ Main-Kommunikation (Single-Producer/Single-Consumer)
  • DMA-Grundlagen und Zero-Copy-I/O (wo verfügbar)
  • Linker Scripts und Speichersektionen (.text/.data/.bss/.rodata, Custom Placement)
  • Startup Code und Boot-Sequenz (Reset Vector, crt0, Initialisierungsreihenfolge)
  • Interrupt-Latenz, kritische Abschnitte und Determinismus
  • Tickless Scheduling und Timer mit geringem Jitter
  • Festkommaarithmetik und Sättigungsarithmetik
  • MISRA C-Überblick und praktischer Umgang mit Abweichungen
  • Testing auf Embedded-Zielen: Unity/CMock, Fakes und HIL
  • Abstraktionsstrategien: HAL vs. Registerzugriff; Compile-Time-Konfiguration
  • Low-Power-Design: Schlafmodi, Clock Gating, Wake-up-Quellen

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