Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

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

Die steigende Komplexität in Embedded-Softwareapplikationen und die immer leistungsfähigere Hardware erlauben inzwischen, C++ in steigendem Maße auch in Embedded-Systemen einzusetzen. Dabei sind abhängig von der Applikation Qualitätsmerkmale wie Sicherheit (Safety und Security), Performance, Ressourcenverbrauch und andere zu berücksichtigen.

  • Inhalt
     
  • Ziele -
    Ihr Nutzen
  • Teilnehmer
     
  • Voraussetzungen
     

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.

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.

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

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-Peripherie-Treibern
  • Objektorientierte Konzepte und Programmierung von Interrupt-Behandlungen
  • Kommunikation und Protokolle
  • Übung: Sie binden einen Treiber und einen 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 CortexTM 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.


Im Preis enthalten:

Mittagessen, Getränke, Trainingsunterlagen und Teilnahmezertifikat


Für Personalabteilungen

Sie können in unserem Online-Formular bis zu 5 Teilnehmer auf ein Training buchen.
Möchten Sie mehrere Teilnehmer auf verschiedene Trainings buchen, kontaktieren Sie uns bitte!

Bitte beachten Sie auch unser Bonusprogramm bei der gleichzeitigen Buchung von mehreren Trainings und/oder Teilnehmern.

Für Personalabteilungen

Verwandte Trainings

Embedded C++: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++ und UML
Trainings-Code: EC++

Embedded C Schulung: Programmiermethoden und -tools für Embedded-Anwendungen
Trainings-Code: EMB-C

DSP-Grundlagen: Applikationen mit dem Mikrocontroller
Trainings-Code: DSP-WORK

RTOS-Grundlagen und Anwendung: Mechanismen und deren Einsatz in Laufzeit-Architekturen für Embedded- und Echtzeitsysteme
Trainings-Code: RTOS-ARCH

OSEK-Grundlagen
Trainings-Code: OSEK

Embedded-Multicore-Mikrocontroller in der Praxis
Trainings-Code: µC-MULTI

UML-Schulung: UML-Grundlagen und Einstieg in die modellbasierte Softwareentwicklung
Trainings-Code: UML-G

Software-Architektur-Schulung für Embedded-Systeme und Echtzeitsysteme
Trainings-Code: EMB-ARCH


Verwandte Trainings

Offenes Training

Für die mit gekennzeichneten Termine bieten wir eine Durchführungsgarantie an.

TerminPreis *Dauer
11.12. – 15.12.20172.250,00 €4,5 Tage
04.06. – 08.06.20182.250,00 €4,5 Tage 
17.09. – 21.09.20182.250,00 €4,5 Tage 
17.12. – 21.12.20182.250,00 €4,5 Tage 
Anmeldecode: EC++/FOR
* Alle Preise zzgl. der gesetzlichen USt.


> Download Blanko-Anmeldeformular
> Trainingsbeschreibung als PDF

Inhouse Training

In maßgeschneiderten Workshops kombinieren wir Ihre konkreten Projektaufgaben mit unserem Trainingsangebot. Dabei berücksichtigen wir Ihre Anforderungen bezüglich Inhalt, Zeit, Ort, Dauer, technischem Umfeld und Vermittlungsmethodik.

Für Ihre Anfrage oder weiterführende Informationen stehen wir Ihnen gern zur Verfügung.

> Trainingsbeschreibung als PDF

Coaching

Unsere Coaching-Angebote bieten den großen Vorteil, dass unsere Experten ihr Wissen und ihre Erfahrungen direkt in Ihren Lösungsprozess einbringen und damit unmittelbar zu Ihrem Projekterfolg beitragen.

Für Ihre Anfrage oder weiterführende Informationen stehen wir Ihnen gern zur Verfügung.

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

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-Peripherie-Treibern
  • Objektorientierte Konzepte und Programmierung von Interrupt-Behandlungen
  • Kommunikation und Protokolle
  • Übung: Sie binden einen Treiber und einen 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 CortexTM 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.

Merkzettel


Sie haben derzeit keine Trainings auf dem Merkzettel.