ESP8266 更新韌體
對於ESP8266的韌體類型有所了解後,接下來就是要利用工具將韌體上傳至ESP8266,首先必需先將更新韌體的電路完成後,就能使用工具將韌體上傳至ESP8266。
更新韌體必需要將ESP8266切換至UART0啟動
,之後利用命令去讀、寫ESP8266上的外置FLASH,因命令是公開的,所以有官方及開發者提供的更新工具,這裡會大略說明一下常用的更新工具。
官方
ESP8266 DOWNLOAD TOOL
下載
官方網站下載:
下按完後後為ZIP
檔案自行解壓縮後進到flash_download_tools_v3.4.4'目錄中執行
ESPFlashDownloadTool_v3.4.4.exe`:
選擇ESP8266 DownloadTool
後會進入程式的畫面:
進入畫面後依照下面步驟檢查:
選擇依序選擇檔案並且輸入寫入的位址(Ex:boot.bin 0x0)
選擇Serial埠,COMx,如果你執行程式之前已經連接好ESP8266,那程式會自動選擇,如果沒有就到裝置管理員查看
設定BAUD 可依照你的狀態選擇,一般選擇230400
勾選
SpiAutoSet
讓程式自動補齊設定(SPI SPEED/MODE/SIZE)勾選
DoNotChgBin
不讓程式改變韌體中針整Flash相關設定,如UI上的FLASH SIZE
,因為你已經選擇SpiAutoSet
按下
START
進行上傳
上傳之間會有一個Console視窗顯示進度:
完成後會看到下圖中的Console視窗已經顯示到100%
並且有出現提示Wrote 41943xxxxxxx....
:
基本上SpiAutoSet
勾選後,設定值程式會自動偵測,除非你有特定需求,如:32Mbit flash,但要燒錄的韌體是給8Mbit的Flash,那就要手動選擇(SPI SPEED/MODE/SIZE),並且將DoNotChgBin
、SpiAutoSet
勾選取消再進行更新即完成,另外燒錄細節也可以參考安信可官方提供的:如何为 ESP 系列模组烧录固件
esptool.py
[esptool](esptool原先由Fredrik Ahlberg利用Python所開發的工具,它具有跨平台的特性,只要有安裝Python 及 pySerial函數庫都能運作的很正常,丹尼已在Windows、Linux、macOS都使用過,Windows使用必需要注意先安裝python for windows版本,因普遍率及功能性,目前已經納入樂鑫官方專案,esptool新版1.3已支援python 2.7與python 3。。
esptool.py v1.3 - ESP8266 ROM Bootloader Utility positional arguments: {load_ram,dump_mem,read_mem,write_mem,write_flash,run,image_info,make_image,elf2image,read_mac,chip_id,flash_id,read_flash,verify_flash,erase_flash,version} Run esptool {command} -h for additional help load_ram 將映像檔載入RAM中並行執行 dump_mem 轉存記憶體資料至檔案(轉存ESP資料) read_mem 讀取記憶體指定位址並存至檔案 write_mem 讀取檔案內容並寫入至記憶體指定位址 write_flash 將檔案內容寫入至SPI Flash run 執行Flash裡的應用程式碼 image_info 轉存可執行應用映像檔的標頭 make_image 從二進位檔建立可執行的應用 elf2image 從ELF檔建立可執行的應用 read_mac 從OTP ROM讀取MAC位址 chip_id 從OTP ROM讀取晶片資訊 flash_id 讀取Flash出廠資訊(可透過此ID得知容量大小) read_flash 取讀SPI Flash內容 verify_flash 驗證bin與Flash erase_flash 抹除SPI Flash version 列印出esptool版本 optional arguments: -h, --help show this help message and exit --port PORT, -p PORT Serial埠名稱(Linux ttyxxx,macOS cu.xxx,Windows COMx) --baud BAUD, -b BAUD Serial埠速度
韌體上傳命令示範:
./esptool.py -p /dev/ttyUSB0 write_flash 0x00000 Ai-Thinker_ESP8266_DOUT_32Mbit_AiCloud_0.0.0.6_20170517.bin
其中-p
後所接的是你的通訊埠名稱(macOS以cu.命名規則,Linux以ttyXXX,Windows以COMx),韌體寫入位址從0x00000開始,來源檔為Ai-Thinker_ESP8266_DOUT_32Mbit_AiCloud_0.0.0.6_20170517.bin
,一切順利後就會更新完成:
./esptool.py -p /dev/cu.usbmodem5d11 write_flash 0x00000 Ai-Thinker_ESP8266_DOUT_32Mbit_AiCloud_0.0.0.6_20170517.bin Connecting... Erasing flash... Writing at 0x0007ef00... (100 %)
非官方
NodeMCU Flasher
ESP8266一開始會受歡迎也是因為有名為NodeMcu所製作的開發板,它內建支援Lua語法,可以利用Serial console進行程式的線上編寫,該官方也提供一款專為NodeMcu使用的上傳程式,不過它也可以使用在其他的ESP8266開發板。,主程式分為:
開啟後選擇你連接的Serial埠名稱。
到Config
頁面,每個firmware更新方式不同,依照官方SDK所產生出來的是多個檔案並且指定位址的,要記得依照位扯選定檔案後後再輸入寫入的位址,不過有的像安信可提供的韌體大小是符合整個flash大小,不需要分段更新,所以只要設定寫入從0x00000
,並且選擇好檔案:
選擇好檔案後再回到Operation
頁面按下Flash
開始升級韌體,要記得進入UART0
啟動(升級模式)。
上傳過程中切換至Log
能看到更新韌體所進行的過程
更新一切正常後就能看到左下方圖示為綠色打勾,代表已經將韌體更新成功。
注意事項
官方提供的程式已經非常久沒更新,據丹尼實測結果,韌體檔案超過512KBytes
就會無法上傳。丹尼推測更新程式應該只是針對當時SDK編譯出來的程式碼大小(通常都<512KBytes)進行規範,再加上一些系統設定(esp_init_data_default.bin、eagle.irom0text.bin…)是分開燒錄,所以限制在512KBytes
,所以,要記住,如果你的檔案超過512KBytes
就可能無法使用。
參考資料
The post ESP8266 更新韌體 appeared first on 可丁丹尼 @ 一路往前走2.0.