1. 程式人生 > >如何為 ESP 系列模組燒錄韌體

如何為 ESP 系列模組燒錄韌體

ESP FLASH TOOL 的官方下載地址為: http://www.espressif.com/sites/default/files/tools/flash_download_tools_v3.4.9.2_1.zip

燒寫工具說明 http://bbs.espressif.com/viewtopic.php?f=5&t=433

燒寫前請參考如何安裝安信可一體化開發環境完成 sdk 的編譯

或者在 ESP8266 最新SDK釋出 或 ESP32 最新SDK釋出 頁面下載最新韌體


ESP8266有執行模式、下載模式、測試模式的區別,進入下載模式可參考以下配置:

模式 CH_PD(EN) RST GPIO15 GPIO0 GPIO2 TXD0
UART 下載模式
Flash 執行模式
Chip 測試模式 - - - - -

ESP32 的執行狀態主要由 GPIO0 決定

模式 GPIO0
UART 下載模式
Flash 執行模式

  1. 首先確保模組可以正常執行工作,傳送 AT 指令可以有回覆 AT OK(即確保電源和串列埠連線正常);

  2. 拉低 GPIO0,開啟串列埠工具,在波特率74880下觀察模組的啟動或復位後的列印資訊;

  3. 若出現以下紅色字元則認為模組已經進入了下載模式(後面的7數值不用理會),可以去正常進行下載。

    ets Jan 8 2014,rst cause 1, boot mode:(1,7)

可參考如下電路:

  1. 首先確保模組可以正常執行工作(即確保電源和串列埠連線正常);

  2. 拉低 GPIO0,開啟串列埠工具,在波特率115200下觀察模組的啟動或復位後的列印資訊;

  3. 若出現以下紅色字元則認為模組已經進入了下載模式,可以去正常進行下載。

    rst:0x10 (RTCWDT_RTC_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))

    waiting for download

燒錄時的配置選項與編譯時的配置是相關的, 編譯SDK時,控制檯會提示bin檔案的燒錄地址,配置不同,燒錄的地址和需要的檔案也不同

我們按照燒錄檔案的不同分為兩種情況: 支援雲端升級 和 不支援雲端升級

另外,根據flash容量的不同,我們還要調整bin檔案燒錄的地址

支援雲端升級的韌體,在 flash 中會分為 2 個區,一個用來執行程式,一個用來儲存升級韌體, 當執行 user1 時升級,程式會下載韌體到 user2,下載完畢後,下次啟動時從 user2 啟動,依次替換,實現雲端升級。

user2 僅用作升級使用,使用者燒錄時無需下載 user2.bin,此處僅為說明 user2 的存放位置

注意1:樂鑫在不同版本的 SDK 中有可能會改變這些燒錄位置,以下說明僅為參考,建議以開發時的 Console 輸出資訊為準。

注意2:合併後的韌體內已經包含了地址資訊,只需燒寫到 0x0 地址即可。

不支援雲端升級 (NoBoot 模式)

檔名稱 8Mbit 地址分配 16Mbit 地址分配 32Mbit 地址分配 備註
eagle.flash.bin 0x00000 0x00000 0x00000 主程式,由程式碼編譯生成
eagle.irom0text.bin 0x40000 0x40000 0x40000 主程式,由程式碼編譯生成
esp_init_data_default.bin 0xFC000 0x1FC000 0x3FC000 由樂鑫在 SDK 中提供
blank.bin 0xFE000 0x1FE000 0x3FE000 由樂鑫在 SDK 中提供

支援雲端升級 (Boot 模式)

檔名稱 8Mbit 地址分配 16Mbit 地址分配 32Mbit 地址分配 備註
boot.bin 0x00000 0x00000 0x00000 由樂鑫在 SDK 中提供,建議一直使用最新版本
user1.bin 0x01000 0x01000 0x01000 主程式,由程式碼編譯生成
user2.bin 0x81000 0x81000 0x81000 主程式,由程式碼編譯生成
esp_init_data_default.bin 0xFC000 0x1FC000 0x3FC000 由樂鑫在 SDK 中提供
blank.bin 0xFE000 0x1FE000 0x3FE000 由樂鑫在 SDK 中提供

ESP32 在編譯時,通過 make menuconfig 來配置 Partition Table 分別支援 Single factory app, no OTA、Factory app, two OTA definitions、Custom partition table CSV

注意1:樂鑫在不同版本的 SDK 中有可能會改變這些燒錄位置,以下說明僅為參考,建議以開發時的 Console 輸出資訊為準。

注意2:合併後的韌體內已經包含了地址資訊,只需燒寫到 0x0 地址即可。

不支援OTA

預設生成 bootloader.bin、app_demo.bin、partitions_singleapp.bin

bin 檔案 燒錄地址 說明
bootloader.bin 0x1000 二級boot程式,由 SDK 程式碼編譯生成
app_demo.bin 0x10000 使用者主程式,由程式碼編譯生成
partitions_singleapp.bin 0x4000 分割槽資訊,由程式碼自動生成

支援OTA

自定義

參考 https://github.com/espressif/esp-idf/blob/master/docs/partition-tables.rst

說明:

*切記將模組按以上電路接線完成後,再上電。

*保證3.3V 電源供應,一般要求外部電源輸出電流需在 500mA 及以上。

1、開啟ESP FLASH TOOL,根據上一章節配置bin檔案和燒錄地址

2、需配置晶振頻率、SPI SPEED、SPI MODE、Flash Size、串列埠埠號和波特率等,此處波特率可以儘量選大一些,以節省時間,若提示ERROR,請降低波特率,在此以 8Mbit Flash為例:

3、配置完畢後,再給模組上電,使其進入下載模式,再點選【START】開始燒錄,直到燒錄完成:

4、下載完成後:

* 請將 ESP8266 的 boot 模式切換到 flash boot,即 GPIO15→0, GPIO0→1, GPIO2→1。

* 可通過串列埠除錯工具檢視 log 列印或進行串列埠指令互動。

使用下面的檔案燒寫到Flash 0x0 地址即可

erase_flash_bins.7z