Sicheres und effizientes C++ für eingebettete Systeme
Beschreibung
In der heutigen Technologielandschaft bieten die jüngsten Fortschritte in C++ Tools, mit denen Sie die einzigartigen Herausforderungen eingebetteter Umgebungen bewältigen können. Dies gilt insbesondere für Umgebungen, die den Richtlinien MISRA, Autosar oder SIL folgen.
Dieser Kurs verbessert Ihre Kenntnisse im Bereich eingebetteter Systeme mithilfe von modernem C++. Anhand praktischer Beispiele lernen Sie, wie Sie Code schreiben, der sicherer, robuster und effizienter ist. Sie werden Muster sehen, die die POSIX-API für Länge und Wert ersetzen.
Wir beginnen mit den Grundlagen und gehen nach und nach zu fortgeschritteneren Themen über, die alle darauf ausgelegt sind, Ihren Code stärker und effizienter zu machen.
Coroutinen fügen dem Schreiben von Parsern eine ganz neue Ebene hinzu. Sie lernen, wie sie funktionieren und wie Sie sie verwenden können, ohne sich auf den Heap zu verlassen.
Viele eingebettete Systeme funktionieren ohne Heap. Wir untersuchen Standardkonformes und undefined behavior freie Möglichkeiten zum Umgang mit benutzerdefinierten Allokatoren. Sie werden aus erster Hand sehen, wie unique_ptr
aus der Standard Library (STL) selbst in speicherbeschränkten Umgebungen bahnbrechend sein kann.
Dies führt direkt zum nächsten Thema, der Verwendung der STL in einer eingebetteten Umgebung, die häufig die Verwendung des globalen Heaps oder von Ausnahmen (Exceptions) nicht zulässt. Sie lernen, STL-Funktionen in diesen Kontexten effektiv zu nutzen. Müssen Sie std::chrono
verwenden, haben aber Kompatibilitätsprobleme mit Ihrer Hardware-Uhr? Ich zeige Ihnen, wie Sie Ihre benutzerdefinierte Uhr nahtlos in STLs std::chrono
integrieren und sicherstellen, dass alles harmonisch funktioniert.
Schließlich kann die Fehlerbehandlung bei der eingebetteten Programmierung schwierig sein, insbesondere ohne Ausnahmen. Sie erhalten Einblicke in die leistungsstarken Funktionen von std::expected
von C++23, wodurch Ihr Code lesbarer, wartungsfreundlicher und robuster wird.
Was die Teilnehmer gewinnen
Am Ende dieses Kurses sind Sie nicht nur mit den neuesten C++-Funktionen vertraut, die auf eingebettete Systeme zugeschnitten sind, sondern auch in der Lage, typsicheren Code zu schreiben, der häufige Fallstricke wie Out-of-Bounds-Zugriffe effektiv vermeidet. Verbessern Sie die Lesbarkeit Ihres Codes und erhalten Sie die Effizienz, während Sie gleichzeitig die Kunst der eingebetteten Programmierung souverän meistern.
Agenda
- Sprachfunktionen in C++
- Explizite Datentypkonvertierung
- Einheitliche Initialisierung
- Zifferntrennzeichen
- Datentypenermittlung mittels
auto
- bereichsbasierte for-Schleifen
- Streng typisierter
enum
static
oderinline
- Attribute
- Anwendung benutzerdefinierter Literale
- Vermeidung von aufgeblähtem Code in C++
- Kontrolle Ihrer Objekte (OOP)
class
oderstruct
explicit
- Standard-Member-Initialisierung
- Konstruktordelegierung
- Deaktivierung von Mitgliedsfunktionen-Funktionen
- Kontrolle der Operatoren Ihrer Klasse
- Vererbung
- Virtuelle Funktionen
- Curiously Recurring Template Muster
- ROM-barkeit
- Coroutinen: Wiederaufnehmbare Funktionen
- Leben ohne Heap
- Dynamische Speicherverwaltung
- Richtige Ausrichtung Ihres lokalen Heap-Puffers
- Placement-new
- Die STL als Alternative zu placement-new
- Implementierung eines Pool-Allokators
std::unique_ptr
- Standard Template Library tritt eingebettete Systeme
- STL-Daumenregeln
- Sichere Header für eingebettete Umgebungen
std::chrono
std::array
std::span
std::optional
std::string_view
std::expected
- Einblick in Algorithmen
Mit dem Kurs erhalten Sie
- Ein qualitativ hochwertiges Handout als farbiges PDF, das alle Verweise und eine Liste der Akronyme enthält. Sodass Sie nach dem Training jederzeit nachlesen können.
- Den Quell-Code für die Übungen inklusive Musterlösungen als ZIP-Datei.
- Teilnahmebescheinigung für Ihren Lebenslauf.
- Eins meiner Bücher kostenlos, damit Sie Ihr Wissen vertiefen können.
Was Sie von meinen Schulungen erwarten können.
Mein Motto lautet "Schreibe einzigartigen Code.". Ich mag es, den Code auf die notwendigen Teile zu reduzieren. Die Vervielfältigung kann durch Templates oder Funktionen erfolgen, sodass am Ende jeder einzelne Code eindeutig zur Codebasis beiträgt. Nur der einmalige Code reduziert die Wartung. Er gibt Ihnen mehr Zeit, sich auf Ihre nächsten Kundenbedürfnisse zu konzentrieren.
Um in der Praxis einmaligen Code zu schreiben, haben alle Schulungen einen hohen praktischen Anteil. Impulse und Präsentationen ergänzen Übungen aus der Praxis. In jedem Fall sind meine Sitzungen sehr interaktiv. Ich höre gerne, was die Teilnehmer denken, um die richtigen Tipps zu geben. So entsteht ein Schulungserlebnis, in dem jeder Teilnehmer Neues lernt und eigene Lernerfolge erzielt. Die Trainingsbestandteile bauen didaktisch und inhaltlich aufeinander auf. Und Fragen beantworte ich jederzeit.
Die Live-Demo-Teile sind ein wesentlicher Bestandteil meines Unterrichts. Ich nutze dort die folgenden zwei Tools:
- Compiler Explorer von Matt Godbolt
- C++ Insights von mir selbst.