ein Post voller Lobeshymnen für STM32 und dem CubeMX Konfigurations- und Generator-Tool.
Ist in den letzten Jahren ja echt gut geworden und trotz komplexer Peripherie-Konfiguration gab es eigentlich (dieses mal für den L053) nichts zu beanstanden und alles hat gleich funktioniert (PWM 2 Channel, RTC, USB CDC, Interrupts, GPIOs, ...) 🤯
Bzw, habt ihr mal "cortex-debug" Plugin in VSCode benutzt?
So einfach hat debuggen mit zB einem stlinkv2 Klon ja noch nie funktioniert 🤯
Rip (CDT) Eclipse 😑
edit:
Falls es jemand testen will ... Mit CubeMX ein Makefile Projekt erzeugen und das hier ergänzen:
Und dieser ganze Bastelkram mit VSCode und Cmake bei STM32 bleibt dir
erspart, wenn du einfach die STM32CubeIDE benutzt, wie sie ist.
... oder mit dem (nicht ganz frischen) Atollic Truestudio, das
funktioniert immer noch prächtig (weil STM davon abgekupfert hat)
und läuft im Gegensatz zur Cube IDE auch unter 32-Bit Fenster.
... oder mit dem (nicht ganz frischen) Atollic Truestudio, das
funktioniert immer noch prächtig (weil STM davon abgekupfert hat)
oh je, geht es noch rückständiger? ST hat nicht davon abgekupfert, die haben es aufgekauft. Und den Support für andere Hersteller rausgeworfen und das CubeMX Plugin fest eingebaut.
Was wurde hier früher über Atollic hergezogen. Erst kostenlos, dann nicht mehr, dann doch wieder... Und Eclipse, viel zu träge...
... oder mit dem (nicht ganz frischen) Atollic Truestudio, das
funktioniert immer noch prächtig (weil STM davon abgekupfert hat)
und läuft im Gegensatz zur Cube IDE auch unter 32-Bit Fenster.
Den Lag merke ich selbst auf meinem Ryzen 3600 noch
Gönn' dir ne SSD. Damit flutscht Eclipse selbst auf prähistorischen i3. Ein paar Sachen wie Projekte anlegen oder die Cube-Packs herunterladen dauert etwas länger, aber wie oft macht man das am Tag...
Hmm.. also ich wundere mich! Erst CubeMX loben und dann so was VSC ansprechen. Warum nicht bei dem "runden Ding" CubeMX und IDE bleiben. Wir leben im Zeitalter von KI's & Co. Wer sich auf so einen Murks wie Kommandozeilen oder ellenlanges Konfigurationsmassaker in Txt-Files einlässt hat m.E. entweder zu viel Zeit, den Schuss nicht gehört oder will seine Freundin beeindrucken. VSC ist ein wertvoller Editor, aber keine ausgewachsene IDE. Da helfen auch halbfertige Plugins nichts. Da würde ich, wenn man etwas gegen CubeMX / IDE etwas hat ehe Visual Studio mit einem ausgewachsenen Plugin wie VisualGDB von SysProg greifen. Und meine Zeit in Projekte investieren, anstatt mich mit irgendwelchen Konfigurationen herumzuschlagen.
Wer sich auf so einen Murks wie
Kommandozeilen oder ellenlanges Konfigurationsmassaker in Txt-Files
einlässt hat m.E. entweder zu viel Zeit,
das geht wunderbar und einfach. Es wird ein Muster angelegt wenn man eine debug extension auswählt und für die Einstellungen gibt es Auswahlmöglichkeiten, die muss man nicht auswendig lernen. Dazu können diese einfachen json files kopiert werden wenn man die Einstellungen in einem anderen Projekt übernehmen möchte. Oder die Einstellungen werden von CMake generiert, so funktioniert es bei meinem Lieblings OS. VSCode funktioniert auch Remote und kann die Einstellungen da synchron halten.
Mach das mal bei Eclipse, da bekommst du die Krise wenn du etwas nicht im Dialog einstellen möchtest. Und Eclipse ist nicht gleich Eclipse, jede Menge Hersteller bieten angepasste Plugins, aber nichts in .cproject und .project ist da kompatibel. Und dann der make Automatismus: absolut intransparent weil er aus >20k LOC in Java besteht.
Bei Updates von ST musst du Glück haben das Projekte noch funktionieren, .ioc einlesen und Code generieren und schon lässt sich das Projekt nicht mehr fehlerfrei compilieren. DAS ist Bastelkram.
Und VSCode benutze ich mittlerweile für C/C++, Golang, Python, Rust und allem anderen, das man irgendwie debuggen kann.
Ah für Markdown-Dokumente auch ...
Kurioserweise bin ich noch nie auf die Idee gekommen, Bash Skripte damit zu schreiben und zu debuggen ... Das mach ich mit vim - schreiben zumindest 🙈
Wofür mehrere IDEs, wenn man eine super-IDE für alles benutzen kann und die Bedienung und Möglichkeiten dann quasi für alle Programmiersprachen konsistent sind.
Aber ich merks ja selbst und werde mit dem Alter immer fauler ...
Damals hab ich HAL verteufelt und nur die StdPeriphLibrary benutzt ... Jetzt ist mir das egal.
Weniger "Idealismus", geringster Widerstand, am schnellsten fertig werden, Zeit für andere Dinge.
Vlt kaufe ich mir mal einen original JLink und teste die STM32 IDE nochmal.
Wie kann man mehr als einen dieser CubeMX-Konfiguratoren gleichzeitig öffnen? Bei mir geht das nur nacheinander. Ich möchte aber Projekte aus derselben Solution miteinander vergleichen. Bitte nicht darauf hinweisen, man könnte die *.ioc-Dateien durch ein diff schieben oder virtuelle Maschinen aufsetzen. Ich möchte einfach nur zwei Fenster in einer IDE nebeneinander haben und z. B. das Clock-Management von einer Seite auf die andere anpassen.
Lediglich für USB lasse ich mir was generieren oder nimm eine
Bibliothek.
Ausgerechnet da hapert es - CubeMX kann nur entweder den USB-Stack mit einer spezifischen Klasse (CDC, MSC, ...) einbinden oder gar nicht einbinden und nur ein Dummy zur Peripherie-Initialisierung anlegen. Eine eigene / vendor-specific-Klasse will CubeMX nicht erzeugen, obwohl das mit der Bibliothek an sich kein Problem ist.
Workaround: Projekt mit CDC-Support anlegen, USB-Bibliothek in einen anderen Pfad kopieren, CDC-Support wieder deaktiveren, diverse Anpassungen und Hacks vornehmen (insbesondere die CDC-Dateien rausnehmen) und eigene Klasse implementieren.
Genau das ist das Problem an Code-Generatoren - sie unterstützen nie alle Möglichkeiten der Bibliothek, aber weil das ganze Ökosystem sich so sehr auf sie verlässt wird es dann kompliziert ohne sie klarzukommen wenn man solche "spezielleren" Anforderungen hat.
Hier mal als Beispiel. Ich kann immer nur eine ioc-Datei öffnen. Klicke ich auf die nächste, wird die gerade geöffnete ioc-Datei erst geschlossen, bevor es weitergeht.
Ist das nur unter Windows so?
Kann ich mir nicht vorstellen, eher ein Problem der Programmierung.
Auch zweimal den gleichen Workspace öffnen wird an einem Locking scheitern (habe jetzt keine Lust den Rechner wieder anzuwerfen).
Also old fashioned:
Quelle ausdrucken, Einstellungen übernehmen und auf dem Papier abhaken.
Hier mal als Beispiel. Ich kann immer nur eine ioc-Datei öffnen. Klicke
ich auf die nächste, wird die gerade geöffnete ioc-Datei erst
geschlossen, bevor es weitergeht.
Du musst die *.ioc-Datei unter dem Windows-Explorer anklicken,
nicht innerhalb der Cube IDE. Bei mir kann ich so zwei oder
mehrere CubeMX ohne Probleme starten.
Quelle ausdrucken, Einstellungen übernehmen und auf dem Papier abhaken.
Genau dafür hat man die Möglichkeit, alle Einstellungen in einer .ioc in
eine PDF-Datei zu schreiben.
Ja, leider hat STM den ganzen Ressourcen keine Kommentarfelder spendiert. Da habe ich nun über zwei Dutzend htim, huart, hspi usw ohne aussagekräftige Namen, und die werden auch so in das pdf übernommen, was es dann ziemlich wertlos macht. Im Code sind die Variablen im ‚don‘t touch me‘ Bereich und da kann nicht direkt kommentiert werden.
Ja, Profis brauchen keine Kommentare.
funktioniert auch Remote und kann die Einstellungen da synchron halten.
Mach das mal bei Eclipse, da bekommst du die Krise wenn du etwas nicht
im Dialog einstellen möchtest. Und Eclipse ist nicht gleich Eclipse,
Um Himmels Willen. Ich habe auch keine Werbung für Eclipse gemacht. Da habe ich mich mal an der Espressif IDF versucht. Und das ganze so schnell wie es installiert war auch wieder von der Platte geschmissen. Ich würde VSC Eclipse auch immer vorziehen. Ich arbeite aber lieber mit VS und dem VisualGDB Plugin. Kostet zwar was, läuft aber out of the Box ohne das ich was konfigurieren, kopieren oder anpassen muss. Wenn es was gibt wo andere für mich die lästige Arbeit erledigt haben nutze ich das. Zudem ist das VS Community ebenfalls kostenlos zu haben.
Die Installation von Erweiterungen in VSC ist auch vorbildlich einfach, deshalb ist das für mich kein Argument 'muss erst alles installiert werden': Ein Klick und man ist in der Liste der Erweiterungen, eine Erweiterung ist mit einem weiteren Klick installiert. Dazu ist man sofort in einer Beschreibung dazu und auch deaktivieren oder deinstallieren ist da genauso einfach.
Bei Eclipse muss erstmal ein Anbieter im Marketplace gesucht werden, der Dialog ist einfach nur unübersichtlich.
Ich habe auch mit VS seit 4.0 gearbeitet bis ich Eclipse für µC installiert hatte. Alleine die Compilereinstellungen zu finden war ein Graus gegenüber anderen IDE. Dabei sind VS und Eclipse beides erstmal nur leere Shells die durch Erweiterungen zur IDE werden. VSC ist jetzt wieder anders, aber viel offener als die bisherigen. Ich mag die Möglichkeit CMake, verschiedene toolchains, verschiedene Programmiersprachen, PlattformIO uvm. in einem Werkzeug zu nutzen.
Die Installation von Erweiterungen in VSC ist auch vorbildlich einfach,
deshalb ist das für mich kein Argument 'muss erst alles installiert
werden': Ein Klick und man ist in der Liste der Erweiterungen, eine
Erweiterung ist mit einem weiteren Klick installiert. Dazu ist man
sofort in einer Beschreibung dazu und auch deaktivieren oder
deinstallieren ist da genauso einfach.
Bei Eclipse muss erstmal ein Anbieter im Marketplace gesucht werden, der
Dialog ist einfach nur unübersichtlich.
Also ich lasse mich ja gerne eines Besseren belehren. Nehmen wir mal ein Bespiel. Wenn ich ein ESP32 Projekt, Framework ESP-IDF in VisualStudio mit dem VisualGDB Plugin out oft he Box debugge, ohne irgendwelche Einstellung vorher gemacht zu haben zu müssen, bis auf die Auswahl der DebugHW und des COM Ports für den Seriellen Monitor dann habe ich auf einen Blick, meinen C-Code und den Assemblercode (Simultan), ich habe alle CPU-Register im Blick, die I/O‘s, Memory, seriellen Monitor und überwachte Ausdrücke. Und wenn ich will, noch mehr. Das klappt auf Knopfdruck und auf Anhieb . Sie Screen shoot.
Versuche ich das in VS-Code mit z.B. dem Platform-IO Plugin. Kann ich immer nur entweder den C-Code sehen, oder alternativ den assembly view. IO, oder CPU Register, Pustekuchen. Da geht das gemeckerte los. Irgendwelche SVD Files will er haben, wo bitte ist der idfSvd Path? Hallo hakt’s? Das Ding weis wo die IDF ist, hat ja gerade die toolchain benutzt?!? Auf gut Deutsch, nix funktioniert hier out of the Box. Und wenn ich HW programmieren will, will ich weder ein Systemadministrator für eine DIE sein, noch 100 Seiten Anleitung lesen müssen wie das Ding so konfiguriert werden möche. Das ist nicht Zeitgemäß. Da bezahle ich lieber 100€ und nutze eine vernünftige IDE . VSCode ist für mich Eclipse nur eben ohne Java.
Aber vielleicht gibt es ja doch einen Knopf mit dem das alles out oft he box funktioniert, den ich nur nicht gefunden habe. Wenn mir jemand diesen zeigt, nehme ich alles zurück.