ESP8266 常見固件燒寫失敗原因和解決方法(樂鑫)


簡介
在使用 ESP8266 進行開發時, 讀者或多或少都能遇到固件燒寫失敗情況, 無論是官方提供的 windows 上 Flash 下載工具, 還是 SDK 中提供的 esptool.py.
下面筆者提供幾種常見的燒寫失敗的原因和對應解決方法.

原因一: ESP8266 不在 UART boot
請通過 UART0 查看 ESP8266 上電打印:

ets Jan 8 2013,rst cause:1, boot mode:(1,n)
1
UART boot 對應 boot mode 第一參數為 1, 此值由 [GPIO15, GPIO0, GPIO2] 決定.
即 GPIO15 和 GPIO0 低電平, GPIO2 高電平.
boot mode 第一參數不為 1, 即不在燒寫模式, 將無法燒寫成功.
更加詳細說明參考: ESP8266 基礎篇: 啟動時 rst cause 和 boot mode

參考解決辦法:
不同模組/不同開發板解決方法不一而足, 但萬變不離其宗, 即確保:
GPIO15 和 GPIO0 低電平, GPIO2 高電平

例如: ESP-Launcher 開發板, 需將 IO0 開關撥到 L 側, CH_EN 開關撥到 H 側.
有些開發板需按住 BOOT 按鈕不放, 再短按 RST 按鈕松開, 再松開 BOOT 按鈕.
而后續的 ESP8266-DevKitC 則無需用戶關心此問題.

原因二: 供壓問題
常見供壓問題如下:

供壓不穩
供壓過高
供壓不足
參考解決辦法:
即最終確保模組 VCC(3V3) 和 GND 電壓穩定在 3.3V.
通常可以使用獨立供電的 HUB 來確保供壓問題.

原因三: 串口配置錯誤
某些讀者剛入門 Linux 或對 Windows /MacOS了解不深, 可能未配置對串口就開始燒寫, 而導致燒寫失敗.通常, 開發板或模組通過 USB 插到 PC 上, 不同平台對應不同燒寫口, 可以使用如下命令查看:

Linux: ls /dev/ttyUSB*
MacOS: ls /dev/tty.*
Windows: 計算機 -> 管理 -> 設備管理器 -> 端口 (COM 和 LPT)
參考解決辦法:
Linux 和 MacOS 用戶:

通過在 make menuconfig -> Serial flasher config -> Default serial port 中配置對燒寫口, 重新編譯燒寫.
Windows 用戶:

在 Flash 下載工具 中通過 COM 口配置
原因四: 串口無寫權限
某些讀者可能通過虛擬機安裝了 Linux 系統或 MacOS, 或某些權限管理較為嚴格的系統(某些公司管控 USB 設備), 經常串口無寫權限, 需要用戶手動去提升串口權限.

參考解決辦法:

sudo chmod 777 /dev/ttyUSB*
1
其他非 Linux 平台類似.

原因五: 波特率配置過高
燒寫速度受硬件影響, 在初步燒寫失敗情況下, 因降低燒寫波特率.

參考解決辦法:
make menuconfig -> Serial flasher config -> Default baud rate 配置為 115200
其他非 Linux 平台類似.

原因六: Flash SPI mode/speed 配置錯誤
ESP8266 芯片和固件本身支持: Flash SPI mode: QIO, QOUT, DIO, DOUT
ESP8266 芯片和固件本身支持 Flash SPI speed: 80MHz, 40MHz, 26.7MHz, 20MHz
但某些模組廠商, 基於 ESP8266 開發模組/開發板, 因成本或其他考慮, 未選型支持以上功能的 Flash, 導致某些讀者使用此類型模組或開發板時需考慮此配置.

參考解決辦法:
通常選擇 QIO, 燒寫失敗時切換到 DIO, 切換方法:
make menuconfig -> Serial flasher config -> Flash SPI mode 切換 SPI mode
make menuconfig -> Serial flasher config -> Flash SPI speed 切換 SPI speed

其他非 Linux 平台類似.

原因七: 使用非官方燒寫工具
某些讀者可能基於其他公司的 第三方工具/IDE進行二次開發甚至更下游開發.
如遇到燒寫失敗情況, 也可能是 第三方工具/IDE 本身問題. 如下截圖所示, 某博客寫到:

初步來看, 應是第三方工具在燒寫模式時, 未對 [GPIO15, GPIO0, GPIO2] 電平做出較為優雅的配置, 導致需重新插拔進行燒寫.

參考解決辦法:
建議使用官方提供的 windows 上 Flash 下載工具, 或 SDK 中提供的 make flash 進行燒寫固件.

原因八: 模組 TX RX GND 接線錯誤
開發板通常不存在此類情況, 模組需考慮此種情況.

模組接線錯誤: TX, RX, GND 未接到對應 RXD, TXD, GND 或其他接線錯誤
參考解決辦法:
根據官方 datasheet 重新布線.

原因九: 其他原因
往往, 電腦或個人原因, 或多或少偶爾遇到一些奇怪的燒寫錯誤原因, 這里記錄一下, 供讀者參考:

ESP8266 固件燒寫到 ESP32 上
其他參考解決辦法
重啟電腦
換個 USB線/USB轉TTL
換個 模組/開發板
使用官方 SDK 和 release 版本進行燒寫測試
向我們提 issues
————————————————
版權聲明:本文為CSDN博主「樂鑫科技 Espressif」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/espressif/article/details/102650210


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM