【嵌入式開發】Linux上位機通過esptool燒寫ESP8266
阿新 • • 發佈:2018-12-31
前言
本教程針對非官方開發板、無狀態轉換按鈕、須通過gpio口控制esp8266進入下載狀態並實現esp8266韌體更新的嵌入式linux裝置。雖然esp8266有線上更新的功能,但由於開發需求不得不研究相關知識,而網上資料甚少,特此補充。
準備
- 上位機安裝好python, pip, 以及esptool,esptool下載地址:https://github.com/espressif/esptool,安裝方法極其簡單,在pip的支援下,在上位機命令列輸入
pip install esptool
即完成安裝。當然後面我又實現了離線安裝以上軟體的指令碼,具體方法須自行百度,這裡不作闡述。 - esp8266接線,IO2-EN-VCC均設為高電平,IO15低電平,RST-IO0要連到上位機可控制的gpio口上(需要切換高低電平),TXD、RXD、GND要正確連線到上位機對應的介面
- 韌體準備,請到官網下載對應的韌體,或編譯出自己的韌體。
燒寫流程
- 首先要確定燒寫地址,這個需要根據esp8266的flash大小做決定,如果不清楚自己的模組是什麼型號,可以通過輸入指令
esptool.py --port /dev/ttyUSB0 flash_id
檢視,其中--port /dev/ttyUSB0
需要改為上位機中連線esp8266的路徑, - 確認了flash燒寫格式就可以開始燒寫了,首先將
io0
置為低電平(下載模式),然後將rst
置為低電平(低電平有效),1秒後再置為高電平(模式切換後需要重置才有效),然後輸入類似write_flash --port /dev/ttyUSB0 0x00000 boot.bin 0x01000 use1.bin
write_flash --port 裝置路徑 地址1 bin1 地址2 bin2 ...
這樣去編寫命令 - 當然你也可以擦除flash,命令類似
esptool.py --port 裝置路徑 erase_flash
- 燒寫結束後將
io0
置為高電平(執行模式),然後將rst
置為低電平(低電平有效),1秒後再置為高電平(模式切換後需要重置才有效),然後就可以愉快地跑新的韌體了。
補充
- 訪問gpio口的方法是通過修改
/sys/class/gpio
實現的,例如要訪問gpio30高電平並設為,首先輸入echo 30 > export
,然後echo out > gpio30/direction
echo 1 > gpio30/value
就可以設定為高電平了。