Schreiben eines C-Programms außerhalb von Arduino IDE?


12

Ich mag die Idee, die Arduino IDE für einfache Projekte mit und für mit Arduino der ersten Schritte, aber der Konsens die ich bisher bekommen habe ist , dass es für diejenigen, die neu in Arduino und / oder Programmierung im Allgemeinen.

Ich verstehe, dass es möglich ist, ein C-Programm von Grund auf außerhalb der Arduino IDE zu schreiben und es dann mit einem Tool wie AVRDUDE auf eine Arduino MCU hochzuladen. Diese Option ist zwar ansprechend und interessant, lässt mich jedoch einige Bedenken haben:

  • Welche Arduino-Bibliotheken müssten von einem solchen "raw C" -Programm importiert / verknüpft werden? Ich gehe davon aus, dass ein auf Arduino IDE basierendes Programm, wenn es ein ausführt digitalWrite(...), tatsächlich eine C-Bibliothek aufruft, die wahrscheinlich von Arduino bereitgestellt wird. Ich sorge mich darum, dass all diese "zugrunde liegenden Bibliotheken" in mein C-Programm aufgenommen werden. Gedanken?
  • Geht sonst noch etwas "verloren", wenn man alleine fliegt und sich außerhalb der Arduino IDE wagt? Irgendwelche Fähigkeiten / Features, die ich jetzt "selbst rollen" müsste?

arduino.stackexchange.com/questions/9538/… Die Antworten auf meine Frage halfen mir, sie einzurichten. Sie können alles von Arduino ersetzen / weglassen. Sie können: -Ihr eigenes Board machen. -Verwenden Sie Ihre eigene IDE. -Benutzen Sie Ihre eigenen Bibliotheken.
Paul

Antworten:


4

Hier sind zwei schöne Artikel, wie Arduino tatsächlich im Hintergrund funktioniert. Wie es Reibung von der Mikrocontroller-Programmierung entfernte.

  1. Eine Tour durch die Arduino Internals: Wie funktioniert Hello World eigentlich?
  2. Arduino und GCC, kompilieren und laden Programme nur mit Makefiles hoch

Es wurde auch hier diskutiert Gibt es eine Möglichkeit oder ein Tutorial zum Konvertieren von Arduino-Code in C-Code?


Danke @Michal Foksa (+1) - Ich schätze, ich bin nur schockiert, dass die Antwort darauf nicht viel bekannter ist! Ich hätte gedacht , dass die Arduino IDE hatte, sagen wir, ein lib/Verzeichnis irgendwo unter seiner Installation Wurzel , die Dinge wie gehabt arduino-core.dll, arduino-io.dlletc.
smeeb

@smeeb: Sie haben Recht, die Arduino IDE-Installation muss Bibliotheken der grundlegenden Laufzeitfunktionen sowie vom Benutzer bereitgestellte enthalten. Auf halber Seite von Link 2 im Makefile zeigt das Symbol LIBS auf sie. Es handelt sich nicht um DLLs (die in Windows zur Laufzeit aufgerufen werden). Es handelt sich dabei um Objektdateien (.o unter Unix-ähnlichen Systemen, wahrscheinlich auch unter Windows), die statisch mit Ihren kompilierten Objektdateien zu einer .hex-Ladedatei verknüpft sind, die das vollständige Loader-Image darstellt. ...
JRobert

... Menschen, die Programme für ihren Lebensunterhalt schreiben, wissen Bescheid, aber die Werkzeugdesigner von Arduino haben absichtlich so viele Details wie möglich verborgen, um die Anwendung digitaler Elektronik für Menschen verfügbar zu machen, ohne dass sie professionell werden müssen Programmierer und Ingenieure, um es zu tun. Soweit Sie diese Informationen in der Arduino-Community nur schwer finden, waren sie erfolgreich!
JRobert

Leider erstellen Sie Arduino-Software aus älteren Gründen ganz anders als im Standard akzeptiert. Um es einfach zu machen, haben sie eine riesige inkompatible Community geschaffen. Jedes IDE-Plugin ist ein Versuch, etwas, das nicht zum Standard gehört, so zu machen, dass es fast zum Standard gehört. Denken Sie daran, wenn Sie auf Probleme stoßen.

5

Sie haben absolut Recht damit, Links zu anderen Bibliotheken zu erstellen. Sie müssen sich jedoch nicht unbedingt selbst um alle Details kümmern, es sei denn, Sie möchten / müssen etwas Ungewöhnliches tun. Einige alternative IDEs unterstützen bereits Arduino, normalerweise über Plugins, die viele Details automatisch verarbeiten.

Normalerweise empfehle ich Eclipse, da es eine sehr weit verbreitete IDE für verschiedene Zwecke ist. Es gibt jedoch mehrere andere Möglichkeiten. Weitere Informationen finden Sie in dieser Frage:


Danke @Peter R. Bloomfield (+1) - aber ich bin wirklich auf der Suche nach einer nicht IDE-zentrierten Antwort. Nicht, dass ich etwas gegen IDEs habe, es ist nur so, dass ich zum Verständnis der "Bibliothekslandschaft" von Arduino der Meinung bin, dass IDEs nur ein unnötiger Mittelsmann sind. Abgesehen davon würde ich davon ausgehen, dass es 1+ "Kernbibliotheken" gibt, mit denen ALLE Arduino-Apps eine Verknüpfung herstellen müssen, und dass es dann optionale Bibliotheken gibt, die Sie möglicherweise benötigen oder nicht, je nachdem, was Ihre App tatsächlich tut. Können Sie mich auf eine Liste dieser "Kernbibliotheken" sowie auf andere optionale verweisen? Danke noch einmal!
Samstag,

Und um zu qualifizieren, was ich oben über IDEs als "unnötige Zwischenhändler" gesagt habe, meine ich wirklich : Ich sollte in der Lage sein, eine C-App außerhalb einer IDE (Arduino, Eclipse oder auf andere Weise) zu schreiben , die auf die Arduino-Bibliotheken verweist Meine App muss die App weiterhin auf Arduino-Hardware kompilieren / bereitstellen. Ich frage mich, was diese Bibliotheken sind und wo ich Dokumentation darüber finden kann.
Samstag,

@smeeb Angesichts der Tatsache, dass Arduino für Anfänger gedacht ist, denke ich, dass es nicht viele (wenn überhaupt) offizielle Dokumentationen in dieser Richtung gibt. Ich gehe davon aus, dass die beste Möglichkeit zur Recherche darin besteht, online nach Beispielen für Arduino-Makefiles zu suchen. Es gibt einige alte Beispiele am Ende dieser Seite .
Peter Bloomfield

@smeeb: Wie Sie bin ich kein Fan von IDEs. Es gibt ein paar generische Arduino-Makefiles, die im Web schweben. Sie haben grundsätzlich die Arduino - Core - Bibliothek in libore.a kompilieren, dann mit Ihrer .ino Datei kompilieren -x c++ -include Arduino.hfür Ihren Compiler (plus ein paar zu verstehen -D, -Iusw.) und einen Link mit libcore.a.
Edgar Bonet

0

Ja, Sie können ein Programm außerhalb von Arduino IDE schreiben. Zum Beispiel habe ich Eclipse IDE mit AVR Plug-In ausprobiert und jetzt bleibe ich bei AVR Studio. Natürlich werden Sie nicht einige Funktionen haben, die Sie normalerweise verwenden, wenn Sie in Arduino IDE schreiben, und auch einige Bibliotheken. Aber warum nicht versuchen, Dinge zu implementieren? Warum sollten Sie sich auf Funktionen und Bibliotheken beschränken, die von anderen erstellt wurden, wenn Sie Ihre eigenen lernen und schreiben können, vielleicht sogar besser als die vorhandenen?


-3

ESP8266 + Arduino IDE 1.6.4 Portable - Vollständige Kurzanleitung zur Installation www.instructables.com /.../ ESP8266-Arduino-IDE-164-Portable-F ...

Alle Ihre Arduino IDE v 1.6.4-Dateien, einschließlich der ESP8266-Erweiterung, Skizzen, installierten Bibliotheken usw., sollten sich nur im neu erstellten Ordner "arduino-1.6.4" befinden.


Dies ist keine sehr hilfreiche Antwort. Der Link ist kein echter Link. Und selbst wenn dies der Fall sein sollte, sieht Stack Exchange Antworten nur über Links mit Stirnrunzeln, da die verknüpfte Site ausfallen kann. Bitte erweitern Sie Ihre Antwort.
Nick Gammon
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.