µ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:
- „A fundamental design goal is that design violations should not compile.“ ([ScoMe01] Slide 169)
- 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
- 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.
- … (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
- [AlaDo01] Interrupts in C++ (Englisch)
- [BenBu01] C++-Programmierung (Deutsch, WikiBooks, PDF-Version)
- [ChrM.01] AVR Interrupt Routinen mit C++ (Deutsche Wiki-Seite)
- [DanSa01] Preventing dynamic allocation (Englisch)
- [MarKr01] A guide to C++ for C programmers (Englisch)
- [MatKe01] C++ in der Automotive-Software-Entwicklung (Deutsch)
- [MikNe01] C++ auf einem MC, wie geht das? (Deutscher Thread)
- [Pan2k01] C++ Programming (Englisch, WikiBooks, PDF-Version)
- [ScoMe01] Effective C++ in an Embedded Environment (2012, Englisch, Homepage, die PDF-Version kostet $24.95)
- [XpcPr01] xpcc project (Homepage, API Documentation)
HAL for different microcontrollers, efficient OO C++ API
Hinterlasse einen Kommentar