Edocti Training
Modernes C-Programmierung – Fortgeschrittene Themen
Geplante Sessions
Aktuell sind keine Termine verfügbar.
Fähigkeiten, die Sie lernen werden
Linker-Interna
Pointer & Speicher
OOP in C
State Machines
Modernes C (C11/C18)
AVR-Architektur
RTOS & ISR-Basics
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