下载指导

[English]

本文档以 ESP32-WROOM-32 模组为例,介绍如何下载 AT 固件并将其烧录到模组上。其它 ESP32 系列模组也可参考本文档。

下载和烧录 AT 固件之前,请确保已正确连接所需硬件,详见 硬件连接

不同系列模组的 AT 默认固件所支持的命令有所差异,详见 ESP-AT 固件差异

请根据下方详细步骤,完成 AT 固件的下载、烧录和检查。

第一步:下载 AT 固件

请前往 ESP32 AT 发布版固件,下载对应模组的固件并解压。

ESP32-WROOM-32 固件见 ESP32-WROOM-32 系列

factory 目录下有两份量产固件,均可烧录到地址 0x0

  • factory/factory_WROOM-32_unfilled.bin (推荐):单文件即可满足全部必要功能,体积最小、烧录最快。较新发布的固件包中提供。将必要区域填充为 0xFF,直至 ota_0 分区中 AT 应用固件 esp-at.bin 的末尾。若固件包中未提供该文件,请使用 factory/factory_WROOM-32.bin

  • factory/factory_WROOM-32.bin:单文件即可满足全部必要功能,但文件较大、烧录较慢。早期填充方式,新固件包中仍会提供。填充至最后一个分区 ota_1 的末尾,文件大小通常为 2 MB 或 4 MB。

固件包中其它文件的说明见 附录:固件包内容

第二步:烧录 AT 固件至设备

根据使用场景选择烧录方式。

方式

适用场景

说明

方式一

首次烧录、量产

将一份量产固件烧录到 0x0。推荐 factory/factory_WROOM-32_unfilled.bin

方式二

更新部分分区、二次开发

download.config 将多个 bin 烧录到对应地址。

方式一:烧录量产固件(推荐)

factory/factory_WROOM-32_unfilled.bin (推荐)或 factory/factory_WROOM-32.bin 烧录到地址 0x0

Windows

开始烧录之前,请下载 Windows Flash 下载工具,详见 Flash 下载工具用户指南。请确认开发板下载接口的 COM 端口号,稍后在 “COM:” 下拉列表中选择该端口。如何查看端口号,见 在 Windows 上查看端口

  • 打开 Flash 下载工具

  • 选择芯片类型(此处选择 ESP32

  • 选择工作模式(此处选择 develop

  • 选择下载接口(此处选择 uart

    固件下载配置选择

    固件下载配置选择

  • 选择 factory/factory_WROOM-32_unfilled.bin (推荐)或 factory/factory_WROOM-32.bin,烧录地址为 0x0

  • 勾选 “DoNotChgBin”,使用量产固件中的 flash 参数

  • 选择正确的 COM 口后开始烧录

    下载至单个地址界面图

    下载至单个地址界面图(点击放大)

烧录完成后,请 检查 AT 固件是否烧录成功

Linux 或 macOS

开始烧录之前,请安装 esptool

pip install esptool

请将下列命令中的端口名替换为开发板的下载接口,并在解压后的固件目录中执行。若无法确定接口名称,请参考 在 Linux 和 macOS 上查看端口。推荐烧录 factory/factory_WROOM-32_unfilled.bin

esptool --chip auto --port /dev/tty.usbserial-0001 --baud 115200 --before default-reset --after hard-reset write-flash -z --flash-mode dio --flash-freq 40m --flash-size 4MB 0x0 factory/factory_WROOM-32_unfilled.bin

烧录完成后,请 检查 AT 固件是否烧录成功

方式二:按 download.config 分地址烧录

适用于更新部分分区或二次开发。请按 download.config 配置各 bin 文件的烧录地址和 flash 参数。

ESP32-WROOM-32 对应固件的 download.config 如下:

--flash-mode dio --flash-freq 40m --flash-size 4MB
0x1000 bootloader/bootloader.bin
0x8000 partition_table/partition-table.bin
0x10000 ota_data_initial.bin
0x20000 at_customize.bin
0x21000 customized_partitions/mfg_nvs.bin
0x100000 esp-at.bin

  • --flash-mode dio 代表此固件采用的 flash dio 模式进行编译;

  • --flash-freq 40m 代表此固件采用的 flash 通讯频率为 40 MHz;

  • --flash-size 4MB 代表此固件适用的 flash 最小为 4 MB;

  • 0x10000 ota_data_initial.bin 代表在 0x10000 地址烧录 ota_data_initial.bin 文件。

Windows

配置方式与 方式一:烧录量产固件(推荐) 中 Windows 部分相同,区别如下:

  • 根据 download.config 配置各 bin 文件及对应地址

  • 请勿勾选 “DoNotChgBin”,并将 SPI SPEED、SPI MODE 设置成与 download.config 一致

    下载至多个地址界面图

    下载至多个地址界面图(点击放大)

烧录完成后,请 检查 AT 固件是否烧录成功

Linux 或 macOS

请将 PORTNAME 替换为开发板的下载接口,将 download.config 替换为该文件中的参数列表,并在解压后的固件目录中执行。若无法确定接口名称,请参考 在 Linux 和 macOS 上查看端口

esptool --chip auto --port PORTNAME --baud 115200 --before default-reset --after hard-reset write-flash -z download.config

以下为烧录至 ESP32-WROOM-32 模组的示例命令:

esptool --chip auto --port /dev/tty.usbserial-0001 --baud 115200 --before default-reset --after hard-reset write-flash -z --flash-mode dio --flash-freq 40m --flash-size 4MB 0x8000 partition_table/partition-table.bin 0x10000 ota_data_initial.bin 0x1000 bootloader/bootloader.bin 0x100000 esp-at.bin 0x20000 at_customize.bin 0x21000 customized_partitions/mfg_nvs.bin

烧录完成后,请 检查 AT 固件是否烧录成功

第三步:检查 AT 固件是否烧录成功

打开串口工具(如 SecureCRT),按以下参数连接用于发送或接收“AT 命令/响应”的串口,端口说明见 硬件连接

参数

取值

波特率

115200

数据位

8

校验位

None

停止位

1

流控

None

换行

CR LF

输入 AT+GMR 命令并换行。若响应为 OK,则表示 AT 固件烧录成功。

AT+GMR
AT version:3.2.0.0(s-ec2dec2 - ESP32 - Jul 28 2023 07:05:28)
SDK version:v5.0.2-376-g24b9d38a24-dirty
compile time(6118fc22):Jul 28 2023 09:47:28
Bin version:v3.2.0.0(WROOM-32)

OK

若未返回 OK,请查看 ESP32 开机日志,确认固件是否正确初始化。

  • 打开串口工具,选择用于“下载固件/输出日志”的串口,串口详情见 硬件连接

  • 波特率 115200,数据位 8,校验位 None,停止位 1,流控 None。

  • 按下开发板的 RST 键。若日志与下面的参考日志相似,则说明 ESP-AT 固件已经正确初始化。

参考日志

ESP32 开机日志:

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:5884
ho 0 tail 12 room 4
load:0x40078000,len:15844
load:0x40080400,len:3560
entry 0x40080604
I (29) boot: ESP-IDF v5.0-541-g885e501d99-dirty 2nd stage bootloader
I (29) boot: compile time 08:40:13
I (29) boot: chip revision: v1.0
I (34) boot.esp32: SPI Speed      : 40MHz
I (38) boot.esp32: SPI Mode       : DIO
I (43) boot.esp32: SPI Flash Size : 4MB
I (47) boot: Enabling RNG early entropy source...
I (53) boot: Partition Table:
I (56) boot: ## Label            Usage          Type ST Offset   Length
I (64) boot:  0 phy_init         RF data          01 01 0000f000 00001000
I (71) boot:  1 otadata          OTA data         01 00 00010000 00002000
I (78) boot:  2 nvs              WiFi data        01 02 00012000 0000e000
I (86) boot:  3 at_customize     unknown          40 00 00020000 000e0000
I (93) boot:  4 ota_0            OTA app          00 10 00100000 00180000
I (101) boot:  5 ota_1            OTA app          00 11 00280000 00180000
I (108) boot: End of partition table
I (113) esp_image: segment 0: paddr=00100020 vaddr=3f400020 size=1a854h (108628) map
I (161) esp_image: segment 1: paddr=0011a87c vaddr=3ff80063 size=00008h (     8) load
I (161) esp_image: segment 2: paddr=0011a88c vaddr=3ffbdb60 size=04d5ch ( 19804) load
I (174) esp_image: segment 3: paddr=0011f5f0 vaddr=40080000 size=00a28h (  2600) load
I (176) esp_image: segment 4: paddr=00120020 vaddr=400d0020 size=11f5c0h (1177024) map
I (609) esp_image: segment 5: paddr=0023f5e8 vaddr=40080a28 size=1e948h (125256) load
I (660) esp_image: segment 6: paddr=0025df38 vaddr=400c0000 size=00064h (   100) load
I (676) boot: Loaded app from partition at offset 0x100000
I (676) boot: Disabling RNG early entropy source...
no external 32k oscillator, disable it now.
at param mode: 1
AT cmd port:uart1 tx:17 rx:16 cts:15 rts:14 baudrate:115200
module_name: WROOM-32
max tx power=78, ret=0
2.5.0

附录:固件包内容

解压后的 AT 固件目录结构如下(也可参考 AT 固件简介):

.
├── at_customize.bin                 // 二级分区表
├── bootloader                       // bootloader
│   └── bootloader.bin
├── customized_partitions            // AT 自定义 bin 文件
│   ├── mfg_nvs.csv                  // 量产 NVS 分区的原始数据
│   └── mfg_nvs.bin                  // 量产 NVS 分区 bin 文件
├── download.config                  // 烧录固件的参数
├── esp-at.bin                       // AT 应用固件
├── esp-at.elf
├── esp-at.map
├── factory                          // 量产所需打包好的 bin 文件
│   ├── factory_XXX.bin              // 填充至 ota_1 末尾的量产固件
│   └── factory_XXX_unfilled.bin     // 填充至 AT 应用固件末尾的量产固件(推荐)
├── flasher_args.json                // 烧录参数
├── ota_data_initial.bin             // ota data 区初始值
├── partition_table                  // 一级分区列表
│   └── partition-table.bin
└── sdkconfig                        // AT 固件对应的编译配置