mikrocontroller.net

Forum: Compiler & IDEs Alternative zu Arduino IDE die auch Boardverwalter unterstützt?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Marc Horby (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!"

Autor: Sid (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
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.

Autor: Johannes S. (jojos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
4 lesenswert
nicht lesenswert
PlattformIO! Alles drin

Autor: Veit D. (devil-elec)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Eclipse Photon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eclipse Photon mit CDT

Autor: Johannes S. (jojos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Fauli (Gast)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
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.

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Als plattformübergreifende IDE nehme ich gern Geany. Da kann man auch 
Make-Befehle festlegen.

Autor: Johannes S. (jojos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

: Bearbeitet durch User
Autor: Gerhard O. (gerhard_)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
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.

Autor: Johannes S. (jojos)
Datum:

Bewertung
2 lesenswert
nicht lesenswert
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.

Autor: Timmo H. (masterfx)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
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.

: Bearbeitet durch User
Autor: Fauli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Karl K. (karl2go)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Jan L. (ranzcopter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)?

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Karl K. (karl2go)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
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.

Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karl K. schrieb:
> Ach Gottchen

Wenn Du das so verstehst, kann ich auch nichts dafür.

Autor: Jan L. (ranzcopter)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
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...

Autor: Johannes S. (jojos)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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.

: Bearbeitet durch User
Autor: Timmo H. (masterfx)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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.

: Bearbeitet durch User
Autor: Rufus Τ. F. (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht lesenswert
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.

: Bearbeitet durch Moderator
Autor: Fauli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läuft PlatformIO auch mit aktuellen Python 3.x oder nur mit Python 2.7?

Autor: Fauli (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Python 2.7 is required. PlatformIO does not support Python 3."

Autor: Franz L. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.