µC-Programmierung mit C++

Gegen C++ im Embedded-Bereich werden oft Punkte angeführt wie:

  • „C++ ist langsamer als C“,
  • „C++ ist viel schwieriger zu verstehen als C“,
  • „C++-Programme brauchen mehr Platz als C-Programme“ oder
  • „Abstraktion bedeutet Ineffizienz“. …

Dieser Artikel in deutscher Sprache zeigt, welche Konzepte von C++ für den Einsatz in der Embedded-Programmierung geeignet sind und wie sie helfen können, zukunftsfähige Software-Systeme zu entwickeln. [MatKe01]

Diese Seite heißt ja „Notizblog“, hier meinen Notizen zur µC-Programmierung mit C++, eventuell als Basis für eine Wiki-Seite auf mikrocontroller.net.

… (t.b.c.)

Anforderungen

Der „Mehraufwand“ für C++ muss sich durch seine überwiegende Vorteile amortisieren, sonst lohnt sich C++ nicht. Daraus ergeben sich Anforderungen an eine C++-Implementierung:

  1. „A fundamental design goal is that design violations should not compile.“ ([ScoMe01] Slide 169)
  2. Zugriffe auf Peripherie-Register erfolgen Typ-Sicher und mit Inline-Funktionen, also ohne #define aber genau so schnell wie z.B.
    DMA1_Channel4->CCR&=(uint16_t)(~DMA_CCR1_EN); // enable DMA1 Channel4
  3. Durch eine einfache Zuweisung z.B. in „main.cpp“ muss eine Ausgabe mit printf(); jedem UART zuzuordnen sein. Eventuell sogar einem SPI-, CAN- oder I²C-Bus, wenn es durch einheitliche Schnittstellen (z.B. <iostream>) machbar ist.
  4. … (t.b.c.)

Begriffe

T

  • Template (Deutsch, Wikipedia)
    Generische Programmierung und typsichere Container

M

  • C++-Metaprogrammierung (Deutsch, Wikipedia)
    Eine Technik, um in C++ Programmcode von anderem Programmcode generieren zu lassen.

Links und Dokumente

 

Hinterlasse einen Kommentar