Embedded C++ für C-Programmierer

Ein Embedded C++-Seminar mit praktischen Übungen an einem Arduino Mikrocontroller

In diesem Seminar lernen Sie, wie Sie C++ bei Embedded Programmen einsetzen kennen. Die Theorie wird durch zahlreiche Beispiele und Übungsaufgaben an einem Arduino Board vertieft. Als Entwicklungsystem wird Visual Studio 2019 mit einem Arduino-Plugin verwendet.

Embedded Programme sind oft durch besondere Einschränkungen (wie z.B. kleiner Speicher, keinen Heap verwenden) und Anforderungen (hohe Geschwindigkeit, hohe Zuverlässigkeit usw.) gekennzeichnet.

Traditionellerweise werden embedded Programme oft in C geschrieben. Das hatte früher oft seine Berechtigung, da C++ Compiler den C-Compilern im Hinblick auf diese besonderen Anforderungen unterlegen waren.

Mit der Weiterentwicklung der Compiler und des C++-Standards (C++11, C++14 und C++17) hat sich das aber geändert. Es wurden neue Sprachelemente in C++ aufgenommen, die zu schnellerem und kleinerem Code führen als die C-Alternativen. Inzwischen haben die meisten Sprachelemente von C++ in Bezug auf die Codegröße und Geschwindigkeit keine Nachteile mehr gegenüber C.

Eines der wichtigsten Argumente für C++ ist aber, dass embedded Programme immer komplexer und größer werden. Diese Komplexität ist mit den Mitteln von C oft nur noch schwer und aufwendig zu bewältigen. Hier bieten die verschärften Typ-Prüfungen und besseren Strukturierungsmöglichkeiten von C++ enorme Vorteile, die Entwicklungskosten sparen und zur Zuverlässigkeit der Anwendungen beitragen.

Ziel des Seminars:

In diesem Seminar werden die Sprachelemente von C++ unter dem Gesichtspunkt der besonderen Anforderungen und Einschränkungen von embedded Anwendungen vorgestellt und mit C-Alternativen verglichen. Dabei wird mit vielen Vorurteilen gegenüber C++ bei embedded Anwendungen aufgeräumt.

Die Beispiele und praktischen Übungen werden mit einem Arduino-Board durchgeführt. Dieses Board ist ein einfacher Mikrocontroller, mit dem man typische Aufgaben (digitaler und analoger IO) mit einer embedded Variante des gcc C++-Compilers programmieren kann. Die Inhalte beschränken sich aber nicht auf Arduino-Programmierung.

Vorkenntnisse: Gute C-Kenntnisse.

Seminar-Inhalt Embedded C++

1. Arduino-Projekte mit Visual Studio

2. Elementare Datentypen und Anweisungen

Ganzzahldatentypen fester Breite
Trennzeichen bei Zahlliteralen und binäre Literale
Stark typisierte Aufzählungstypen
Typ-Inferenz: Implizite Typzuweisungen mit auto
Sichere Konversionen mit Initialisierlisten
inline Variablen, insbesondere static inline Datenelemente
Konstanten mit const und constexpr
Wert- und Referenzparameter
Init statement für if/switch
Bedingte Kompilation mit if constexpr

3. Zeiger und Smart Pointer

4. Namespaces

Überladene Funktionen und Operatoren

5. Klassen

Elementfunktionen und der this-Zeiger
Datenkapselung
Konstruktoren und Destruktoren
Elementinitialisierer
Standardkonstruktor, Kopierkonstruktor, Zuweisungsoperator
Die Angaben =delete und =default
Vererbung und Komposition
Virtuelle Funktionen und Polymorphie
R-Wert Referenzen und Move-Semantik

6. Exception-Handling

try/catch
stack unwinding
RAII

7. Containerklassen der C++-Standardbibliothek

std::vector und std::array
Assoziative Container
Funktoren, Funktionsobjekte und Lambda-Ausdrücke

8. Templates

Funktions-Templates
Klassen-Templates

9. Multithreading

Beurteilungen durch Teilnehmer:

Embedded C++ mit Arduino, März 20191 (sehr gut)2345
Gesamteindruckxxxxxx
Lern- und Arbeitsatmosphärexxxxxx
Kursunterlagenxxxxxx
Fachkompetenz des Dozentenxxxxxx

Weiteres:

Zielgruppe: Programmierer, die lernen wollen, wie man C++ in der Embeddes Programmierung einsetzen kann.

Voraussetzungen: Gute C-Kenntnisse.

Unterrichtsstil: Vortrag mit vielen Beispielen, die das Wesentliche auf den Punkt bringen. Eine ausgewogene Verbindung von Theorie und Praxis.

  • Zu Beginn eines neuen Themas wird zunächst ein Überblick über die Einsatzmöglichkeiten, Grundideen und die Syntax gegeben. Diese werden 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.
  • Falls die Teilnehmer ihr Wissen selbständig vertiefen wollen: Das Manuskript enthält zahlreiche praxisnahe Übungsaufgaben. Auf Wunsch können nach vorheriger Absprache auch Aufgaben aus der Arbeit der Seminarteilnehmer behandelt werden.

Flexibilität: 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.

Manuskript: 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.

Dauer: 3-5 Tage

Kontakt: Prof. Richard Kaiser