Embedded C++ Kurs

Die Standardbibliothek, Templates und Lambda-Ausdrücke

Eine Weiterführung des Grundkurses: Die Standardbibliothek, Templates, Lambda-Ausdrücke, ausgewählte Sprachelemente von C++17 und C++20 und die MISRA C++:2023 Guidelines. Ein Training für professionelle Entwickler von embedded Systemen, z.B. für Mikrocontroller wie ARM, STM32 usw.

Dieser Kurs richtet sich an alle, die die Vorteile von modernem C++ nutzen wollen. Das können Entwickler sein, die schon lange mit C++ arbeiten und einen Überblick über die Fülle der neuen Features suchen. Oder auch C Programmierer, die auf C++ umsteigen wollen. Dieser Kurs deckt zusammen mit dem Grundkurs alle Themen ab, die für die Programmierung von embedded Anwendungen mit C++ wichtig sind.

Dabei wird an vielen praxisnahen Beispielen gezeigt, welche Vorteile modernes C++ bei embedded Projekten hat und wie diese eingesetzt werden können. Die meisten Beispiele und Übungen stehen als browserbasierte Projekte für STM32, ESP32 und Raspberry Pi über den Wokwi-Simulator zur Verfügung:

Embedded C++ Beispiele als Wokwi Projekte

Bei diesem Kurs stehen die besonderen Anforderungen an Embedded Programme im Mittelpunkt: Sie haben oft eine spezielle Programmstruktur, müssen Hardware ansprechen (z.B. Digital- oder Analog-IO), zur Vermeidung einer Speicherfragmentierung darf kein Heap verwendet werden, sie müssen auf Interrupts reagieren, Anforderungen wie die MISRA Guidelines einhalten, usw.

Traditionellerweise werden embedded Programme oft in C oder älteren Versionen von C++ geschrieben. Damit werden aber die Vorteile des modernen C++ verschenkt:

  • In das moderne C++ (C++11, C++14, C++17 usw.) wurden neue Sprachelemente aufgenommen, die zu schnellerem und kompakterem Code führen als die C-Alternativen.
  • Das wichtigste Argument für C++ ist aber meist, dass embedded Programme immer komplexer und größer werden. Zur Bewältigung dieser Komplexität bietet modernes C++ enorme Vorteile, die Entwicklungskosten sparen und zur Zuverlässigkeit der Anwendungen beitragen.

Heute unterstützen praktisch alle toolchains und Entwicklungsumgebungen für embedded Programme (STM32CubeIDE, Espressif, usw.) C++17. Damit können Sie von den Vorteilen des modernen C++ profitieren.

Die MISRA C++ 2023 Guidelines

Zusammen mit den Sprachelementen werden die MISRA C++ 2023 Guidelines für sicherheitsrelevante Systeme und die C++ Core Guidelines vorgestellt. Die Einhaltung dieser bewährten Praktiken wird oft empfohlen oder verlangt, um sicheren, wartbaren und leistungsfähigen C++-Code zu erhalten.

Ziele des Seminars

In diesem Embedded C++ Aufbaukurs werden weiterführende Sprachelemente und -konzepte von C++ (Exception-Handling, Templates, die Standardbibliothek, Smart Pointer, Multithreading usw.) auf dem aktuellen Stand von C++17 (einschließlich C++11 und C++14) ausführlich vorgestellt. Diese C++-Themen werden ergänzt durch

  • Zahlreiche Beispiele für gängige Mikrocontroller (STM32, ESP32, Raspberry Pi usw.), die ihre Einsatzmöglichkeiten für embedded Systeme zeigen.
  • Best practises: Zusammen mit den Sprachelementen werden auch die MISRA C++ 2023 Guidelines für sicherheitsrelevante Systeme und die C++ Core Guidelines vorgestellt. Die Einhaltung dieser best practises wird oft empfohlen oder verlangt, um sicheren, wartbaren und leistungsfähigen C++-Code zu erhalten.

Zusätzlich wird ein Ausblick auf die wichtigsten Neuerungen in C++20 und C++23 gegeben, die in den nächsten gcc toolchains (hoffentlich bald) zur Verfügung stehen werden.

Zielgruppe

Dieser Kurs richtet sich an

  • erfahrene Entwickler, die bei ihren embedded Anwendungen die Vorteile des aktuellen Stands von C++ nutzen möchten. Dabei ist es unerheblich, ob Sie bisher C oder ältere Versionen von C++ einsetzen. Außerdem an
  • Entscheidungsträger und Technologiemanager (Technische Leiter, Projektmanager usw.), die bewerten möchten, wie C++17 die Entwicklungsprozesse ihrer Teams optimieren kann.

Er wird oft als inhouse-Seminar durchgeführt, damit Firmen ihre Teams gemeinsam auf den neuesten Stand bringen können. Offene Seminare finden an der TAE (Technische Akademie Esslingen) statt.

Typische Anwendungsbereiche:

  • Automotive, Luft- und Raumfahrt: Entwickler, die hohe Anforderungen an Sicherheit und Zuverlässigkeit einhalten müssen.
  • Industrieautomation: Programmierer von komplexen Steuerungs- und Überwachungssystemen.
  • IoT und Smart Devices: Entwickler, die für moderne IoT-Geräte arbeiten, bei denen Speicher- und Leistungsoptimierungen entscheidend sind.
  • Medizintechnik: Ingenieure, die sicherheitsrelevante und ressourcenschonende Software für medizinische Geräte entwickeln.

Voraussetzungen: Gute C Kenntnisse und gute C++ Kenntnisse im Umfang des Grundkurses.

Inhalte

Die Inhalte dieses Kurses (hier ausführlich) können nach Absprache auf die besonderen Wünsche der Teilnehmer angepasst werden.

1. Embedded Systeme

  • Typische Einsatzbereiche
  • Spezielle Anforderungen bei embedded Anwendungen
  • Mikrocontroller (z.B. STM32, ESP32 usw.)

2. namespaces

3. Exception-Handling

  • try/catch, throw und stack unwinding
  • Exception-Handling in embedded Anwendungen
  • Exceptions in der Standardbibliothek
  • std::stacktrace
  • noexcept

4. Container der Standardbibliothek

  • vector, sequentielle Container, Iteratoren
  • Allokatoren und polymorphic memory resources
  • Assoziative Container (set, map, multimap und Hash-Container)
  • Zusammenfassungen von Datentypen (pair, tuple)
  • std::optional und std::variant

5. Dateibearbeitung mit den Streamklassen

6. Funktionsobjekte und Lambda-Ausdrücke

  • Der Aufrufoperator ()
  • std::function
  • Lambda-Ausdrücke

7. Templates

  • Funktions-Templates
  • Spezialisierungen und Typ-Inferenz
  • Nicht-Typ Template-Parameter
  • Rekursive Funktions-Templates und variadische Templates
  • Klassen-Templates
  • type traits
  • concepts

8. STL Algorithmen und Lambda Ausdrücke

  • STL-Algorithmen vs. selbstgestrickte Algorithmen
  • Linear Suchen, Zählen
  • Elemente transformieren und ersetzen
  • Sortieren
  • Binäre Suche in sortierten Containern
  • Parallele Algorithmen der STL, z.B. std::sort
  • Parallel for mit for_each
  • std::reduce und std::transform_reduce 

9. Smart Pointer: shared_ptr und unique_ptr

  • Schwächen von Zeigern im Stil von C
  • Gemeinsamkeiten von shared_ptr und unique_ptr

10. Zeiten und Kalenderdaten mit std::chrono

11. Multithreading

  • Funktionen mit Lambda-Ausdrücken als thread starten
  • future und promise
  • Kritische Abschnitte

Über den Aufbaukurs „Modernes C++ für Embedded Systeme“

Sprache: Deutsch oder Englisch

Unterrichtsstil

Vortrag mit vielen Beispielen, die das Wesentliche auf den Punkt bringen. Dabei wird auf einen ausgewogenes Verhältnis von Theorie und Praxis geachtet.

  • Die Themen werden durch einen Überblick über die Grundideen und die Einsatzmöglichkeiten dargestellt und an sorgfältig ausgewählten und bewährten Beispielen illustriert.
  • Das Verständnis wird oft durch den Vergleich ähnlicher (auch älterer) Sprachelemente und ihrer Vor- und Nachteile vertieft. Dabei werden oft „best practises“ empfohlen.
  • Für Teilnehmer, die ihr Wissen selbständig vertiefen wollen, enthält das Manuskript zahlreiche praxisnahe Übungsaufgaben. Auf Wunsch können nach vorheriger Absprache auch Aufgaben aus der Arbeit der Seminarteilnehmer behandelt werden.

Falls sich im Lauf des Seminars  zeigt, dass Grundlagen bei den Teilnehmern fehlen oder weitere Themen gewünscht werden, kann die Agenda auch noch während des Seminars an die Wünsche der Teilnehmer angepasst werden.

Schulungsunterlagen

Ausführliche und detaillierte Schulungsunterlagen (ca. 200 Seiten) – Vollständiger Text, keine Powerpoint Folien, die nur Stichworte enthalten. Deshalb können die Kursunterlagen auch als Referenz bei der Arbeit verwendet werden.

Ort und Zeit

Dieses Seminar wird als Firmenseminar (inhouse) angeboten. Die Durchführung als Präsenzschulung wird empfohlen. Online-Kurse sind auch möglich. Termine nach Vereinbarung.

 

Dauer: 4-5 Tage (je nach Vorkenntnissen)

Öffentliche Seminare von Prof. Richard Kaiser finden Sie bei der Technischen Akademie Esslingen.

Der Dozent:

Prof. Richard Kaiser führt seit vielen Jahren Seminare für Firmen durch, vor allem über Software-Entwicklung und die Programmiersprachen C++ und C sowie C#. Er kennt die Anforderungen der Praxis und geht sowohl in den grundlegenden Konzepten als auch in den Einzelheiten detailliert darauf ein. Er ist der Verfasser mehrerer Bücher über C++

 

Anfrage/Kontakt

Sie möchten den Aufbaukurs „Modernes C++ für Embedded Systeme“ als Inhouse-Schulung für Ihr Unternehmen planen?

Dann kontaktieren Sie mich einfach telefonisch oder per Mail.

Wir können dann die Inhalte der Schulung auf Ihre spezifischen Bedürfnisse und die Vorkenntnisse Ihrer Mitarbeiter abstimmen und einen Termin vereinbaren, der für Ihre Mitarbeiter passt.