所以我的问题是围绕使用ardunio代码编写一组esp8266 ESP-12。
主要问题是每个esp8266都需要有一个令牌,允许它通过我们的服务器进行身份验证,但是每次都需要完全重新编译并且从开始到结束需要几分钟后才能通过并更改token = ___
(闪存1000多块电路板时很多。
简而言之是否有更简单的方法来包含不会重新编译整个事情的运行时变量?
答案 0 :(得分:1)
我不熟悉ESP8266,但大多数MCU可以执行以下一项或多项操作,具体取决于编程器是否允许单独编程部分闪存或是否具有外部可编程EEPROM:
答案 1 :(得分:1)
您可以将ID放入EEPROM中,但如果您想要闪存一个文件(Flash内容),则可以使用
static const uint32_t UniqueID __attribute__((section(".progmem"))) = 0x12345678;
但你不会知道flash中的地址,并且在重新编译时它可能会改变。
PROGMEM reference
您还可以在Flash中定义一个已知地址的部分(可能在内存的末尾)我知道这适用于GCC但从未在Arduino IDE中进行过测试。
static const uint32_t UniqueID __attribute__((section(".mySection"))) = 0x12345678;
最后一个解决方案是在代码中定义一个地址,用pgm_read_*
然后可以使用srec_cat
轻松修改.hex文件以更改ID,然后闪烁。
这可以在生产中用于为每个芯片提供唯一的ID。