Guten Morgen,
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:
.vscode/launch.json
Und dieser ganze Bastelkram mit VSCode und Cmake bei STM32 bleibt dir
erspart, wenn du einfach die STM32CubeIDE benutzt, wie sie ist.
Mampf F. schrieb:> (PWM 2 Channel,> RTC, USB CDC, Interrupts, GPIOs, ...) 🤯
Für Interrupts, GPIOs, RTC und einfacher PWM brauche ich kein CubeMX.
Das sind wenige Zeilen bare metal.
Lediglich für USB lasse ich mir was generieren oder nimm eine
Bibliothek.
Ben S. schrieb:> 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.
Wastl schrieb:> ... 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...
Wastl schrieb:> ... 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.
32-Bit Fenster nutzt noch jemand?
Linux ist da weiter: Linux 6.7 Will Let You Enable/Disable 32-bit
Programs Support At Boot-Time:
https://www.phoronix.com/news/Linux-6.7-IA32-Emulation-Boot
Ben S. schrieb:> Und dieser ganze Bastelkram mit VSCode und Cmake bei STM32 bleibt dir> erspart, wenn du einfach die STM32CubeIDE benutzt, wie sie ist.
Jein, man benötigt dann so einen superweirden Cable-Server und einen
originalen STLink^^
Aaaaber, STM32CubeIDE ist auch ein Eclipse und damit Java und damit
unerträglich zu arbeiten.
Den Lag merke ich selbst auf meinem Ryzen 3600 noch und es gefällt mir
nicht und schränkt mich in meinem sonst üblichen Arbeitstempo ein 😁
Mampf F. schrieb:> 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...
Niklas G. schrieb:> Gönn' dir ne SSD.
Reicht eine Samsung 980 Pro^^
Nana, eine Java-IDE kommt mir nicht mehr in die Tüte - es gibt nichts
besseres als VSCode^^
Mampf F. schrieb:> Reicht eine Samsung 980 Pro
Ja, damit läuft Eclipse super. Außer du stellst das Teil permanent auf
Energiesparmodus oder lässt einen lahmen Echtzeit-Virenscanner
mitlaufen.
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.
Aloysius P. schrieb:> 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.
Mampf F. schrieb:> Vlt kaufe ich mir mal einen original JLink und teste die STM32 IDE> nochmal.
JLink wird auch von cortex-debug unterstützt, kein Grund rückfällig zu
werden :)
Mampf F. schrieb:> Jein, man benötigt dann so einen superweirden Cable-Server und einen> originalen STLink
Ich benutze die STM32Cube IDE auch mit nicht originalen ST-Link Adaptern
aus China. Sie unterstützt sogar OpenOCD.
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.
Kay-Uwe R. schrieb:> Wie kann man mehr als einen dieser CubeMX-Konfiguratoren gleichzeitig> öffnen?
Unter Linux öffnen sich bei mir zwei CubeMX ohne Probleme 🤔
Ben S. schrieb:> 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.
Mampf F. schrieb:> Kay-Uwe R. schrieb:>> Wie kann man mehr als einen dieser CubeMX-Konfiguratoren gleichzeitig>> öffnen?>> Unter Linux öffnen sich bei mir zwei CubeMX ohne Probleme 🤔
Aus der STM32CubeIDE heraus oder "offline" aufgerufen?
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?
Kay-Uwe R. schrieb:> 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.
J. S. schrieb:> 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.
Kay-Uwe R. schrieb:> 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.
Harry L. schrieb:> J. S. schrieb:>> 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.
J. S. schrieb:
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,
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.
Kay-Uwe R. schrieb:> Klicke> ich auf die nächste, wird die gerade geöffnete ioc-Datei erst> geschlossen, bevor es weitergeht.
Nein, das geht auch unter Linux nicht.
Du kannst aber mehrere CubeMXes starten.
J. S. schrieb:> 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.