我想我对nodemcu/ESP8266在使用Arduino IDE和/或visual micro (用于MS Visual Studio)时有一个基本的理解问题。
每次我上传一个显然是用C语言编写的程序/草图时,它都会编译并上传一个大约280kb的二进制文件,即使它只是一个简单的“眨眼”示例。
是每次都上传的固件,还是ESP与Arduino IDE协同工作所需要的怪异的库?
如果是固件,在使用Arduino IDE时,您通常会将固件“更新”到更新的版本吗?使用nodemcu LUA固件时,会定期更新。
谢谢!
发布于 2016-07-12 16:38:58
基本上,构建固件,它是您自己的代码和许多其他代码/库的组合。所有其他部分都是Arduino ESP8266核心的一部分,它确实得到了更新(位于这里:https://github.com/esp8266/Arduino)。它本身包含Espressif SDK,也可以获得更新(https://github.com/esp8266/Arduino/tree/master/tools/sdk)。像NodeMCU一样,你可以定期更新,但它们是核心的,把它们放到你的固件中的唯一方法是重新编译你的草图。
发布于 2016-07-12 06:17:33
这是完全正常的-当为ESP/NodeMCU的Lua这样的解释型语言编写代码时,您只是上传了一个相对较小的文本文件,因为运行它所需的代码已经在芯片上,并且不会改变。
但是,当您开始使用C(例如,仅使用Espressif SDK )或使用Arduino IDE的C++等编译语言时,每次代码更改时都会替换整个固件。这包括TCP/IP协议栈、WiFi管理、控制物理层/介质访问控制接口的逻辑、迷你操作系统,以及使您的ESP8266工作的许多其他位。即使您的代码看起来只是一个简单的“眨眼”序列,但有许多代码在幕后运行,以使其成为可能,从而导致大草图尺寸。
通常,对草图代码的每次更改都将生成为ESP8266创建可引导、可运行二进制文件所需的所有内容的完整副本。这就是导致280KiB文件的原因。由于代码的每个副本都包含系统级代码的最新副本(或者至少是IDE中的任何副本),因此没有单独的更新过程-每次您上传草图时,系统代码也会更新。
此外,Espressif SDK上的Arduino抽象有一些额外的开销,导致产生更大的二进制大小。
https://stackoverflow.com/questions/38304224
复制相似问题