2016-07-11 32 views
1

Ich denke, ich habe ein grundlegendes Verständnis Problem in Bezug auf die nodemcu/ESP8266, wenn es mit der Arduino IDE und/oder Visual Micro verwendet wird (für MS Visual Studio).nodemcu/ESP8266 mit Arduino IDE - Firmware?

Jedes Mal, wenn ich ein Programm/eine Skizze hochlade, die in diesem Fall natürlich in C geschrieben ist, kompiliert und lädt es eine Binärdatei von etwa 280kB, auch wenn es nur ein einfaches "Blinken" -Beispiel ist.

Ist es eine Art von Firmware, die jedes Mal hochgeladen wird oder sind es nur monströse Bibliotheken, die für das ESP benötigt werden, um mit der Arduino IDE zu arbeiten?

Wenn es Firmware ist, "aktualisieren" Sie normalerweise die Firmware zu einem neueren Build, wenn Sie mit der Arduino IDE arbeiten? Bei Verwendung der nodemcu LUA-Firmware gibt es regelmäßige Updates.

Danke!

Antwort

1

Das ist völlig normal - Wenn Sie Code für eine interpretierte Sprache wie Lua für die ESP/NodeMCU schreiben, laden Sie nur eine relativ kleine Textdatei hoch, da der Code zum Ausführen bereits vorhanden ist der Chip und ändert sich nicht.

Wenn Sie jedoch mit kompilierten Sprachen wie C (z. B. nur mit dem Expressif SDK) oder C++ mit der Arduino IDE arbeiten, ersetzen Sie die gesamte Firmware jedes Mal, wenn sich der Code ändert. Dazu gehören der TCP/IP-Stack, die WiFi-Verwaltung, die Logik zur Steuerung der PHY/MAC-Schnittstelle, das Mini-Betriebssystem und eine Vielzahl weiterer Bits, damit Ihr ESP8266 funktioniert. Auch wenn Ihr Code nur eine einfache "Blink" -Sequenz zu sein scheint, gibt es hinter den Kulissen viel Code, der dies ermöglicht, was zu der großen Skizzengröße führt.

Im Allgemeinen wird jede Änderung an Ihrem Skizzencode eine vollständige Kopie von allem erzeugen, das benötigt wird, um eine bootfähige, ausführbare Binärdatei für den ESP8266 zu erstellen. Dies verursacht die 280KiB-Datei. Da jede Kopie Ihres Codes die neueste (oder zumindest was auch immer in Ihrer IDE ist) Kopie des Codes auf Systemebene enthält, gibt es keinen separaten Aktualisierungsprozess - Jedes Mal, wenn Sie Ihre Skizze hochladen, wird auch der Systemcode aktualisiert.

Darüber hinaus gibt es einige zusätzlichen Aufwand von der Arduino-Abstraktion auf dem Espressif SDK, was zu einer größeren resultierenden binären Größe führt.

3

Grundsätzlich Sie bauen Sie die Firmware, die eine Kombination aus Ihrem eigenen Code ist, und viele andere Code/Bibliotheken. Alle anderen Teile sind Teil des Arduino ESP8266-Kerns, der tatsächlich Updates erhält (er lebt hier: https://github.com/esp8266/Arduino). Und es selbst enthält das Espressif SDK, das auch Updates erhält (https://github.com/esp8266/Arduino/tree/master/tools/sdk). Wie NodeMCU können Sie regelmäßige Updates erhalten, aber sie sind der Kern, und die einzige Möglichkeit, sie in Ihre Firmware zu bekommen, besteht darin, Ihre Skizze neu zu kompilieren.

+0

Danke euch beiden! Das ist etwas, was ich erwartet habe. Das einzige, worüber ich mir nicht sicher bin, ist, wie man das Arduino ESP8266 Core/Espressif SDK aktualisiert, wenn der Arduino Board Manager in der Arduino IDE sagt, dass es auf dem neuesten Stand ist. Muss ich das GIT-Repository herunterladen und in die Arduino IDE importieren, wie in https://github.com/esp8266/Arduino/blob/master/README.md beschrieben? Woher weiß ich, welche Version ich dann verwende? Gibt es andere "nächtliche" Zweige oder etwas? – nemail

+0

Da ich nicht wirklich die Arduino IDE verwende, bin ich mir nicht 100% ig sicher, aber schau dir die Installationsanweisungen für den Core an (http://esp8266.github.io/Arduino/versions/2.0.0/doc/ installing.html #), würde ich erwarten, dass der 'Board Manager' Sie über neue Versionen benachrichtigt, sobald die Entwickler sie freigegeben haben, und Ihnen dann erlauben, sie zu installieren. Sie müssen nur den Kern aktualisieren, die erstaunlichen Entwickler, die daran arbeiten, werden das SDK und solche, die darin verwendet werden, aktualisieren. – cranphin