**编译带有许多模块的 NodeMCU 对内存使用有影响吗?**

使用云编译网站我创建了一个自定义的 NodeMCU 固件,其中包含了许多模块,因此固件本身的大小接近 700KB。我通常只在单个项目中使用最多 5 个模块,所以我想知道固件中包含所有其他模块是否会对 RAM 使用产生明显的负面影响。

点赞
用户131929
用户131929

有一个关于 ESP8266 内存映射(和其他有趣的部分)的优秀解释,位于 https://www.kickstarter.com/projects/214379695/micropython-on-the-esp8266-beautifully-easy-iot/posts/1501224。此外,你可以在评论中得到一个很棒的答案。

每个嵌入到二进制文件中的模块,仅凭其存在就会占用内存。如果您想测量单个模块对可用堆的影响,您需要构建两个二进制文件,一个带有该模块,一个没有该模块。您会将两者都烧录,然后计算启动后运行 node.heap() 的差值。

将 NodeMCU 编译为具有许多模块是否会影响内存使用?

是的,正如你注意到的那样,它肯定会有影响。

我通常只使用最多 5 个模块进行单个项目

这就是为什么我们建议为每个项目使用不同的一组(可读为“最小集合”)模块。 NodeMCU 固件之美在于您只需要执行一次此操作,与例如 Arduino 相反,在此之后,交换脚本或甚至单个功能都超级快速。

我建议您还查看一下 https://nodemcu.readthedocs.io/en/dev/en/lua-developer-faq/#techniques-for-reducing-ram-and-spiffs-footprint。正在制作一个重大改进,位于 https://github.com/nodemcu/nodemcu-firmware/pull/1899

2017-04-12 18:54:56