ESP8266 韌體

ESP8266 韌體

韌體類型

ESP必需透過外接SPI介面的FLASH才能運作,搭配SDK的關系,對於FLASH有對應的佈局,所以支援幾種FLASH容量:512Kbytes、1024Kbytes、2048Kbytes、4096Kbytes,總共四種容量,其中官方也將SDK分為Non-FOTA、FOTA(Firmware On The Air),字面的意思是FOTA指可以透過網路線上更新,Non-FOTA無法透過網路更新,必需要透過連接的方式更新,下面針對於這兩種提供官方的佈局表:

  • Non-FOTA

  • FOTA

官方將韌體分成數多的小檔,每個檔案都對應到其燒錄的位址,如果需要更新韌體時就必需要依照Flash容量查表得知各檔案的寫入位址進行寫入,第一次需每個都寫入完成,第二次更新時只需要依照有變動的檔案執行更新寫入,像FOTA來說,它只更新程式碼的區段並寫入user2.bin,待ESP重開機後執行boot.bin程式內容再根據boot.bin程式內容的規則再將user2.bin程式內容搬移至user1.bin位址後再執行user1.bin

整合型韌體

韌體類型除了分為Non-FOTAFOTA之外,在燒錄時必需要準備非常多的檔案,因此在某些客製化韌體提供者會將所有的檔案整合成單一檔適合Flash容量大小的檔案,如此一來在燒錄時只需要指定位址從0x00000開始燒錄至整個Flash,例如安信可提供的韌體檔案會根據出貨的2種容量大小1024KBytes(8Mbits)4096Kbytes(32Mbits)

  • Ai-Thinker_ESP8266_DIO_8Mbit_AiCloud_0.0.0.5_20170324.bin

  • Ai-Thinker_ESP8266_DIO_32Mbit_AiCloud_0.0.0.5_20170324.bin

燒錄時就只需要指定位址為0X00000進行燒錄,這樣的好處是可以避免位址指定錯誤,但缺點是未來有更新檔必需要再重新燒錄一次,而不是只需要更新部分內容,這可能會讓升級過程增加許多的時間。

上圖為安信可韌體檔中提供燒錄1024Kbytes(8Mbits)的設定畫面擷圖

對於韌體的格式跟種類有些許了解後,對於接下來使用軟體更新韌體時就會比較了解設定些什麼。

官方韌體

官方因應各種應用,所以提供一種以AT命令的官方韌體,透過官方提供的AT命令來使用ESP進行網路應用,許多客製化韌體也是以此為基礎增加許多客製化的AT命令,像安信可就是一個非常好的例子, 它提供許多客製化的命令像:AT+CIOREAD來讀取I/O狀態及AT+CIOADC讀取ADC類比轉數位的值,透過這些客製化的命令就能變化出許多功能,不需要自已透過SDK再做二次開發。

參考資料