C++ für Embedded-Applikationen
- Historie
- Spezielle Qualitätsanforderungen an Embedded-Software
- Empfehlungen und Regelwerke (Codier-Richtlinien)
- C++ Compiler-Prinzipien
- Ausblicke: C++ Idiome und Clean Code Development
- Praxistipp mit wichtigen Referenzen
Zusammenfassung grundlegender C++ Konstrukte mit Effizienzbetrachtungen
- Klasse und Objekt
- Bestandteile von Klassen
- Modifizierer für Daten, Funktionen und Objekte
- Klassen-Funktionszeiger am Beispiel Zustandsfolgeautomaten-Implementierung
- Klassenrelationen (Assoziation, Aggregation, Komposition und Vererbung)
- Virtuelle Funktionen und Interfaces (Realisierung und Zugriff)
- Erweiterte C++ Konstrukte
Namespaces mit Effizienzbetrachtungen
- Verwendung von (verschachtelten) Namespaces im Programmcode
- Namespace Alias, anonymer Namespace, Koenig-Lookup, inline Namespace
- Abbildung der Software-Architektur im Programmcode
- C++ Standard-Namespace std
- Anwendungsbeispiele und Empfehlungen zur Verwendung in 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 und Empfehlungen zur Verwendung in Embedded-Software
- Übung: Sie verwenden und programmieren die Mehrfachvererbung, wahlweise virtuell
Exception Handling mit Effizienzbetrachtungen
- Exception Handling - Erläuterung und Programmierung
- Exception-Klassen und -Hierarchien
- Benutzer-Exceptions
- C++ System-Exceptions
- Verschachteltes Exception Handling
- Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
- Anwendungsbeispiele und Empfehlungen zur Verwendung inEmbedded-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 mit und ohne Exception Handling
- Operatorüberladung von new und delete
- Pool-Allocation Pattern
- Placement new
- Risiken und Stolpersteine vermeiden
- Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
- Anwendungsbeispiele und Empfehlungen zur Verwendung in Embedded-Software
- Übung: Sie erzeugen und löschen Objekte dynamisch auf dem Heap
Runtime Type Identification (RTTI) mit Effizienzbetrachtungen
- Erläuterung und Programmierung von RTTI
- type_info Klasse
- Konsequenzen beim Einsatz
- Bezug zu Exception Handling und New Style Casts
- Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
- Anwendungsbeispiele und Empfehlungen zur Verwendung in Embedded-Software
- Ü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 und Empfehlungen zur Verwendung in Embedded-Software
Templates mit Effizienzbetrachtungen
- Template-Funktionen
- Template-Klasse und -Objekt
- Template-Parameter und -Alias
- Vererbung und Interfaces mit Template-Klassen
- Praxistipps: Statische versus dynamische Polymorphie
- CRTP (Curiously Recurring Template Pattern)
- Template-Spezialisierung und (implizite versus explizite) -Instanziierung
- Type Traits und Concepts
- Variadische Template-Funktionen und -Klassen
- Perfekt Forward
- Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
- Anwendungsbeispiele und Empfehlungen zur Verwendung inEmbedded-Software
- Übung: Sie programmieren eine Template-Klasse zur Anwendung im Observer-Pattern-Kontext der Applikation
Smart Pointer, sinnvoller Einsatz mit Effizienzbetrachtungen
- Besonderheiten und Varianten von Smart Pointer
- Programmierung eigener Smart Pointer
- C++ Smart Pointer
- Lambda-Funktionen
- Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
- Anwendungsbeispiele und Empfehlungen zur Verwendung in Embedded-Software
C++ Standard-Bibliothek: Container, Iteratoren und Algorithmen, sinnvoller Einsatz und Effizienzbetrachtungen
- Grundlegende Konzeptübersicht
- Container, Iteratoren, Adapter, Algorithmen
- Differenzierung und Vorstellung unterschiedlicher Container
- Container für sequenzielle, sortierende und spezielle Anwendungsfälle
- Funktionsobjekte (Funktoren)
- Lambda-Funktionen
- Allocator-Klasse
- Assembler-, Speicher- und Laufzeit-Analysen und -Optimierungen
- Anwendungsbeispiele und Empfehlungen zur Verwendung in Embedded-Software
- Übung: Sie verwenden eine Container-Klasse im Observer-Pattern-Kontext der Applikation
Callback
- Embedded-Software-Architekturrichtlinien
- Embedded-Software-Qualitätsmerkmale
- Software-Layer-Pattern: Embedded-Software-Schichtenarchitektur
- Synchrone und asynchrone Software-Architektur
- Unidirektionale und bidirektionale Kommunikation
- Callback-Struktur mit und ohne Betriebsmittel eines Betriebssystems
Hardware-Treiber und Interrupts mit C++
- Objektorientierte Konzepte und Programmierung von Standard-Peripherietreibern
- Objektorientierte Konzepte und Programmierung von Interrupt-Behandlungen
- Registerbank-Zugriff
- Callback-Strukturen im Interrupt-Kontext
- Anwendungsbeispiele und Empfehlungen zur Verwendung in Embedded-Software
- Übung: Sie binden einen Hardwaretreiber und Interrupt-Service in die Applikation ein
Ausgewählte C++ Bibliothekselemente
- std::string und std::string_view
- iosteam und iomanip
- std::stringstream
- std::function, std::optional, std::variant und std::any
- Anwendungsbeispiele und Empfehlungen zur Verwendung in Embedded-Software
Praktische Übungen im Workshop
- Für die durchgängige Übung (Uhrenapplikation) verwenden Sie die STM32CubeIDE Entwicklungsumgebung zusammen mit den STM32 NUCLEO-F746ZG Evaluation Board, basierend auf einem Arm Cortex®-M7 Mikrocontroller.
MicroConsult PLUS:
- Sie erhalten von uns Ihre Übungsverzeichnisse und Lösungsbeispiele für alle Übungsaufgaben.
- Sie erhalten alle C++ Beispiele in elektronischer Form und können diese sehr einfach für Ihre Entwicklungsumgebung anpassen.
- Sie erhalten eine Zusammenfassung von skalierbaren Empfehlungen zur Anwendung von C++ in Embedded-Software als Checkliste.
- Sie erhalten zudem eine Tool- und Software-Komponentenübersicht für die Entwicklung von Embedded-Software.
- Sie bekommen hilfreiche Notationsübersichten für UML und SysML.
C++ für Embedded-Applikationen
- Historie
- Spezielle Qualitätsanforderungen an Embedded-Software
- Empfehlungen und Regelwerke (Codier-Richtlinien)
- C++ Compiler-Prinzipien
- Ausblicke: C++ Idiome und Clean Code ...
Mehr Informationen >>