如何在ESP8266上减小程序存储器的代码大小

时间:2018-08-07 14:06:09

标签: c++ iot esp8266 platformio

我们在Platfromio IDE上开发了带有ESP8266的物联网门禁系统。 您可以在esp-rfid GitHub repository上看到我们所有的作品。 我们想在我们的系统上使用ota更新,但是代码几乎覆盖了一半的内存,有时甚至是一半。如果代码覆盖的内存大于一半,则无法使用ota更新。如何减少代码大小?

感谢您的回答。

您可以从there中找到代码。

构建结果:

DATA: [==== ] 43.4% (used 35592 bytes from 81920 bytes) PROGRAM: [===== ] 48.6% (used 507732 bytes from 1044464 bytes)

2 个答案:

答案 0 :(得分:2)

  

如果代码覆盖的内存大于一半,我们将无法使用ota更新。

可以。更新到占用很少内存的很小的程序,唯一的工作就是对实际程序的下一个版本进行另一次更新。

  

我们如何减小代码大小?

在不了解您的代码的情况下很难说。

答案 1 :(得分:1)

不用看源代码,我可以告诉您某些C ++功能作为内存消耗比其他功能便宜,例如:名称空间,类(尤其是通用的)便宜,而例如异常处理则非常昂贵。 / p>

一些提示:

  • 生成代码时,请确保剥离所有调试符号
  • 使用泛型,因为只有正在使用的代码在可执行文件中而不是整个库中都转换为二进制文件
  • 检查编译器/链接器选项,以了解如何进一步减少这种情况