Hi Leute, ich komme aus der (Software)Ecke C++, nun will ich mich mit
Mikrocontrollern befassen. Das AVRGCC Tutorial ist in C geschrieben, da
ich den Code im Tutorial gut nachvollziehen kann und eigentlich bei C++
bleiben will, meine Frage: Gibt es eine vernünftige C++ Toolchain für
AVRs?
Der AVR-GCC unterstützt C++. Leider wird aber keine C++ Standard Library
mitgeliefert, weshalb das nicht so viel Spaß macht. Wenn du einen ARM
Cortex-M Mikrocontroller, wie z.B. einen STM32 nutzt - was ohnehin
keine schlechte Idee ist, da zukunftsweisender - kannst du den
ARM GCC nehmen, mit welchem C++ recht problemlos geht.
Niklas G. schrieb:> Der AVR-GCC unterstützt C++. Leider wird aber keine C++ Standard Library> mitgeliefert, weshalb das nicht so viel Spaß macht.
Erstmal danke. Damit könnte ich leben.
Niklas G. schrieb:> Wenn du einen ARM> Cortex-M Mikrocontroller, wie z.B. einen STM32 nutzt
Habe mir einige Tutorials durchgesehen, auf den ersten Blick sieht ARM
sehr sehr viel komplexer aus vom Code her, man muss wesentlich mehr
schreiben (was kein KO-Kriterium ist). Ist das sinnvoll für nen Neuling
in der Mikrocontroller Welt?
R.Siegmann schrieb:> Erstmal danke. Damit könnte ich leben.
Okay... Mich stört es schon, dass selbst so Dinge die nichts mit der
Laufzeit zu tun haben, wie std::integer_sequence oder
std::numeric_limits, nicht verfügbar sind. Es ließe sich irgendwie
umgehen, aber schön ist das nicht :-)
R.Siegmann schrieb:> Ist das sinnvoll für nen Neuling> in der Mikrocontroller Welt?
Da du ja schon Programmier-Erfahrung hast, könnte es durchaus gehen. Der
Vorteil ist, dass du so direkt eine leistungsfähige Plattform lernst und
nicht später umlernen musst. Es gibt ja auch viele Bibliotheken, die
einem die Details abnehmen, wie die "Cube" Libraries bei STM32.
R.Siegmann schrieb:> sieht ARM sehr sehr viel komplexer aus vom Code her, man muss wesentlich> mehr schreiben
Kein bisschen. Sobald man mehr als Hello World macht treten die 12
Zeilen mehr für die Initialisierungen der Hardware komplett in die
Bedeutungslosigkeit.
Bernd K. schrieb:> R.Siegmann schrieb:>> sieht ARM sehr sehr viel komplexer aus vom Code her, man muss wesentlich>> mehr schreiben>> Kein bisschen. Sobald man mehr als Hello World macht treten die 12> Zeilen mehr für die Initialisierungen der Hardware komplett in die> Bedeutungslosigkeit.
12 Zeilen braucht man ja schon fast, um einen einzelnen I/O-Pin ans
Laufen zu bekommen. Die Hardware ist schon erheblich komplexer als bei
einem AVR.
Rolf M. schrieb:>> R.Siegmann schrieb:>>> sieht ARM sehr sehr viel komplexer aus vom Code her, man muss wesentlich>>> mehr schreiben>>>> Kein bisschen. Sobald man mehr als Hello World macht treten die 12>> Zeilen mehr für die Initialisierungen der Hardware komplett in die>> Bedeutungslosigkeit.>> 12 Zeilen braucht man ja schon fast, um einen einzelnen I/O-Pin ans> Laufen zu bekommen. Die Hardware ist schon erheblich komplexer als bei> einem AVR.
Schau mer mal was ich so an Tutorials finde, davon mache ich es
abhängig. Für den Anfang bin ich immer ersteinmal an schnellen
Ergebnissen interessiert, danach kanns gerne detaillierter werden.
Quick and dirty geht es wie schon genannt mit Arduino, auf AVR, einigen
STM32 und ESP. Das ist aber ein Gemisch aus Prozeduren und OO, IO Pins
werden mit Prozeduren wie digitalWrite(Pin) bedient und SPI z.B. ist ein
Objekt.
Ich benutze lieber mbed, da sind alle Komponenten in Klassen gekapselt.
Das gibt es aber nur für Cortex-M weil es von ARM selber gepflegt wird.
Die Cortex-M gibt es in allen möglichen Grössen, deshalb reichen mir die
für meine Projekte. Die grossen haben soviel Flash und RAM das sogar ein
cout << "Hello world" geht. Das ist natürlich nicht unbedingt sinnvoll,
aber z.B. ein GUI mit Display möchte ich nie mehr in C bauen.
Niklas G. schrieb:> Ich kanns kürzer!
Gut, aber um diese Zeilen zu verstehen, muss man wesentlich mehr lesen.
Alleine dass man für jede Peripherie erstmal den Takt einschalten (und
dabei richtig konfigurieren) muss, mach es schon merklich komplexer.
Also wenn ihr ein gutes wirklich Anfängertaugliches Tutorial mit Cube
und HAL kennt, wäre ich dem sehr zugeneigt. Die SPL ist lt. dem ARM
Artikel dieser Seite veraltet.
Also der magische Würfel ist jetzt aber so ziemlich das genaue Gegenteil
von C++ Entwicklung...
Wenn man es installiert bekommt man ein Programm mit einer Startseite
die gross 3 Funktionen anbietet: New Project - Load Project - Help. Da
fängt man mit Hilfe an und rate mal was sich öffnet.
R.Siegmann schrieb:> Die SPL ist lt. dem ARM> Artikel dieser Seite veraltet.
Dann korrigiere ich meine Aussage mal:
Wenn ihr ein gutes wirklich Anfängertaugliches C++ Tutorial für ARM
kennt wäre ich dem sehr zugeneigt. Wäre einfach super bei meiner Suche
Unterstützung zu haben.
R.Siegmann schrieb:> Wenn ihr ein gutes wirklich Anfängertaugliches C++ Tutorial für ARM> kennt
Was meinst du mit C++ Tutorial? Eines, welches allgemein C++ erläutert?
Da kannst du jedes normale C++ Buch verwenden.
Eines, welches explizit C++-API's verwendet um die STM32-Peripherie
anzusteuern? Da gibt es keines, weil es kein wirklich etabliertes
umfängliches C++-API gibt. Man verwendet meist die C-API's.
Eines, welches C so verwendet, dass man den Code auch in C++-Projekte
einbinden kann? Das gilt für alle C-basierten Tutorials.
Das ist übrigens beim AVR genau so. Im Embedded Bereich ist C++ leider
nicht sehr verbreitet.