Embedded C++ für Fortgeschrittene: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++ (Seminar)
Datum:
07.09.2026 - 10.09.2026
Veranstaltungsort:
München, MicroConsult
Beschreibung:
MicroConsult Academy GmbH
Inhalt
C++ für Embedded-Applikationen
Historie
Empfehlungen und Regelwerke
C++ Compiler-Prinzipien
Praxistipp mit wichtigen Referenzen
Zusammenfassung grundlegender C++ Konstrukte mit Effizienzbetrachtungen
Klasse und Objekt
Bestandteile von Klassen
Modifizierer für Daten, Funktionen und Objekte
Klassenrelationen (Assoziation, Aggregation, Komposition und Vererbung)
Virtuelle Funktionen und Interfaces
Namespaces mit Effizienzbetrachtungen
Verwendung von Namespaces im Programmcode
Namespace Alias, anonymer Namespace, Koenig-Lookup
Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
Anwendungsbeispiele in der Embedded-Software
Übung: Basierend auf der Architektur arbeiten Sie Namespaces in den bestehenden Programmcode ein
Einfachvererbung und Mehrfachvererbung mit Effizienzbetrachtungen
Programmierung der Einfach- und Mehrfachvererbung (mit Interfaces)
Problemsituationen und Lösungen bei der Mehrfachvererbung
Virtuelle Vererbung
Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
Anwendungsbeispiele in der Embedded-Software
Übung: Sie verwenden und programmieren die Mehrfachvererbung, wahlweise virtuell
Exception Handling mit Effizienzbetrachtungen
Erläuterung und Programmierung Exception Handling
Exception-Klassen und -Hierarchien
Benutzer-Exceptions
C++ Standard-Exceptions
Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
Anwendungsbeispiele in der Embedded-Software
Übung: Sie binden Exception Handling in die bestehende Applikation ein
Speichermanagement mit Effizienzbetrachtungen
Speichersegmente (BSS, Stack, Heap) für Objekte im Vergleich
Dynamisches Speichermanagement mit new und delete
Operatorüberladung mit new und delete
Risiken und Stolpersteine vermeiden
Placement new
Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
Anwendungsbeispiele in der Embedded-Software
Übung: Sie erzeugen und löschen Objekte dynamisch auf dem Heap
Runtime Type Identification (RTTI)
Erläuterung und Programmierung von RTTI
type_info Klasse
Konsequenzen beim Einsatz
Bezug zu Exception Handling
Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
Übung: Sie verwenden RTTI zur Klassenidentifikation zur Laufzeit
Typkonvertierung mit New Style Casts mit Effizienzbetrachtungen
Static, dynamic, const und reinterpret Cast
Die richtige Wahl beim Einsatz
Bezug zu RTTI und Exception Handling
Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
Anwendungsbeispiele in der Embedded-Software
Templates
Template-Funktionen
Template-Klasse und -Objekt
Template-Parameter
Vererbung und Interfaces mit Template-Klassen
Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
Praxistipps: Statische versus dynamische Polymorphie
Anwendungsbeispiele in der Embedded-Software
C++ Bibliotheken, sinnvoller Einsatz und Effizienzbetrachtungen
C++ String Klasse
Input/Output Stream Library (I/O Stream)
Stringstreams
Standard Template Library (STL)
Container, Iteratoren, Adapter, Algorithmen
Funktionsobjekte
Smart Pointer (intelligente Zeiger)
Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
Anwendungsbeispiele in der Embedded-Software
Übung: Sie verwenden die String-Klasse in der Applikation und implementieren Container-basierend das Observer-Pattern
Zustandsautomaten Implementierung und Effizienzbetrachtungen
Prinzipielle Möglichkeiten der objektorientierten Implementierung und Modellierung
Implementierung auf Basis von switch-case / if-else Konstrukt
Implementierung auf Basis von Tabellenabarbeitung
Implementierung auf Basis des State-Patterns und Singleton-Patterns
Vergleich und Bewertung der verschiedenen Implementierungsarten
Vererbung von Zustandsfolgeautomaten
Praxistipp: Framework zur Zustandsautomaten-Implementierung
Besonderheiten bei der Programmierung von (quasi) paralleler Software
Race Conditions
Ressourcen-Management, Semaphore, Mutex
Problemsituationen und Lösungen
Granularität von Ressourcen
Thread-safe Programmierung
Praxistipp: Risiken erkennen und Stolpersteine vermeiden
Betriebssystem-Abstraktion (OSAL Operating System Abstraction Layer) mit C++
Nutzendarstellung, Vorteile, Nachteile
Einsatz von C++
Praxisbeispiel mit FreeRTOS™
Hardware-Abstraktionen, Hardware-Treiber und Interrupts mit C++
Software-Qualitätsmerkmale
Layer-Pattern und Anwendungsbeispiele in Embedded-Software
Layer-Kommunikation und Callback-Mechanismen
Objektorientierte Konzepte und Programmierung von Standard-Peripherietreibern
Objektorientierte Konzepte und Programmierung von Interrupt-Behandlungen
Kommunikation und Protokolle
Übung: Sie binden einen Treiber und Interrupt-Service in die Applikation ein
Praktische Übungen im Workshop
Für die durchgängige Übung (Uhrenapplikation) verwenden Sie das Arm Keil MDK (Microcontroller Development Kit) zusammen mit einer realen Hardware basierend auf einem Arm Cortex™-M3 Mikrocontroller.