Guten Abend,
ich frage mich gerade ob es eine Alternative gibt für die Arduino IDE um
z.b. die ganzen anderen Boards wie ESP8266m, ESP32, Nucleos, ChipKIT
etc...
Ich würde gerne versuchen einen anderen Compiler bzw IDE zu verwenden!
Atmel Studio ist ja ganz nett, aber kann man da auch Files einfügen um
für z.b. STM32F zu compilieren? Was am wichtigsten wäre ist die
Programmer-Unterstützung. Bei Arduino wählt man aus was man hat und
wartet bis der Code im Chip ist. Ganz elegant bei dem ESP, da dessen
Eigensoftware Dreck ist...
PS: dabei meine ich nicht den bestehenden Tread ""Alternativen zur
Arduino IDE!"
make und EMACS sind nicht nur Compiler-agonistisch (aka: kommen mit
jeder Zielplatform klar) sondern auch hochgradig portabel über viele
Hostumgebungen.
Beides sind beste Grundlage für DIE höchsflexible IDE schlechthin.
Marc Horby schrieb:> Atmel Studio ist ja ganz nett, aber kann man da auch Files einfügen um> für z.b. STM32F zu compilieren?
Welches Interesse sollte Atmel daran haben die harte Konkurrenz zu
unterstützen?
Für Eclipse gibt es viele PlugIns, das ist aber keine Ein Klick
Installation wie bei Arduino.
Dann gibt es noch Anbieter wie Keil oder Segger die da viel Manpower
reinstecken aber das natürlich entsprechend bezahlt haben wollen.
Sid schrieb:> make und EMACS sind nicht nur Compiler-agonistisch
"agnostisch" wenn Du schon mit Fremdworten um Dich wirfst. Ansonsten ist
Deine Argumentation zutreffend, nur EMACS würd ich heutzutage durch nen
vernünftigen Editor ersetzen, zum Beispiel vscode.
hab mir das mal angeschaut. Es wird als cross plattform bezeichnet,
okay. Liest man sich in die Doku ein stellt man fest, es ist nur ein
"Megaplugin" welches es für sämtliche bekannten IDEs gibt. Ich verstehe
den Sinn nicht. Man muss ja doch alles und jedes installieren und das
"cross plattform plugin" zusätlich oben drauf.
Eclipse für Arduino gibt es fertig konfiguriert bei sloeber,
http://eclipse.baeyens.it/ Die Videos von dem Entwickler sind ganz
lustig und gut gemacht.
Ich freunde mich selber gerade mit VSCode an obwohl ich schon mehrere
Jahre Eclipse benutze. VSCode ist erstmal spartanischer, die
Konfiguration erfolgt nicht über Dialoge sondern über eine endlose
Settings Liste, die aber hierarchisch ist und Kommentare zu den
Einstellungen hat. Die Magie steckt in den PlugIns, für Arduino gibt es
eines von MS. Die Installation ist über die Extensionliste einfach,
danach muss noch der Arduino IDE Pfad angegeben werden. Vielleicht wird
der automatisch gefunden, ich habe aber die Arduino Version aus dem
Windows Store für Win10 installiert und das klappt nicht, steht
allerdings auch in der Installationsanleitung die man immer erst
hinterher liest...
Für Intellisense muss man noch den Pfad zu den Libraries angeben, dann
läuft es richtig gut. Zum Kompilieren gibt es keinen Button, das muss
man über das Kommando Arduino:Verify anstossen (F1 öffnet
Kommandoeingabe).
Debugging soll mit einigen Cortex-M Arduinos funktionieren, habe ich
nicht ausprobiert.
Eine PlatformIO Extension gibt es auch, die ist weiter entwickelt und
macht einiges anders, hat evtl. ein eigenes Buildsystem und kann auch
mbed nutzen. Aber das ist mir wieder zu undurchsichtig und für mbed kann
ich eine einfache Extension benutzen oder den Build/Debug Prozess über
das VSCode Tasks Konzept benutzen. Das ist alles wesentlich einfacher
durchschaubar als bei Eclipse wo jeder Bildschirmpixel konfiguriert
werden kann aber so wichtiges wie die CDT generierten makefiles kaum
beeinflusst werden können.
Die VSCode Extensions sind wie VSCode in Javascript/Typescript
geschrieben und können mit VSCode selber entwickelt und entwanzt werden,
sehr cool.
VScode hatte ich für Arduino probiert. Installieren und Arduino Plugin
geht einfach. Danach wird es jedoch Mist. Für jeden Upload oder
kompilieren muss man hoch und den Befehl dafür eintippen. Geht gar nicht
wenn man schon Buttons gewöhnt ist. Das ist mir alles auch viel zu
undurchsichtig. Das Problem haben alle IDEs die Multikulti sein wollen.
Die Konfigurationsanleitungen sind auch meistens veraltet. Man muss
zuviel Hand anlegen.
Fauli schrieb:> Für jeden Upload oder kompilieren muss man hoch und den Befehl dafür> eintippen.
Naja, es ist F1 + ein Klick weil die letztbenutzten Kommandos in der
Liste oben bleiben.
Ein Symbol in der Statuszeile zu erzeugen sind wenige Zeilen Code in der
Extension, es wundert mich das es nicht drin ist. Aber die
Entwicklergemeinde da ist groß und dynamisch, das ist mit Sicherheit nur
eine Frage der Zeit.
Ich kann eigentlich nicht gut nachvollziehen warum man die Arduino IDE
wirklich so sehr haßt. Arduino Programme sind meist relativ klein, so
daß die einfache Umgebung nicht unbedingt ein großer Nachteil ist. Die
Einfachheit dieser Umgebung und die Portabilität und die problemlose
Installation auf vielen Rechnern sind doch auch Vorteile die
anerkennungswürdig sein könnten. Einzig und allein das Fehlen eines
Debuggers ist ein Manko. Das GCC Toolset erlaubt auch eigene Lösungen
ohne unbedingt von den Bibliotheken abhängig sein zu müssen, wenn auch
die Vielzahl der publizierten Bibliotheken das schnelle Testen neuer
Peripheien erlaubt.
Wir arbeiteten vor zwei Jahren an einem größeren Projekt mit
schätzungsweise über 30 Source und Header Dateien und es ließ sich immer
noch einigermaßen flüssig mit dem Arduino IDE arbeiten. Auch in externer
Editor funktionierte gut mit dem ID zusammen. Die complierte FW war an
die 200KB groß auf einem MEGA256 mit Graphic Display für ein Protyp
Meßgerät Proof of Concept und wir hatten kaum Probleme damit. Das Fehlen
eines Debuggers ist ein viel größerer Nachteil und wäre für mich ein
Grund einen uC mit JTAG wie z.B einen STM32 o.ä. zu bevorzugen.
Ich persönlich finde das Arduino IDE, wenn auch nicht ideal, aber
durchaus sehr brauchbar um schnell etwas zum Laufen zu bringen. Das
Fehlen des Debuggers ist die wirklich einzige Schwäche. Ich sehe die
Thematik Arduino eher locker. Nicht jeder muß professionelle,
sicherheitskonforme SW und HW entwickeln. Viele Arduino Projekte
verbleiben als reine Experimental Aufbautn um den ihnen zugedachten
Zweck mehr oder weniger gut zu erfüllen.
Professionellen Entwicklern wird ja in der Regel auch nicht zugemutet
mit solchen Werkzeugen zu arbeiten. Arduino befriedigt aber bestimmt
viele Erwartungen für die gedachte Zielgruppe von Elektronik
Interessenten und Studenten. Es ist ja jedem freigestellt wie tief und
gründlich in die weitere Thematik und Grundlagen der uC Technik er sich
einarbeiten möchte oder muß.
Was mich betrifft hat die Arduino Bewegung die Elektronikwelt in
positivem Maße bereichert. Die Arduino IDE beinhaltet alles wichtige um
funktionierende SW damit herstellen und herunterladen zu können. Ich bin
mir sicher, daß die Entwickler genau wußten was zwingend für das Aduino
Ökusystem notwendig war und was man weglassen konnte.
Gerhard O. schrieb:> Arduino Programme sind meist relativ klein,
Auch kleine Programme können große Probleme machen...
Allein das fehlende Intellisense / Code Completition kostet unnötig Zeit
für vermeidbare Fehler. Da setzt der Eclipse Parser immer noch hohe
Maßstäbe weil der auch defines berücksichtigt, also weiß ob etwas
bedingt gar nicht ausgewertet werden muss.
GDB Support ist in VSCode auch drin und kann über OOCD oder andere
Schnittstellen angeflanscht werden.
Fauli schrieb:> VScode hatte ich für Arduino probiert. Installieren und Arduino Plugin> geht einfach. Danach wird es jedoch Mist. Für jeden Upload oder> kompilieren muss man hoch und den Befehl dafür eintippen. Geht gar nicht> wenn man schon Buttons gewöhnt ist. Das ist mir alles auch viel zu> undurchsichtig. Das Problem haben alle IDEs die Multikulti sein wollen.> Die Konfigurationsanleitungen sind auch meistens veraltet. Man muss> zuviel Hand anlegen.
Mit PlatformIO (Plugin für VSCode/Atom) bekommst du deine gewünschten
Buttons wieder (Upload, Build, Monitor...) Ansonsten via Aufgabe
ausführen (Strg + Alt + T). Und mit dem integrierten Library Manager
bekommst du all das was Arduino IDE auch bietet und eben noch viel mehr.
Ich finds super. Benutze es inzwischen für AVR, ESP8266, ESP32 und
STM32. Egal welche Platform man verwendet, die Bedienung bleibt gleich.
Gerhard kann ich in seiner Aussage nur zustimmen. Der Debugger des
kleinen Mannes heißt "serielle Ausgabe". Ist eigentlich ausreichend für
den Hobbyprogrammierer. Ich hatte noch nicht das Bedürfnis den Bits
zuschauen zu müssen. :-) Und die Arduinoboards selbst können auch die
Profis unter euch zum entwickeln verwenden mit der gewohnten IDE. ISP
Pfostenstecker sind überall vorhanden.
Timmo, vielleicht probiere ich VScode mit dem Plattform I/O Plugin
nochmal aus - irgendwann. Danke für den Nachtrag, sonst hätte das bei
mir immer im schlechten Licht gestanden, scheinbar zu unrecht.
Gerhard O. schrieb:> Ich kann eigentlich nicht gut nachvollziehen warum man die Arduino IDE> wirklich so sehr haßt.
Eine Funktion, die es dort nicht gibt (oder die gut verborgen ist), ist
ein "gehe zur Definition/Deklaration eines Symbols" oder die "öffne die
#include-Datei, auf deren Namen gerade der Mauszeiger zeigt".
Gerade das aber ist zum Verstehen von sogenannten """"Libraries"""" *
wichtig, denn die "Dokumentation", die es gibt, ist oftmals sehr
unvollständig bis lausig.
Ein "mache eine Volltextsuche nach dem markierten Begriff in allen zum
Projekt gehörenden bzw. von ihm referenzierten Dateien" wäre ja auch
schon etwas, aber auch das scheint es in der Ardunio-IDE nicht zu geben.
*) die vielen Anführungszeichen stehen dafür, daß der Begriff hier von
den Arduino-Schöpfern in dümmlicher Weise falsch missbraucht wird, aber
das ist eine andere Geschichte, die schon an anderer Stelle ausreichend
ausdiskutiert wurde.
Rufus Τ. F. schrieb:> falsch missbraucht wird
Wäre es in Ordnung, wenn sie den Begriff richtig missbrauchen würden?
Rufus Τ. F. schrieb:> Ein "mache eine Volltextsuche nach dem markierten Begriff in allen zum> Projekt gehörenden bzw. von ihm referenzierten Dateien"
Das kann ja selbst Geany. Und da kann man auch Makefiles zum Compilieren
und Avrdude zum Brennen konfigurieren. Das Einzige was fehlen würde wäre
ein Uart-Terminal, aber dafür gibts auch genug Ersatz, zumindest unter
Windows.
Rufus Τ. F. schrieb:> Ein "mache eine Volltextsuche nach dem markierten Begriff in allen zum> Projekt gehörenden bzw. von ihm referenzierten Dateien" wäre ja auch> schon etwas, aber auch das scheint es in der Ardunio-IDE nicht zu geben.
...bislang dachte ich eigentlich, <Strg>-F täte genau dies (sofern man
dort "alle Tabs" angekreuzt hat)?
Karl K. schrieb:> Wäre es in Ordnung, wenn sie den Begriff richtig missbrauchen würden?
Besser wäre es, wenn sie ihn richtig gebrauchen würden, aber der Zug
ist abgefahren, Generationen von arduino-verseuchten Programmierern
werden eine harte Zeit haben, wenn sie es richtig lernen müssen, ganz
wie die Kinder, die in der Schule "Schreiben nach Hören" lernen.
Jan L. schrieb:> ...bislang dachte ich eigentlich, <Strg>-F täte genau dies (sofern man> dort "alle Tabs" angekreuzt hat)?
Wenn man "alle Tabs" ankreuzen kann, macht es offensichtlich was anderes
- es sucht in allen offenen Dokumenten, nicht aber in allen, die zum
Projekt gehören bzw. davon referenziert werden.
Rufus Τ. F. schrieb:> ganz> wie die Kinder, die in der Schule "Schreiben nach Hören" lernen.
Ach Gottchen, wir sind wieder bei "früher war alles besser" und "die
Jugend von heute" angekommen.
Rufus Τ. F. schrieb:>> Wenn man "alle Tabs" ankreuzen kann, macht es offensichtlich was anderes> - es sucht in allen offenen Dokumenten, nicht aber in allen, die zum> Projekt gehören bzw. davon referenziert werden.
Das bedeutet demnach, dass andere IDEs z.B. sämtliche Libraries, die im
Code referenziert werden, per Volltext durchsuchen, aus der IDE heraus?
Oder was bedeutet hier dann ‚referenziert‘?
Die Arduino-IDE macht zumindest mal automatisch alle Dateien auf, die im
Projektverz. liegen, und ‚zulässige‘ Endungen haben. Dürfte in den
meisten Fällen genügen, imo...
Bei den besseren IDE ist das nicht nur eine dumme Volltextsuche sondern
ein sprachabhängiges parsen der Quellen. Das bietet dann auch
Codevervollständigung und zeigt Syntaxfehler schon bei der Eingabe an,
ohne Kompilieren zu müssen.
Am besten hat das noch der Indexer vom Eclipse CDT drauf, der
berücksichtigt nämlich auch #defines was gerade bei Quelltexten die für
mehrere Targets geschrieben sind sehr hilfreich ist. Versuch mal den
Code von IRMP ohne so ein Feature nachzuvollziehen.
Rufus Τ. F. schrieb:> Gerhard O. schrieb:> Eine Funktion, die es dort nicht gibt (oder die gut verborgen ist), ist> ein "gehe zur Definition/Deklaration eines Symbols" oder die "öffne die> #include-Datei, auf deren Namen gerade der Mauszeiger zeigt".>> Gerade das aber ist zum Verstehen von sogenannten """"Libraries"""" *> wichtig, denn die "Dokumentation", die es gibt, ist oftmals sehr> unvollständig bis lausig.
Genau, gerade bei den ganzen Methoden mit Vererbungen noch und nöcher,
ist das schon sehr Hilfreich. Einfach die Methode markieren F12 Drücken
oder "gehe Zu Definition" und ggf. noch zwischen Header und Source
switchen und natürlich die Auflistung bei der Eingabe aller verfügbaren
Methoden und Überladungen ist schon extrem hilfreich. Das hat mir schon
unzählige Stunden an Durchsuchen der Quellen gespart (weil das mit der
Arduino IDE halt nicht möglich ist).
Ich bin ja eh kein Fan von C++, aber sowas wie Intellisense ist schon
eine Erleichterung insb. dann wenn man mit fremden Quellen/Libs
arbeitet.
Jan L. schrieb:> Das bedeutet demnach, dass andere IDEs z.B. sämtliche Libraries, die im> Code referenziert werden, per Volltext durchsuchen, aus der IDE heraus?
Libraries (*.a bzw. *.lib) im Volltext zu durchsuchen wäre Unfug, das
sind Binärdateien. Aber alle zum Projekt dazugehörenden Dateien (*.c,
*.cpp, *.h etc.) sowie alle von diesen Dateien includierten Dateien.
Ja, das können vernünftige IDEs.
> Die Arduino-IDE macht zumindest mal automatisch alle Dateien auf, die im> Projektverz. liegen, und ‚zulässige‘ Endungen haben. Dürfte in den> meisten Fällen genügen,
Das tut es genau dann nicht, wenn man eine Definition von etwas sucht,
was eben nicht im Projektverzeichnis liegt. Sei es, weil es in einer
zur Laufzeitumgebung gehörenden Include-Datei definiert ist, sei es,
weil es in einer sogenannten (Diskussion s.o.) """"Library"""" liegt.
Als ich das letzte mal was mit Arduino (ESP32 und ESP8266) etwas gemacht
habe, viel meine Wahl auf VisualMicro. Gibt es für AtmelStudio und dem
normalen VisualStudio als Extension. Lief ganz ordentlich.
PlatformIO hab ich auch mal getestete mit VsCode, als auch mit Atom. Hat
mich nicht sehr überzeugt und hab es deshalb auch schnell wieder
verworfen.
Heute benutze ich für die ESPs das Espressif SDK und VsCode ohne
PlatformIO. Zum flashen und kompilieren einfach make bzw. make flash in
das Terminal (innerhalb von VsCode) und fertig.