天天看點

ESP8266 常見固件燒寫失敗原因和解決方法簡介原因一: ESP8266 不在 UART boot原因二: 供壓問題原因三: 序列槽配置錯誤原因四: 序列槽無寫權限原因五: 波特率配置過高原因六: Flash SPI mode/speed 配置錯誤原因七: 使用非官方燒寫工具原因八: 模組 TX RX GND 接線錯誤原因九: 其他原因其他參考解決辦法

簡介

在使用

ESP8266

進行開發時, 讀者或多或少都能遇到固件燒寫失敗情況, 無論是官方提供的

windows

上 Flash 下載下傳工具, 還是

SDK

中提供的 esptool.py.

下面筆者提供幾種常見的燒寫失敗的原因和對應解決方法.

原因一: ESP8266 不在 UART boot

請通過

UART0

檢視

ESP8266

上電列印:

ets Jan 8 2013,rst cause:1, boot mode:(1,n)
           

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*
           

其他非

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 本身問題. 如下截圖所示, 某部落格寫到:

ESP8266 常見固件燒寫失敗原因和解決方法簡介原因一: ESP8266 不在 UART boot原因二: 供壓問題原因三: 序列槽配置錯誤原因四: 序列槽無寫權限原因五: 波特率配置過高原因六: Flash SPI mode/speed 配置錯誤原因七: 使用非官方燒寫工具原因八: 模組 TX RX GND 接線錯誤原因九: 其他原因其他參考解決辦法

初步來看, 應是第三方工具在燒寫模式時, 未對

[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

繼續閱讀