Experience Embedded

Professionelle Schulungen, Beratung und Projektunterstützung

Embedded C++: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++ und UML - Präsenz-Training

Meistern Sie die Herausforderung bei der Softwareentwicklung für Hard-Realtime-Systeme: Die heutigen Embedded-Systeme mit komplexen Mikrocontroller- und Prozessorarchitekturen enthalten immer mehr Software, die aber in immer kürzerer Zeit geplant und realisiert werden muss. Häufig sind Vorgaben zu erfüllen, in denen Normen und sicherheitskritische Aspekte berücksichtigt werden müssen. Echtzeitfähigkeit, Wiederverwendbarkeit, Anpassbarkeit an veränderte Rahmenbedingungen und leichte Lesbarkeit der Software spielen eine immer größere Rolle.

  • Inhalt
     
  • Ziele -
    Ihr Nutzen
  • Teilnehmer
     
  • Voraussetzungen
     

Sie kennen nach dem EC++ Workshop die Möglichkeiten, die ein objektorientierter Ansatz bietet, um auch in der Embedded-Welt in kürzerer Zeit qualitativ hochwertige Software zu entwickeln.

Der vermittelte Überblick über den gesamten Entwicklungsprozess von Embedded-Realtime-Systemen - Software-Analyse, Software-Design, Software-Implementierung und Unit-Test - gibt Ihnen das Rüstzeug, um Projekte mit EC++ zu erstellen.

Sie wissen, wie Sie das Design von Software-Systemen mithilfe der UML und der Implementierung in der Programmiersprache C++ gestalten.

Damit verfügen Sie über die Wissensbasis zur Erfüllung besonderer Anforderungen an die Software-Qualität von Embedded-Systemen, z.B. im Hinblick auf Laufzeit und Codeeffizienz.

Ferner vermeiden Sie mithilfe von Programmierrichtlinien, z.B. dem MISRA-C++ Standard, frühzeitig Programmierfehler.

Sie entwickeln mit modernen objektorientierten Techniken qualitativ hochwertige und komplexe Softwaresysteme und sparen dabei Zeit und Geld.

Der EC++ Kurs richtet sich an Programmierer, Software-Entwickler, Software-Designer und Software-Architekten, die C++ für Embedded-Softwareapplikationen unter Verwendung objektorientierter Konzepte einsetzen.

Sie sollten über solide C-Programmierkenntnisse verfügen; Mikrocontroller-Grundkenntnisse sind von Vorteil.

Einführung in die objektorientierte Begriffswelt

  • Klasse und Objekt
  • Attribut, Operation, Methode
  • Kapselung
  • Relation (Beziehung) zwischen Klassen
  • Nutzen und Vorteile der objektorientierten Softwareentwicklung
  • Demonstration des objektorientierten Ansatzes an einem Hardwaretreiber-Beispiel

Objektorientiertes Programmieren in C

  • Klassen, Attribute, Operationen und Objekte
  • Möglichkeiten der Kapselung in C
  • Assoziation, Aggregation, Komposition und Vererbung
  • Praxistipps mit bewährten Umsetzungsmöglichkeiten

Einführung in die Programmiersprache C++ (EC++)

  • Migration von objektorientierter Programmierung mit C zu C++/EC++
  • Klasse, Attribute, Operationen und Objekte
  • Möglichkeiten der Kapselung in C++
  • Konstruktoren, Destruktor, Überladen
  • Modifizierer für Daten, Operationen und Objekte
  • Speichermanagement für Objekte
  • Objekt-Initialisierung
  • Namespaces
  • Templates
  • C++ New Style Casts
  • Weitere C++ spezifische Mechanismen und Konstrukte
  • Assembleranalysen von C++ Konstrukten
  • Speicher- und laufzeitorientierte Einschätzung und Optimierung
  • Vergleich zu C
  • Verbesserung von Qualitätsmerkmalen wie Wartbarkeit und Wiederverwendbarkeit
  • Risiken erkennen, Stolpersteine vermeiden
  • Übung: Sie implementieren, instanziieren und testen eine Klasse

Relationen zwischen Klassen und deren Programmierung mit C++

  • Assoziation
  • Aggregation
  • Komposition
  • Vererbung
  • Dependency
  • Richtige Relationsauswahl im Design treffen
  • Varianten der Implementierung mit C++
  • Assembleranalysen von C++ Konstrukten
  • Speicher- und laufzeitorientierte Einschätzung und Optimierung
  • Verbesserung von Qualitätsmerkmalen wie Wartbarkeit und Wiederverwendbarkeit
  • Übung: Sie implementieren die Relationen Assoziation, Vererbung und Komposition in der Applikation und bei der Anwendung des Builder-Patterns

Virtuelle Methoden und Interfaces mit C++

  • Überschreiben von Funktionen / Operationen
  • Dynamische (späte) Bindung
  • Rein virtuelle Funktionen/ Operationen
  • Polymorphismus
  • Von der abstrakten Klasse zur Interface-Klasse
  • Software-Architektur mit Interfaces
  • Nutzen, Vorteile und Nachteile von Interface-Klassen
  • Implementierung mit C++
  • Assembleranalysen von C++ Konstrukten
  • Speicher- und laufzeitorientierte Einschätzung und Optimierung
  • Verbesserung von Qualitätsmerkmalen wie Wartbarkeit und Wiederverwendbarkeit
  • Übung: Sie programmieren eine Interface-Klasse mit rein virtuellen Funktionen, implementieren diese und greifen darauf zu

C++ Klassenbibliotheken

  • Statische versus dynamische Klassenbibliotheken
  • Erzeugung und Einbindung von Klassenbibliotheken
  • Vor- und Nachteile bei der Verwendung in Embedded-Software
  • Demonstration eines Beispiels

Zustandsautomaten mit C++

  • Prinzipielle Möglichkeiten der Implementierung
  • Vorstellung der Tabellen-basierten Abarbeitung von Zustandsautomaten
  • State-Pattern und objektorientiertes State-Pattern
  • Demonstration eines Beispiels

Callback-Strukturen

  • Typische Embedded-SW-Architekturen und deren Darstellung (Schichtenmodell, Interfaces)
  • Architekturrichtlinien
  • Kommunikationsmöglichkeiten zwischen Architekturelementen
  • Objektorientiere Callback-Strukturen mit Callback-Objekten
  • Demonstration eines Beispiels
  • Übung: Sie programmieren eine Callback-Struktur mit Callback-Objekt-Registrierung in der Übungsapplikation

Hardwaretreiber und Interrupts mit C++

  • Treiber- und Interrupt-Richtlinien
  • Hardwaretreiber mit Peripherie-Registerzugriff objektorientiert in C++
  • Interrupt-Konzepte und Interrupt-Service Routinen objektorientiert mit C++
  • Verbesserung von Qualitätsmerkmalen wie Wartbarkeit und Wiederverwendbarkeit
  • Übung: Sie wenden einen objektorientierten Timer-Treiber zusammen mit einem Timer-Interrupt in Ihrer Übungsapplikation an

Übersicht Embedded-Software-Test

  • Software-Implementierung und -Test
  • Testprozess
  • Checkliste zum Test objektorientierter Software
  • Demonstration eines Beispiels mit GoogleTest™

Grundlegende Notationen mit der UML (Unified Modeling Language)

  • Darstellung von Klassen, Objekten und Relationen mit der UML
  • Use-Case-, Sequenz-, Aktivitäten- und Zustandsfolge-Diagramm
  • Demonstration der Übung im UML-Modell - Aspekt: Diagramme

Von der Projektplanung bis zur Implementierung

  • Software-Entwicklungsprozess
  • Qualität von Embedded-Softwaresystemen
  • Praxisgerechte Modellierung einer Embedded-Applikation mit der UML
  • Demonstration der Übung im UML-Modell - Aspekt: Modellentstehung und Aufbau

Ausblicke

  • Historie und Weiterentwicklung von C++
  • Übersicht zu fortgeschrittenen C++ Mechanismen
  • Embedded- und generische C++ Codierrichtlinien
  • Interessante Internet-Links
  • C++ Idiome
  • Clean Code Development

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 oder M7 Mikrocontroller bzw. einem entsprechenden Simulator. Die Übung besteht sowohl aus dem Programmcode als auch dem zugehörigen UML-Modell.

MicroConsult Plus:

  • Sie erhalten von uns Ihre Übungsverzeichnisse und Lösungsbeispiele für alle Übungsaufgaben.
  • Sie bekommen alle C- und 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 Preis enthalten:
Mittagessen, Getränke, Trainingsunterlagen und Ihr Teilnahmezertifikat


ALL INCLUSIVE!

Verwandte Trainings

Embedded C++ für Fortgeschrittene: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++ - Präsenz-Training
Anmeldecode: EC++FOR

Embedded C Schulung: Programmiermethoden und -tools für Embedded-Anwendungen - Präsenz-Training
Anmeldecode: EMB-C

DSP-Grundlagen: Applikationen mit dem Mikrocontroller - Präsenz-Training
Anmeldecode: DSP-G

RTOS-Grundlagen und Anwendung: Mechanismen und deren Einsatz in Laufzeit-Architekturen für Embedded- und Echtzeitsysteme - Präsenz-Training
Anmeldecode: RTOS-AR

Embedded-Multicore-Mikrocontroller in der Praxis - Präsenz-Training
Anmeldecode: µCMULTI

UML-Schulung: UML-Grundlagen und Einstieg in die modellbasierte Softwareentwicklung - Präsenz-Training
Anmeldecode: UML-G

Software-Architektur-Schulung für Embedded-Systeme und Echtzeitsysteme - Präsenz-Training
Anmeldecode: EMB-AR

Rust-Schulung: Grundlagen der Embedded-Rust-Programmierung
Anmeldecode: RUST

Coaching: Embedded- und Echtzeit-Programmierung
Anmeldecode: C-EMB-PRG


Verwandte Trainings

Präsenz-Training

TerminPreis *Dauer
03.06. – 06.06.20242.600,00 €4 Tage 
04.11. – 07.11.20242.600,00 €4 Tage 
10.02. – 13.02.20252.600,00 €4 Tage 
Anmeldecode: EC++
* Preis je Teilnehmer, in Euro zzgl. USt.
> Download Blanko-Anmeldeformular> Trainingsbeschreibung als PDF

Onsite-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

Live-Online - Deutsch

Termin Dauer
16.09. – 19.09.2024 4 Tage  
16.12. – 19.12.2024 4 Tage  
24.03. – 27.03.2025 4 Tage  

Präsenz-Training - Englisch

Termin Dauer
03.06. – 06.06.2024 4 Tage  
04.11. – 07.11.2024 4 Tage  
10.02. – 13.02.2025 4 Tage  

Live-Online - Englisch

Termin Dauer
16.09. – 19.09.2024 4 Tage  
16.12. – 19.12.2024 4 Tage  
24.03. – 27.03.2025 4 Tage  

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.

Coaching: Embedded- und Echtzeit-Programmierung

Embedded C++: Objektorientierte Programmierung für Mikrocontroller mit C++/EC++ und UML - Präsenz-Training

Inhalt

Einführung in die objektorientierte Begriffswelt

  • Klasse und Objekt
  • Attribut, Operation, Methode
  • Kapselung
  • Relation (Beziehung) zwischen Klassen
  • Nutzen und Vorteile der objektorientierten Softwareentwicklung
  • Demonstration des objektorientierten Ansatzes an einem Hardwaretreiber-Beispiel

Objektorientiertes Programmieren in C

  • Klassen, Attribute, Operationen und Objekte
  • Möglichkeiten der Kapselung in C
  • Assoziation, Aggregation, Komposition und Vererbung
  • Praxistipps mit bewährten Umsetzungsmöglichkeiten

Einführung in die Programmiersprache C++ (EC++)

  • Migration von objektorientierter Programmierung mit C zu C++/EC++
  • Klasse, Attribute, Operationen und Objekte
  • Möglichkeiten der Kapselung in C++
  • Konstruktoren, Destruktor, Überladen
  • Modifizierer für Daten, Operationen und Objekte
  • Speichermanagement für Objekte
  • Objekt-Initialisierung
  • Namespaces
  • Templates
  • C++ New Style Casts
  • Weitere C++ spezifische Mechanismen und Konstrukte
  • Assembleranalysen von C++ Konstrukten
  • Speicher- und laufzeitorientierte Einschätzung und Optimierung
  • Vergleich zu C
  • Verbesserung von Qualitätsmerkmalen wie Wartbarkeit und Wiederverwendbarkeit
  • Risiken erkennen, Stolpersteine vermeiden
  • Übung: Sie implementieren, instanziieren und testen eine Klasse

Relationen zwischen Klassen und deren Programmierung mit C++

  • Assoziation
  • Aggregation
  • Komposition
  • Vererbung
  • Dependency
  • Richtige Relationsauswahl im Design treffen
  • Varianten der Implementierung mit C++
  • Assembleranalysen von C++ Konstrukten
  • Speicher- und laufzeitorientierte Einschätzung und Optimierung
  • Verbesserung von Qualitätsmerkmalen wie Wartbarkeit und Wiederverwendbarkeit
  • Übung: Sie implementieren die Relationen Assoziation, Vererbung und Komposition in der Applikation und bei der Anwendung des Builder-Patterns

Virtuelle Methoden und Interfaces mit C++

  • Überschreiben von Funktionen / Operationen
  • Dynamische (späte) Bindung
  • Rein virtuelle Funktionen/ Operationen
  • Polymorphismus
  • Von der abstrakten Klasse zur Interface-Klasse
  • Software-Architektur mit Interfaces
  • Nutzen, Vorteile und Nachteile von Interface-Klassen
  • Implementierung mit C++
  • Assembleranalysen von C++ Konstrukten
  • Speicher- und laufzeitorientierte Einschätzung und Optimierung
  • Verbesserung von Qualitätsmerkmalen wie Wartbarkeit und Wiederverwendbarkeit
  • Übung: Sie programmieren eine Interface-Klasse mit rein virtuellen Funktionen, implementieren diese und greifen darauf zu

C++ Klassenbibliotheken

  • Statische versus dynamische Klassenbibliotheken
  • Erzeugung und Einbindung von Klassenbibliotheken
  • Vor- und Nachteile bei der Verwendung in Embedded-Software
  • Demonstration eines Beispiels

Zustandsautomaten mit C++

  • Prinzipielle Möglichkeiten der Implementierung
  • Vorstellung der Tabellen-basierten Abarbeitung von Zustandsautomaten
  • State-Pattern und objektorientiertes State-Pattern
  • Demonstration eines Beispiels

Callback-Strukturen

  • Typische Embedded-SW-Architekturen und deren Darstellung (Schichtenmodell, Interfaces)
  • Architekturrichtlinien
  • Kommunikationsmöglichkeiten zwischen Architekturelementen
  • Objektorientiere Callback-Strukturen mit Callback-Objekten
  • Demonstration eines Beispiels
  • Übung: Sie programmieren eine Callback-Struktur mit Callback-Objekt-Registrierung in der Übungsapplikation

Hardwaretreiber und Interrupts mit C++

  • Treiber- und Interrupt-Richtlinien
  • Hardwaretreiber mit Peripherie-Registerzugriff objektorientiert in C++
  • Interrupt-Konzepte und Interrupt-Service Routinen objektorientiert mit C++
  • Verbesserung von Qualitätsmerkmalen wie Wartbarkeit und Wiederverwendbarkeit
  • Übung: Sie wenden einen objektorientierten Timer-Treiber zusammen mit einem Timer-Interrupt in Ihrer Übungsapplikation an

Übersicht Embedded-Software-Test

  • Software-Implementierung und -Test
  • Testprozess
  • Checkliste zum Test objektorientierter Software
  • Demonstration eines Beispiels mit GoogleTest™

Grundlegende Notationen mit der UML (Unified Modeling Language)

  • Darstellung von Klassen, Objekten und Relationen mit der UML
  • Use-Case-, Sequenz-, Aktivitäten- und Zustandsfolge-Diagramm
  • Demonstration der Übung im UML-Modell - Aspekt: Diagramme

Von der Projektplanung bis zur Implementierung

  • Software-Entwicklungsprozess
  • Qualität von Embedded-Softwaresystemen
  • Praxisgerechte Modellierung einer Embedded-Applikation mit der UML
  • Demonstration der Übung im UML-Modell - Aspekt: Modellentstehung und Aufbau

Ausblicke

  • Historie und Weiterentwicklung von C++
  • Übersicht zu fortgeschrittenen C++ Mechanismen
  • Embedded- und generische C++ Codierrichtlinien
  • Interessante Internet-Links
  • C++ Idiome
  • Clean Code Development

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 oder M7 Mikrocontroller bzw. einem entsprechenden Simulator. Die Übung besteht sowohl aus dem Programmcode als auch dem zugehörigen UML-Modell.

MicroConsult Plus:

  • Sie erhalten von uns Ihre Übungsverzeichnisse und Lösungsbeispiele für alle Übungsaufgaben.
  • Sie bekommen alle C- und 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).