Forum: Mikrocontroller und Digitale Elektronik Build-Qualitätsunterschiede Arduino IDE zu VSC-Platformio


von Frank K. (micromax)


Lesenswert?

Ich frage einfach mal ins "Blaue", und auf die Gefahr mich zu blamieren: 
Gibt es ein Qualitätsunterschied bei der Erstellung eines Build 
generiert aus Arduino-IDE im Vergleich zum Build generiert aus VSC 
Platformio (ESP32 / gleicher PC)?

: Bearbeitet durch User
von ztrr (Gast)


Lesenswert?

wenn der compiler 100% identisch ist und das makefile das gleiche ist 
auch der build identisch

wenn die Compiler sich unterscheiden  gibt es diverse unterschiede

von Stefan F. (Gast)


Lesenswert?

Was verstehst du hierbei unter "Qualitätsunterschied"? Gebe mal 
Beispiele.

von Frank K. (micromax)


Lesenswert?

Es ist nur ein Gefühl, aber alles was ich seit Nutzung von Platformio 
programmiere läuft nicht richtig. Das bin ich nicht gewohnt - kann aber 
durchaus auch Zufall sein - bin noch am prüfen. Derzeit betrifft es im 
Speziellen MQTT-Programme.
Die g++.exe gibt es auf dem Rechner nur einmal (C:\Program 
Files\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin\) aber wie 
sieht es mit den Bibliotheken aus?

Sehe gerade das der Compiler recht alt ist...
g++.exe (x86_64-posix-seh-rev0, Built by MinGW-W64 project) 8.1.0
Copyright (C) 2018 Free Software Foundation, Inc.

Anmerkung: Alles was ich hier poste beruht auf meinem Hobby-Niveau. Ich 
bitte um Verständnis wenn manches nicht ganz so fundiert rüber kommt. 
Danke! :-)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Frank K. schrieb:
> Es ist nur ein Gefühl, aber alles was ich seit Nutzung von Platformio
> programmiere läuft nicht richtig.
Das ist ganz oft ein Zeichen, dass da noch Fehler im Programm sind und 
du mit der anderen Toolchain da "drumrum" programmiert hast.

von MIPS (Gast)


Lesenswert?

> der Compiler recht alt ist

Bei MIPS ist das so, dass es von gefuehlten 50 (oder mehr)
Compilerversionen genau nur eine gibt, die ein umfangreicheres
Projekt richtig uebersetzt.
Tipp: Es ist nicht die letzte...

von Noy (Gast)


Lesenswert?

Naja gibt schon Unterschiede je nachdem was man für ein "Arduino" nutzen 
will...

Hab mal mit nem PiPico rumgespielt und weil es schnell gehen sollte 
Arduino Zeug benutzt..

Mit der Arduino IDE ging das Programm mit SPI.. Mit Platformio nicht 
mehr..

Unterschied ist Platformio nutzt mbed zeug für den PiPico wo SPI anders 
definiert ist als bei den Sachen die die Arduino IDE nimmt..

Speziell ging es um die Definition welche der 3 SPI / Pins jetzt genau 
genutzt werden sollen..

von Horst G. (horst_g532)


Lesenswert?

Frank K. schrieb im Beitrag #.....98:
> Build-Qualität

Was soll das bitte sein?
Für den Build per se wäre ggf. die Geschwindigkeit, Ressourcennutzung 
(z. B. RAM), Parallelisierbarkeit des Buildvorgangs ein Kriterium - 
sollte für den Hobbybereich aber egal sein; sowas ist dann eher für 
CD/CI und automatisierte Builds und/oder schlicht immens große Projekte 
bedeutsam (wobei man sich eben, sollte man sowas doch mal lokal machen 
müssen, einfach schlicht eine potentere Workstation hinstellen kann).
Weiterhin ließe sich natürlich vergleichen, wie unterschiedliche 
Compiler unterschiedliche Optimierungsstufen auf unterschiedlichen 
Plattformen umsetzen - hier gibt es klar Unterschiede; das ist ein 
spannendes Thema.
Nahezu ausschließen kannst du hingegen, dass moderne Compiler fehlerhaft 
compilieren bzw. "Fehler einbauen" - klar kann so ein Bug mal passieren, 
ist aber sehr, sehr unwahrscheinlich.

> Es ist nur ein Gefühl, aber alles was ich seit Nutzung von Platformio
> programmiere läuft nicht richtig.

Oje; nichts objektiv Verifizerbares, sondern ein Gefühl, eine Emotion. 
"Läuft nicht richtig" - was heißt das? Entweder es tut, was es soll, 
oder es liegen Fehler vor - gibt ja auch kein "nur etwas schwanger". 
"Gestern ging es noch" und "ich habe nichts gemacht" sind die 
Standardausreden nicht-IT-affiner Computernutzer - als Entwickler ist 
dieses Niveau schlicht unbrauchbar. Systematische Fehlersuche steht an.
Gibt es Warnungen beim Bauen? - Diese erst abstellen, dann beschweren.
Was sagt das Debugging; wo hängt es?
Wo liegen die Unterschiede zwischen den Plattformen im direkten 
Vergleich? - Neuen Code sukzessive auf ein ausführbares Minimalprogramm, 
das den Fehler noch darstellt, herunterstrippen und dort den Fehler 
ermitteln und eliminieren.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Frank K. schrieb:
> alles was ich seit Nutzung von Platformio programmiere läuft nicht
> richtig.

Ich kann dich da beruhigen: bei meiner früheren Firma haben wir 
PlatformIO professionell eingesetzt. Das war zwar jetzt eine andere 
Plattform als bei dir (SAME70, also ein Cortex-M7), aber PlatformIO ist 
gewiss nicht an deinen Problemen schuld.

Allerdings sollte man dessen gewahr sein, dass PlatformIO 
(normalerweise) lokale Installationen aller Tools in seiner eigenen 
Umgebung benutzt, also nicht irgendwelche Compiler, die sonst auf dem 
System herum lungern. Ich glaube, auf unixoiden Systemen liegen die 
irgendwo unter $HOME/.local. Bei Windows wird das sicher irgendwo in 
AppData sein.

von Wolfgang (Gast)


Lesenswert?

Frank K. schrieb:
> Gibt es ein Qualitätsunterschied bei der Erstellung eines Build
> generiert aus Arduino-IDE im Vergleich zum Build generiert aus VSC
> Platformio (ESP32 / gleicher PC)?

Da definiere mal, wie du die Qualität zu messen gedenkst.
Ohne ein sauber spezifiziertes Messverfahren lässt sich schlecht 
Vergleichen.

von Stefan F. (Gast)


Lesenswert?

> Sehe gerade das der Compiler recht alt ist...

Kein problem, ich nutze außerhalb von Arduino für AVR immer noch Version 
5.4.0 weil die bei Debian Linux dabei ist. Arduino hat eine neuere 
Version dabei, mit der habe ich auch keine Probleme.

Eigentlich kann ich mich gar nicht dran erinnern, wann das letzte mal 
ein gcc (scheinbar) fehlerhaften Code erzeugt hat. Das muss wohl schon 
20 Jahre her sein. Wenn etwas nicht klappte, dann eher weil im Quelltext 
eine neue Syntax benutzt wurde, die der installierte ältere gcc noch 
nicht unterstützte.

Ich muss dazu sagen, dass ich die höchste Optimierungsstufe -O3 
allerdings noch nie benutzt habe. Vielleicht ist diese riskanter, was 
Fehler angeht.

von Martin G. (Firma: kamaste.it GmbH) (myg63)


Lesenswert?

Es könnte sein, dass Du eher die "Umgebung" meinst. Also die 
Bibliotheken die Du benutzt wie Ethernet, SPI, I2C, MQTT, 1Wire, Math 
etc...
Diese haben meiner Erfahrung nach auch Seiteneffekte bzw. 
unterschiedlich zu behandelnde "Feinheiten".

Es gibt Fälle wo man den Quellcode nicht 1:1 übernehmen kann, da die 
verwendete Hardware anderes Timing in Arduino bzw. PlaformIO benötigt.
Besonders spannend wird es, wenn Du dir aus dem Internet Beispiele 
besorgst, wo ältere Libs eingebunden werden, die dann andere Libs 
wiederum negativ beeinflussen.

Hier muss man mitunter sehr genau hinsehen, was konkret in welcher 
Version tatsächlich verwendet und reinkompiliert / gebunden wird.

von Frank K. (micromax)


Lesenswert?

Martin G. schrieb:
> Es könnte sein, dass Du eher die "Umgebung" meinst. Also die
> Bibliotheken die Du benutzt wie Ethernet, SPI, I2C, MQTT, 1Wire, Math
> etc...

Ja das hatte ich ja in meinem zweiten Thread schon im Verdacht. Mir 
erscheint, dass MQTT irgendwie anders arbeitet wenn sie als 
PubSubClient.h in Platformio includiert wird als wie in der Arduino-IDE. 
Ich kämpfe mit verschluckte Meldungen u.s.w. Werde jetzt nochmal die 
Arduino-IDE installieren und dort die Binärdatei erzeugen. Letztendlich 
bringen ja die Arduino-IDE und VSC mit Platformio unterschiedliche C++ 
Compiler mit und nutzen nicht ein installiertes MinGw (war mir übrigens 
noch nicht klar)!

btw: Ich habe seit einem Jahr etliche MQTT-Smarthomeanwendungen 
programmiert und elektronisch in Einsatz gebracht. Alles läuft wunderbar 
mit ESP32er die mit der Arduino-IDE programmiert wurden. Deshalb derzeit 
mein "komisches Gefühl" mit Platformio.

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.