如何為 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
ESP8266 Flash 地址配置
燒錄時的配置選項與編譯時的配置是相關的, 編譯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 Flash 地址配置
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
使用下面的檔案燒寫到Flash 0x0 地址即可