一 前記
在使用ESP8266模塊時,通常會用到一些刷機軟件。官方提供了nodemcu_flasher、ESPFlashDownloadTool、ESP8266Flasher等下載工具,但是缺少更底層的工具,不能進行讀取、擦寫、校驗等功能。
ESPtool.py是一個python開發的針對ESP8266的小工具,可以實現底層的操作,彌補ESP8266官方工具的不足。flash的小工具,可以彌補ESP8266官方工具的不足。它也是一個開源項目,項目在github上進行托管:
https://github.com/themadinventor/esptool
雖然可以直接從github上下載使用,但是更好的方法是通過網絡的方式進行安裝,這樣不會缺少依賴模塊,減少運行中的故障。下面就介紹它的安裝方法。
- 因為esptool.py需要使用python2,所以我們先需要安裝python2,並將python加入系統路徑(path)。
- 安裝python的包管理器pip,通常是使用get-pip.py進行安裝。在 https://pip.pypa.io/en/latest/installing/ 可以找到安裝的說明和需要下載的文件,按照說明可以很容易安裝pip。(如果同時安裝了python2和python3,pip可能默認是pip3,需要用pip2來代替下面的pip,在Linux上需要用sudo權限安裝)。
- 用pip安裝esptool
pip install esptool - 因為esptool需要使用串口,所以還需要安裝pyserial。
pip install pyserial
安裝后,在Linux下,通常就可以直接運行esptool.py,在Windwos下,esptool一般安裝在python2\Scripts\目錄下,需要輸入完整目錄才能運行,如:
c:\Python27\Scripts\esptool.py
如果不清楚esptool.py的用法,可以輸入-h查看幫助,如
esptool.py -h
甚至可以查看某個用法的幫助:
esptool.py read_flash -h
二 問題解決
在使用:make flash燒錄ESP8266版本時候,有時候會遇到這樣一個問題:a fatal error occurred :MD5 of file does not match data in flash!
面對這個問題,很多人會束手無策,這個時候,神奇小助手:esptool.py就登場了.
只需要一個命令:
sudo ./esptool.py -p /dev/ttyUSB1 write_flash_status --non-volatile 0
即可解決問題。
注意事項:這個命令是在esp8266進入燒錄模式的時候才可以使用,在linux和mac下,一定要使用sudo
當顯示下面log的時候,說明燒錄成功了。
esptool.py v2.4.0
Connecting........_
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
MAC: b4:e6:2d:68:3b:96
Uploading stub...
Running stub...
Stub running...
Initial flash status: 0x0200
Setting flash status: 0x0000
After flash status: 0x0000
Hard resetting via RTS pin...
接下來,再使用:make flash 燒錄即可了。