Embedded C++ für Fortgeschrittene: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++ - Seminar / Kurs von MicroConsult GmbH

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

Inhalte

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.

MicroConsult Plus:

  • Als Teilnehmer haben Sie die folgenden Möglichkeiten, um Ihre Übungen und die von MicroConsult entwickelten Lösungen aus dem Workshop mitzunehmen:
  • Sie nehmen die Dateien direkt auf einem von MicroConsult bereitgestellten kostenfreien USB-Stick mit, oder …
  • Sie senden sich die Dateien selbst per E-Mail zu, oder …
  • Sie erhalten auf Anfrage Zugriff auf die Dateien per Download.
  • Sie erhalten alle C++ Beispiele in elektronischer Form und können diese sehr einfach für Ihr Entwicklungsenvironment anpassen.
  • Sie erhalten zudem eine Tool- und Software-Komponentenübersicht für die Entwicklung von Embedded-Software.
  • Sie bekommen hilfreiche Notationsübersichten für UML (Unified Modeling Language) und SysML (Systems Modeling Language) im A3 Format.

Lernziele

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.

Zielgruppen

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.

Termine und Orte

Datum Dauer Preis
München, DE
11.10.2021 - 14.10.2021 32 h Jetzt buchen ›
13.12.2021 - 16.12.2021 32 h Jetzt buchen ›
21.02.2022 - 24.02.2022 32 h Jetzt buchen ›

SG-Seminar-Nr.: 5330794

Anbieter-Seminar-Nr.: EC++FOR

Termine

  • 11.10.2021 - 14.10.2021

    München, DE

  • 13.12.2021 - 16.12.2021

    München, DE

  • 21.02.2022 - 24.02.2022

    München, DE

Preise inkl. MwSt. Es können Gebühren anfallen. Für eine exakte Preisauskunft wählen Sie bitte einen Termin aus.

Jetzt buchen ›
Seminar merken ›

Semigator berücksichtigt

  • Frühbucher-Preise
  • Last-Minute-Preise
  • Gruppenkonditionen

und verfügt über Sonderkonditionen mit einigen Anbietern.

Der Anbieter ist für den Inhalt verantwortlich.

Über Semigator mehr erfahren

  • Anbietervergleich von über 1.500 Seminaranbietern
  • Vollständige Veranstaltungsinformationen
  • Schnellbuchung
  • Persönlicher Service
Datum Dauer Preis
München, DE
11.10.2021 - 14.10.2021 32 h Jetzt buchen ›
13.12.2021 - 16.12.2021 32 h Jetzt buchen ›
21.02.2022 - 24.02.2022 32 h Jetzt buchen ›