如何爲 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

自定義

說明:

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

*保證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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章