首页 文章

nodemcu / ESP8266使用Arduino IDE - 固件?

提问于
浏览
1

我想我在与Arduino IDE和/或visual micro(用于MS Visual Studio)一起使用时对nodemcu / ESP8266有一个基本的了解问题 .

在这种情况下,每次我上传一个明显用C语言编写的程序/草图时,它正在编译并上传大约280kb的二进制文件,即使它只是一个简单的“闪烁”示例 .

是不是每次都上传某种固件,或者它只是ESP与Arduino IDE一起工作所需的庞大库?

如果是固件,在使用Arduino IDE时,您通常会将固件“更新”到更新的版本吗?使用nodemcu LUA固件时,会定期更新 .

谢谢!

2 回答

  • 3

    基本上, you 构建固件,它是您自己的代码和许多其他代码/库的组合 . 所有其他部分都是Arduino ESP8266核心的一部分,它确实得到了更新(它存在于此:https://github.com/esp8266/Arduino) . 它本身包含Espressif SDK,它也获得更新(https://github.com/esp8266/Arduino/tree/master/tools/sdk) . 与NodeMCU一样,您可以获得定期更新,但它们是核心,将它们放入固件的唯一方法是重新编译草图 .

  • 1

    这是完全正常的 - 当为ESP / NodeMCU编写像Lua这样的解释语言的代码时,你只需要上传一个相对较小的文本文件,因为运行它所需的代码已经在芯片上,并且不会改变 .

    但是,当您开始使用C等编译语言(例如,仅使用Espressif SDK)或使用Arduino IDE编译C时,每次代码更改时都会替换整个固件 . 这包括TCP / IP堆栈,WiFi管理,控制PHY / MAC接口的逻辑,迷你操作系统以及一系列其他位,以使您的ESP8266正常工作 . 即使您的代码看起来只是一个简单的“闪烁”序列,也会在幕后运行大量代码以使其成为可能,从而导致大的草图大小 .

    通常,对草图代码的每次更改都将生成为ESP8266创建可引导的可运行二进制文件所需的所有内容的完整副本 . 这就是造成280KiB文件的原因 . 由于您的代码的每个副本都包含系统级代码的最新版本(或者至少是IDE中的任何内容)副本,因此没有单独的更新过程 - 每次上载草图时,系统代码也会更新 .

    此外,Espressif SDK上的Arduino抽象还有一些额外的开销,导致更大的二进制大小 .

相关问题