oop-trainer.ch


Seminare


C++


C++ Entwicklung im Embedded System

- Schulung zum Einsatz von C++ in eingebetteten Systemen


Der Kurs setzt ein Grundverständnis von C++ voraus und geht auf die Besonderheiten der Sprache für die Embedded Softwareentwicklung ein. C++ wird immer mehr aus den klassischen Bereichen der Softwareentwicklung verdrängt. In der Entwicklung von Anwendungssoftware und Serverdiensten haben Java & Co. die Sprache C++ inzwischen weit überrundet. Auch die Technologieführerschaft in der Objektorientierten Softwareentwicklung hat inzwischen Java inne. Auf der anderen Seite lassen sich aus diversen Gründen diese neuen Sprachen in vielen Bereichen der Embedded Entwicklung nicht einsetzen. Eine wesentliche Ursache ist das Fehlen eines deterministischen Laufzeitverhaltens. Weitere Gründe sind der enorme Resourcenverbrauch und das ungünstige Hochstartverhalten von Java-Applikationen.
Den Determinismus teilt C++ mit C - der klassischen Sprache der Systementwicklung und Embedded Programmierung. Im Resourcenbedarf und im Aufstartverhalten lassen sich C++-Programme ebenso effizient wie C-Programme gestalten.
Der Entwicklung leistungsfähiger Hardware und flexibler Compiler - allen voran GCC - ist es zu danken, dass C++ immer mehr in die Domäne von C einbricht. C++ verschwindet also nicht vom Markt, sondern erlebt in der eingebetteten Programmierung eine Renaissance. Der Einsatz von C++ in der Industrie steht heute auf einer breiteren technologischen Grundlage als noch vor zehn Jahren, als C++ hauptsächlich zur Erstellung von GUI-Oberflächen verwendet wurde. Dieser Veränderung des Einsatzes von C++ muss der Softwareentwickler Rechnung tragen, wenn er erfolgreich sein möchte. In diesem Seminar werden ganz wesentlich Bereiche des Einsatzes von C++ in der Embedded Softwareentwicklung behandelt. Insbesondere werden die Fragen des Laufzeitverhaltens, des Footprints und der Code-Coverage von C++-Code gestellt.


Themen:

  • Historische Entwicklung von C++
  • Grundlegende Syntax
  • Erste Beispiele
  • Kennenlernen der Tools
  • Der C++-Compiler
  • Der Linker
  • Standarddatentypen
  • Strukturen
  • Operatoren
  • Funktionen
  • Zeiger und Referenzen
  • Funktionsüberladung
  • Operatorüberladung
  • Typenkonvertierung
  • Klassenkonzept
  • Datenkapselung
  • Attribute und Methoden
  • Sichtbarkeitskonzept
  • Instantiierung von Objekten
  • Konstruktoren und Destruktoren
  • Dynamische Speicherallokation
  • Vererbung
  • Polymorphie
  • Virtuelle Methoden
  • Abstrakte Klassen
  • Mehrfachvererbung
  • Exception Handling
  • Templates
  • Funktionstemplates
  • Klassentemplates
  • Speicherklassen in C++
  • Bedeutung von Heap und Stack
  • Externe und statische Linkbarkeit
  • Aufbau von C++ Projekten
  • Das Zusammenspiel von Compiler und Linker
  • Object Files und Bibliotheken
  • Einfache Makefiles
  • Hardwarenahe Programmierung
  • Probleme bei nebenläufiger Programmierung
  • Entwicklung performanter Software
  • Codeoptimierung
  • Footprint und Laufzeitverhalten
  • Sprachstandards
  • ANSI/ISO C++
  • EC++
  • ...

Es werden die folgenden Fragestellungen behandelt:

  • Wie verhält sich C++ im Vergleich zu C im Embedded System?
  • Welche Entscheidungen fällt der ANSI-C++ Standard für die Embedded Entwicklung?
  • Welche grundsätzlichen Fehler kann man beim Einsatz von C++ machen?
  • Welche Lösungen bietet der EC++ Standard?
  • Welche Auswirkungen haben unterschiedliche Speicherverwaltungsstrategien für Applikationsdaten auf das Gesamtsystem?
  • Welche praktischen Auswirkungen haben physikalische und virtuelle Speicherverwaltung auf das Design von Software?
  • Was bedeutet Speicherfragmentierung und wie beherrscht man Probleme damit?
  • Welche Auswirkungen haben der Einsatz von Polymorphie auf Laufzeit und Grösse des Programmcodes?
  • Wie können Templates eingesetzt werden?
  • Welche Laufzeitaspekte sind bei der Verwendung der Standard Template Library zu beachten?
  • Wie kann Exception Handling im Embedded System eingesetzt werden?
  • Welche Auswirkungen hat Exception Handling auf Laufzeit, Footprint und Codestruktur?
  • Welche Rahmenbedingungen gelten für die Entwicklung nebenläufiger Systeme?
  • Was bedeutet Tracing und Logging für das zeitliche Verhalten?

Es kann ein beliebiger ANSI/ISO-C++ Compiler eingesetzt werden - vorzugsweise GCC C++. Je nach Bedarf können Übungen direkt auf einem Embedded System ausgeführt werden. Dafür gibt es unterschiedliche Lösungen von der echten Hardware bis zur Simulation. Wenn ein spezielles System zum Einsatz gebracht werden soll, müssen die Rahmenbedingungen und die Machbarkeit vor dem Kurs noch abgesprochen werden. Sehr gerne setze ich QNX und Embedded Linux ein. Der Kurs kann auch mit Beispielen durchgeführt werden, die man auf PCs unter Windows, Linux oder Mac OS zum Laufen bringt.

Anfragen telefonisch unter: +49 179 2292471