logo-mc-rgb-300x300 (MicroConsult)

MicroConsult Academy GmbH

https://www.microconsult.de/

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.