Embedded C++ für Fortgeschrittene: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++

Vor Ort
Online
Inhouse
StandorteMünchen, Online
Dauer32 Stunden
SpracheDeutsch
Kurstermine 3 Startdaten
Preis ab 3.094,00 € inkl. MwSt.

Beschreibung

  • Sie kennen die Anwendung und die Effizienz fortgeschrittener C++ Konstrukte (Namespaces, Templates, Exception Handling, Runtime Type Identification, New Style Casts, Mehrfachvererbung, Speichermanagement).
  • Sie sind in der Lage, über die Verwendung dieser Konstrukte in Ihrer Applikation fundiert zu entscheiden.
  • Sie haben einen Überblick über die Elemente und Mechanismen der STL (Standard Template Library) und können diese bereits einsetzen.
  • Sie können Patterns (State-Pattern, Singleton-Pattern, Observer-Pattern, Smart-Pointer-Pattern und Layer-Pattern) auf Ihre Applikationen hin adaptieren und dort implementieren.

Inhalte

  • 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 in 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 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 in Embedded-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 das Arm Keil MDK (Microcontroller Development Kit) zusammen mit einer realen oder simulierten Hardware basierend auf einem Arm Cortex®-M3 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.

Zielgruppe

  • Der EC++ Kurs für Fortgeschrittene richtet sich an Programmierer, Software-Entwickler, Software-Designer und Software-Architekten, die fortgeschrittene C++ Konstrukte in der Embedded-Softwareentwicklung einsetzen.

Voraussetzungen

  • Objektorientierte C++ Grundlagen sind zwingend erforderlich, UML-Grundlagen von Vorteil.

Zertifikate

Unterschriebenes Teilnahmezertifikat

Weitere Infos

Haben Sie Fragen zu diesem Kurs? Füllen Sie das folgende Formular aus und wir melden uns bei Ihnen.

Kostenlose Beratung
Sichere Anfrage
Geprüfter Anbieter

Über den Anbieter

MicroConsult Academy GmbH

Ein zertifizierter Anbieter für qualitativ hochwertige Kurse und Schulungen.

Mehr über MicroConsult Academy GmbH