所以我遇到的問題圍繞着編程一堆esp8266 ESP-12 ardunio代碼。閃爍「Arduinos」在生產
主要問題是,每個esp8266都需要一個令牌,它允許它與我們的服務器進行身份驗證,但每次都要經過並更改token = ___
需要完整的重新編譯,並且從開始到結束需要幾分鐘的時間(這是一個很多時候閃爍1000年的電路板)。
總之有沒有更簡單的方法來包含運行時間變量,不涉及重新編譯整個事情?
所以我遇到的問題圍繞着編程一堆esp8266 ESP-12 ardunio代碼。閃爍「Arduinos」在生產
主要問題是,每個esp8266都需要一個令牌,它允許它與我們的服務器進行身份驗證,但每次都要經過並更改token = ___
需要完整的重新編譯,並且從開始到結束需要幾分鐘的時間(這是一個很多時候閃爍1000年的電路板)。
總之有沒有更簡單的方法來包含運行時間變量,不涉及重新編譯整個事情?
我不熟悉ESP8266,但大多數微控制器,你可以做一個或多個以下的,這取決於程序員是否允許閃存編程部分單獨或者它是否有一個外部可編程EEPROM:
你可以把ID爲EEPROM,但如果你精心想閃一個文件(Flash內容),可以使用 static const uint32_t UniqueID __attribute__((section(".progmem"))) = 0x12345678;
但你不會知道在閃光燈的地址,當你重新編譯它可能會改變。 PROGMEM reference
您也可以在Flash中定義一個已知地址的段(可能在內存的末尾)我知道這適用於GCC,但從未在Arduino IDE中進行過測試。
static const uint32_t UniqueID __attribute__((section(".mySection"))) = 0x12345678;
最後的解決方案是簡單地在代碼中定義的地址其中具有pgm_read_*
讀取.hex文件然後可以很容易地與srec_cat
修改以改變它的ID,然後被閃蒸。 這可用於生產爲每個芯片提供唯一的ID。
怎麼樣使用ESP芯片ID呢?但是必須有一些註冊。 – KIIV
每個令牌都必須被散列並存儲在服務器上。否則,這將工作完美 –
無論如何,您的服務器需要知道每個令牌,對嗎?所以,只要一個設備是唯一的,它的語義值是什麼並不重要,在運行時不會改變,並在服務器上註冊? –