下载指导
本文档以 ESP32-C5-WROOM-1 模组为例,介绍如何下载 ESP32-C5-WROOM-1 模组对应的 AT 固件,以及如何将固件烧录到模组上,其它 ESP32-C5 系列模组也可参考本文档。
下载和烧录 AT 固件之前,请确保您已正确连接所需硬件,具体可参考 硬件连接。
对于不同系列的模组,AT 默认固件所支持的命令会有所差异。具体可参考 ESP-AT 固件差异。
下载 AT 固件
请按照以下步骤将 AT 固件下载至 PC:
前往 AT 固件
找到您的模组所对应的 AT 固件
点击相应链接进行下载
此处,我们下载了 ESP32-C5-WROOM-1 对应的 ESP32C5-4MB-AT-V5.0.0.0 固件,该固件的目录结构及其中各个 bin 文件介绍如下,其它 ESP32-C5 系列模组固件的目录结构及 bin 文件也可参考如下介绍:
.
├── 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
├── flasher_args.json // 下载参数信息新的格式
├── ota_data_initial.bin // ota data 区初始值
├── partition_table // 一级分区列表
│ └── partition-table.bin
└── sdkconfig // AT 固件对应的编译配置
其中,download.config 文件包含烧录固件的参数:
--flash_mode dio --flash_freq 80m --flash_size 4MB
0x2000 bootloader/bootloader.bin
0xc000 partition_table/partition-table.bin
0xd000 ota_data_initial.bin
0x30000 at_customize.bin
0x31000 customized_partitions/mfg_nvs.bin
0xa0000 esp-at.bin
--flash_mode dio代表此固件采用的 flash dio 模式进行编译;--flash_freq 80m代表此固件采用的 flash 通讯频率为 80 MHz;--flash_size 4MB代表此固件适用的 flash 最小为 4 MB;0xd000 ota_data_initial.bin代表在0xd000地址烧录ota_data_initial.bin文件。
烧录 AT 固件至设备
请根据您的操作系统选择对应的烧录方法。
Windows
开始烧录之前,请下载 Windows Flash 下载工具,详细指导可参阅 Flash 下载工具用户指南。
打开 Flash 下载工具;
选择芯片类型;(此处,我们选择
ESP32-C5。)根据您的需求选择一种工作模式;(此处,我们选择
develop。)根据您的需求选择一种下载接口;(此处,我们选择
uart。)
固件下载配置选择
将 AT 固件烧录至设备,以下两种方式任选其一:
为了避免烧录出现问题,请查看开发板的下载接口的 COM 端口号,并从 “COM:” 下拉列表中选择该端口号。有关如何查看端口号的详细介绍请参考 在 Windows 上查看端口。
烧录完成后, 请 检查 AT 固件是否烧录成功。
Linux 或 macOS
开始烧录之前,请安装 esptool.py。
以下两种方式任选其一,将 AT 固件烧录至设备:
分开下载多个 bin 文件至不同的地址:输入以下命令,替换
PORTNAME和download.config参数;esptool.py --chip auto --port PORTNAME --baud 115200 --before default_reset --after hard_reset write_flash -z download.config
将
PORTNAME替换成开发板的下载接口名称,若您无法确定该接口名称,请参考 在 Linux 和 macOS 上查看端口。将
download.config替换成该文件里的参数列表。以下是将固件烧录至 ESP32-C5-WROOM-1 模组输入的命令:
esptool.py --chip auto --port /dev/tty.usbserial-0001 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0xc000 partition_table/partition-table.bin 0xd000 ota_data_initial.bin 0x2000 bootloader/bootloader.bin 0xa0000 esp-at.bin 0x30000 at_customize.bin 0x31000 customized_partitions/mfg_nvs.bin
直接下载打包好的量产固件至
0x0地址:输入以下命令,替换PORTNAME和FILEDIRECTORY参数;esptool.py --chip auto --port PORTNAME --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size 4MB 0x0 FILEDIRECTORY
将
PORTNAME替换成开发板的下载接口名称,若您无法确定该接口名称,请参考 在 Linux 和 macOS 上查看端口。将
FILEDIRECTORY替换成打包好的量产固件的文件路径,通常情况下,文件路径是factory/XXX.bin。以下是将固件烧录至 ESP32-C5-WROOM-1 模组输入的命令:
esptool.py --chip auto --port /dev/tty.usbserial-0001 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size 4MB 0x0 factory/factory_ESP32C5-4MB.bin
烧录完成后,请 检查 AT 固件是否烧录成功。
检查 AT 固件是否烧录成功
请按照以下步骤检查 AT 固件是否烧录成功:
打开串口工具,如 SecureCRT;
串口:选择用于发送或接收“AT 命令/响应”的串口(详情请见 硬件连接);
波特率:115200;
数据位:8;
检验位:None;
停止位:1;
流控:None;
输入 “AT+GMR” 命令,并且换行 (CR LF);
若如下所示,响应是 OK, 则表示 AT 固件烧录成功。
AT+GMR
AT version:5.0.0.0(b0fe7e5 - ESP32C5 - Aug 22 2025 09:44:01)
SDK version:v5.5-beta1-695-ga3ca8669f24
compile time(7917c1fb):Aug 25 2025 15:10:23
Bin version:v5.0.0.0(ESP32C5-4MB)
OK
否则,您需要通过以下方式之一检查 ESP32-C5 设备开机日志:
方法 1:
打开串口工具,如 SecureCRT;
串口:选择用于“下载固件/输出日志”的串口,串口详情请参阅 硬件连接。
波特率:115200;
数据位:8;
检验位:None;
停止位:1;
流控:None;
直接按开发板的 RST 键,若日志和下面的日志相似,则说明 ESP-AT 固件已经正确初始化了。
方法 2:
打开两个串口工具,如 SecureCRT;
串口:分别选择用于发送或接收“AT 命令/响应”的串口以及用于“下载固件/输出日志”的串口,串口详情请参阅 硬件连接。
波特率:115200;
数据位:8;
检验位:None;
停止位:1;
流控:None;
在发送或接收“AT 命令/响应”的串口输入 AT+RST 命令,并且换行 (CR LF),若“下载固件/输出日志”的串口日志和下面的日志相似,则说明 ESP-AT 固件已经正确初始化了。
ESP32-C5 开机日志:
ESP-ROM:esp32c5-eco2-20250121
Build:Jan 21 2025
rst:0x1 (POWERON),boot:0x58 (SPI_FAST_FLASH_BOOT)
SPI mode:DIO, clock div:1
load:0x408556b0,len:0x1710
load:0x4084bba0,len:0xd7c
load:0x4084e5a0,len:0x31bc
entry 0x4084bbaa
I (23) boot: ESP-IDF v5.5-beta1-695-ga3ca8669f24-dir 2nd stage bootloader
I (24) boot: compile time Aug 25 2025 15:10:14
I (24) boot: chip revision: v1.0
I (26) boot: efuse block revision: v0.2
I (29) boot.esp32c5: SPI Speed : 80MHz
I (33) boot.esp32c5: SPI Mode : DIO
I (37) boot.esp32c5: SPI Flash Size : 4MB
I (41) boot: Enabling RNG early entropy source...
I (45) boot: Partition Table:
I (48) boot: ## Label Usage Type ST Offset Length
I (54) boot: 0 otadata OTA data 01 00 0000d000 00002000
I (60) boot: 1 phy_init RF data 01 01 0000f000 00001000
I (67) boot: 2 nvs WiFi data 01 02 00010000 0000e000
I (73) boot: 3 at_customize unknown 40 00 0001e000 00042000
I (80) boot: 4 ota_0 OTA app 00 10 00060000 001d0000
I (86) boot: 5 ota_1 OTA app 00 11 00230000 001d0000
I (93) boot: End of partition table
I (97) esp_image: segment 0: paddr=00060020 vaddr=42170020 size=2c954h (182612) map
I (136) esp_image: segment 1: paddr=0008c97c vaddr=40800000 size=0369ch ( 13980) load
I (139) esp_image: segment 2: paddr=00090020 vaddr=42000020 size=16d640h (1496640) map
I (396) esp_image: segment 3: paddr=001fd668 vaddr=4080369c size=196d0h (104144) load
I (417) esp_image: segment 4: paddr=00216d40 vaddr=4081cd80 size=04998h ( 18840) load
I (421) esp_image: segment 5: paddr=0021b6e0 vaddr=50000000 size=000a4h ( 164) load
I (428) boot: Loaded app from partition at offset 0x60000
I (429) boot: Disabling RNG early entropy source...
I (927) at-init: at param mode: 1
I (1554) at-uart: AT cmd port:uart1 tx:23 rx:24 cts:25 rts:26 baudrate:115200
I (1555) at-init: module_name: ESP32C5-4MB
I (1557) at-init: max tx power=78, ret=0
I (1560) at-init: v5.0.0.0 (gitlab)
I (2752) at-wifi: negotiated phy mode: 4

