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
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
Was verstehst du hierbei unter "Qualitätsunterschied"? Gebe mal Beispiele.
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! :-)
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.
> 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...
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..
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.
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.
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.
> 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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.