Schulungsreihe: ‚Embedded Softwareentwicklung mit C++‘

Lernen Sie, wie es mit der richtigen Methodik und durch die effiziente Anwendung der Programmiersprache selbst auf extrem kleinen Embedded-Plattformen möglich ist, die Vorteile der Programmiersprache C++ zu nutzen. Die größte Herausforderung stellt dabei der richtige Umgang mit den begrenzten Ressourcen (vor allem Speicher) dar.

Unser Ziel ist es, Ihnen zu vermitteln wie ein C++-Compiler im Detail arbeitet. Mit diesem Wissen lässt sich mit C++ wesentlich ökonomischer arbeiten als mit der Programmiersprache C. Denn selbst auf 8-Bit-Mikrocontrollern können mit C++ realisierte wiederverwendbare Software-Komponenten praktisch ohne Overhead gegenüber derselben in C implementierten Funktionalität genutzt werden.

Flexibel und individuell

Durch die aufeinander aufbauenden Schulungsblöcke richtet sich diese Schulungsreihe an Software-Entwickler mit ganz unterschiedlichen Vorkenntnissen: Je nach Vorwissen steigen Sie erst später ein.

Bei In-House-Schulungen (in Ihrem Unternehmen) können wir die einzelnen Schulungsthemen auch individuell nach Ihren Bedürfnissen zusammenstellen.

Die Schulungsreihe wird immer dann als öffentliche Schulung veranstaltet, nachdem genügend Interessenten zusammen gekommen sind. Kontaktieren Sie uns bei Interesse also einfach!

 

Block 1: Embedded C++ für C-Entwickler (3 Tage)

Dieser Schulungsblock richtet sich an C-Entwickler mit Erfahrung im Embedded-Umfeld.

Sie lernen die syntaktischen Spracherweiterungen von C++ und deren Vorteile im Vergleich mit C kennen, sowie grundlegende Konzepte objektorientierter Softwareentwicklung. Das umfasst z. B. die folgenden Themen:

  • C++ als Erweiterung zu C: Neue Sprachmittel (z. B. Referenzen, Schlüsselwort const, Namensräume, C++-Style Casts)
  • Konzept der Objektorientierung - Datenkapselung, Sichtbarkeitskonzept
  • Klassen, Attribute, Methoden, Operatoren
  • Konstruktoren und Destruktoren
  • Konzepte zur Code-Wiederverwendung: Aggregation, Vererbung, Mehrfachvererbung
  • Virtuelle Methoden, dynamische Polymorphie, abstrakte Klassen
  • Warum C++ für Embedded Systeme die optimale Sprache ist - Effizienzbetrachtungen zwischen C und C++ und Bewertung der Ressourcenkosten folgender Sprachkonstrukte:
    • Statische Methoden
    • Inline-Methoden
    • Vererbung
    • Mehrfachvererbung
    • Virtuelle Methoden / Dynamische Polymorphie
    • Virtuelle Vererbung
  • Funktions- und Operatorüberladung, Typkonvertierung
  • Kopierkonstruktor, Zuweisungsoperator

Block 2: C++ für die Entwicklung von Embedded-Software optimal nutzen (3 Tage)

Dieser Schulungsblock baut auf den 1. Schulungsblock auf und richtet sich auch direkt an Entwickler die die Sprache C++ schon kennen aber noch nicht für die Entwicklung von Embedded-Anwendungen eingesetzt haben.

Dieser Block konzentriert sich auf die mächtigen Fähigkeiten der Code-Generierung mit Hilfe von C++-Templates, die wie für den Einsatz in Embedded-Anwendungen geschaffen sind. Außerdem werden verschiedene Musterlösungen für typische Embedded-Herausforderungen aufgezeigt.

Behandelt werden, unter anderem folgende Themen:

  • Ressourcenkosten bei der Verwendung dynamischer Polymorphie
  • C++-Templates
    • Grundlagen (Funktionstemplates, Klassentemplates, Template-Spezialisierung)
    • Fallstricke und Ressourcenoptimierung beim Einsatz von C++-Templates
    • Konzept der statischen Polymorphie und Vergleich mit dynamischer Polymorphie
    • Ressourcenbetrachtungen
    • Traits und Policies
  • Ausgewählte Embedded Design-Patterns (z. B. Scope Locked Pattern, Intrusive Lists)
  • Implementierung von Treibern mit Interrupt-Handlern in C++
  • Strategie zur Verwendung von dynamischem Speicher (Überladen von new und delete, Verwendung von Placement-new)
  • Optional: Exceptions
    • Funktionsweise
    • Diskussion der Verwendung von Exceptions in Embedded-Anwendungen

Block 3: Embedded Softwareentwicklung mit wiederverwendbaren C++-Komponenten (2 Tage)

Dieser Schulungsblock schließt sich an den Schulungsblock 2 an und vermittelt detailliert, wie Embedded-Anwendungen mit Hilfe wiederverwendbarer Software-Bausteine entwickelt werden können.

Hier ein Themenauszug:

  • Bausteine finden: Zergliederung von Funktionalität in Software-Komponenten und die Identifikation sauberer Schnittstellen
  • Bausteine so implementieren, dass durch den Design-Ansatz wenig bis kein Overhead entsteht
  • Bausteine testen: Unit-Tests im Embedded-Umfeld gewinnbringend nutzen, um die Software-Qualität zu steigern
  • Bausteine zusammensetzen: Software-Komponenten richtig konfigurieren, zusammensetzen und die nötigte Glue-Logic implementieren
  • Beispiele für generische Embedded-Komponenten aus dem Embedded-Software-Baukasten redBlocks

 

In allen Schulungsblöcken wird das vermittelte Wissen durch praktische Übungen vertieft. Um aussagekräftige Experimente zur Laufzeiteffizienz und zum Speicherplatzbedarf der jeweiligen Sprachkonstrukte durchführen zu können, werden die Übungsbeispiele mit Hilfe des Simulators der IAR Workbench oder Keil uVision durchgeführt. Bei individuell auf Ihre Bedürfnisse zugeschnittenen Veranstaltungen, können dazu alternativ auch die bei Ihnen eingesetzten Entwicklungswerkzeuge verwendet werden.