ESP32-C3 支持多种烧录方式,主要包括以下几种:
-
VS Code 串口烧录:使用 VS Code 配合 PlatformIO 或 ESP-IDF 插件进行串口烧录。串口连接通常使用 UART 接口,通过 USB 转串口芯片与电脑连接。步骤大致如下:
- 配置 VS Code 以使用 PlatformIO 或 ESP-IDF 插件。
- 编译代码后,通过 VS Code 内置的烧录功能烧录到 ESP32-C3 开发板。
-
USB 下载烧录:ESP32-C3 具有原生 USB 设备功能,可以直接通过 USB 接口与电脑通信进行烧录。使用官方的
esptool.py
工具或者 ESP-IDF 工具链,通过 USB 连接烧录程序。 -
通过 bin 文件下载烧录:如果已有编译好的
.bin
文件,可以使用esptool.py
工具将二进制文件烧录到 ESP32-C3。步骤如下:-
使用命令行运行
esptool.py
,指定目标设备端口,加载.bin
文件,并烧录到指定的内存地址。命令示例如下:esptool.py --chip esp32c3 --port <端口号> --baud 460800 write_flash -z 0x1000 your_program.bin
-
-
OTA(Over-the-Air)更新:通过无线方式(如 Wi-Fi)烧录固件到设备,无需物理连接。先在代码中实现 OTA 更新功能,并将新固件文件放置在指定服务器上,设备可以通过 HTTP 或 HTTPS 协议下载并更新自身固件。
这些方式均可以满足不同情况下对 ESP32-C3 进行固件烧录的需求。
1.Flash Download Tool + VSCode + PlatformIO
要使用 Flash Download Tool 下载通过 VSCode 和 PlatformIO 开发的 ESP32 的 .bin
文件,您可以按照以下步骤操作:
1. 准备工作
- 确保您已安装并配置好 VSCode 和 PlatformIO,并且已经成功编译了您的 ESP32 项目,生成了
.bin
文件。 - 下载并安装 Espressif 的 Flash Download Tool,您可以从 Espressif 官方网站 获取。
2. 找到 .bin
文件
编译命令:
pio run -v -t upload
在 PlatformIO 中,编译后的 .bin
文件通常位于以下路径(以项目名称为例):
【命令】pio run -v -t upload
PS C:\Users\Administrator\Documents\PlatformIO\Projects\ESP32_SL_CAR> pio run -v -t upload
Processing esp32-c3-devkitm-1 (platform: espressif32; board: esp32-c3-devkitm-1; framework: arduino; monitor_speed: 115200; lib_deps: adafruit/Adafruit NeoPixel@^1.12.3)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-c3-devkitm-1.html
PLATFORM: Espressif 32 (6.9.0) > Espressif ESP32-C3-DevKitM-1
HARDWARE: ESP32C3 160MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-arduinoespressif32 @ 3.20017.0 (2.0.17)
- tool-esptoolpy @ 1.40501.0 (4.5.1)
- tool-mkfatfs @ 2.0.1
- tool-mklittlefs @ 1.203.210628 (2.3)
- tool-mkspiffs @ 2.230.0 (2.30)
- toolchain-riscv32-esp @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 34 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Adafruit NeoPixel @ 1.12.3 (License: Unknown, Path: C:\Users\Administrator\Documents\PlatformIO\Projects\ESP32_SL_CAR\.pio\libdeps\esp32-c3-devkitm-1\Adafruit NeoPixel)
|-- ESP32 BLE Arduino @ 2.0.0 (License: Unknown, Path: C:\Users\Administrator\.platformio\packages\framework-arduinoespressif32\libraries\BLE)
|-- EEPROM @ 2.0.0 (License: Unknown, Path: C:\Users\Administrator\.platformio\packages\framework-arduinoespressif32\libraries\EEPROM)
Building in release mode
<lambda>(["checkprogsize"], [".pio\build\esp32-c3-devkitm-1\firmware.elf"])
MethodWrapper(["checkprogsize"], [".pio\build\esp32-c3-devkitm-1\firmware.elf"])
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM: [= ] 12.1% (used 39804 bytes from 327680 bytes)
Flash: [======== ] 77.5% (used 1015210 bytes from 1310720 bytes)
.pio\build\esp32-c3-devkitm-1\firmware.elf :
section size addr
.rtc.text 16 1342177280
.rtc.force_fast 0 1342177296
.rtc_noinit 16 1342177296
.rtc.force_slow 0 1342177312
.iram0.text 67114 1077411840
.dram0.dummy 67584 1070071808
.dram0.data 13436 1070139392
.noinit 0 1070152828
.dram0.bss 26368 1070152832
.flash.text 762404 1107296288
.flash_rodata_dummy 786432 1006632992
.flash.appdesc 256 1007419424
.flash.rodata 172256 1007419680
.eh_frame 31032 1007591936
.flash.rodata_noload 0 1007622968
.iram0.text_end 470 1077478954
.iram0.data 0 1077479424
.iram0.bss 0 1077479424
.dram0.heap_start 0 1070179200
.debug_info 8223114 0
.debug_abbrev 575837 0
.debug_loc 1507798 0
.debug_aranges 68216 0
.debug_ranges 177296 0
.debug_line 2926264 0
.debug_str 1270706 0
.comment 93 0
.riscv.attributes 55 0
.debug_frame 211180 0
Total 16887943
<lambda>(["upload"], [".pio\build\esp32-c3-devkitm-1\firmware.bin"])
AVAILABLE: cmsis-dap, esp-bridge, esp-builtin, esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
CURRENT: upload_protocol = esptool
BeforeUpload(["upload"], [".pio\build\esp32-c3-devkitm-1\firmware.bin"])
TimeoutError: Could not automatically find serial port based on the known UART bridges
Auto-detected: COM1
"C:\Users\Administrator\.platformio\penv\Scripts\python.exe" "C:\Users\Administrator\.platformio\packages\tool-esptoolpy\esptool.py"
--chip esp32c3
--port "COM1"
--baud 460800
--before default_reset
--after hard_reset write_flash -z
--flash_mode dio
--flash_freq 80m
--flash_size 4MB
【bin文件及地址】
0x0000 C:\Users\Administrator\Documents\PlatformIO\Projects\ESP32_SL_CAR\.pio\build\esp32-c3-devkitm-1\bootloader.bin
0x8000 C:\Users\Administrator\Documents\PlatformIO\Projects\ESP32_SL_CAR\.pio\build\esp32-c3-devkitm-1\partitions.bin
0xe000 C:\Users\Administrator\.platformio\packages\framework-arduinoespressif32\tools\partitions\boot_app0.bin
0x10000 .pio\build\esp32-c3-devkitm-1\firmware.bin
esptool.py v4.5.1
Serial port COM1
Connecting......................................
请记下此文件的路径。
3. 使用 Flash Download Tool
- 打开 Flash Download Tool:
启动下载工具,您将看到一个界面。
-
配置选项:
- 在“Chip Type”中选择
ESP32
。 - 点击右侧的“Add”按钮,选择您的
.bin
文件。 - 设置 Flash 位置,通常为
0x1000
(用于 bootloader),具体位置可以根据您的项目需求进行调整。
- 在“Chip Type”中选择
-
连接 ESP32:
使用 USB 数据线将 ESP32 开发板连接到计算机,确保驱动程序已正确安装。 -
选择串口:
在工具中,选择您的 ESP32 开发板的串口端口。 -
设置烧录选项:
- 选择“Download Path”对应您的
.bin
文件的路径。 - 在“Flash Size”选项中,根据您的 ESP32 模型选择合适的 Flash 大小。
- 选择“Download Path”对应您的
-
开始烧录:
点击“Start”按钮,等待烧录完成。烧录过程中,请保持串口连接,不要拔掉 USB 线。
-
烧录完成:
烧录完成后,您可以重启 ESP32 开发板,您的程序应该就会运行。
注意事项
- 确保在烧录前选择正确的 Flash 地址和设置,避免覆盖重要的系统区域。
- 如果您在烧录过程中遇到问题,请检查连接、驱动和串口设置是否正确。
通过这些步骤,您应该能够顺利使用 Flash Download Tool 下载 PlatformIO 开发的 ESP32 的 .bin
文件。
2.Flash Download Tool + VSCode + ESP-IDF
要使用 Flash Download Tool 下载通过 VSCode 和 ESP-IDF 开发的 ESP32 的 .bin
文件,您可以按照以下步骤进行操作:
1. 准备工作
- 确保您已经安装并配置好 VSCode 和 ESP-IDF,并成功编译了 ESP32 项目,生成了
.bin
文件。 - 下载并安装 Espressif 的 Flash Download Tool,从 Espressif 官方网站 获取。
2. 找到 .bin
文件
在 ESP-IDF 中,编译后的 .bin
文件通常位于以下路径(以项目名称为例):
<your_project_folder>/build/your_project_name.bin
请记下此文件的路径。
3. 使用 Flash Download Tool
步骤和内容跟PlatformIO差不多,注意 设置烧录地址:
- 对于 ESP32,通常主程序的烧录地址为
0x1000
。根据您的项目需求,可能还需要添加其他区域(如 bootloader 和 partition table):- Bootloader:通常烧录在
0x1000
。 - Partition Table:通常烧录在
0x8000
。 - Main Application:烧录在
0x10000
(主程序)。
- Bootloader:通常烧录在
- 根据需要设置其他文件的地址。
工厂模式和开发者模式
Flash Download Tool 的工厂模式和开发者模式在烧录程序时有以下区别:
工厂模式(Factory Mode)
-
用途:
- 工厂模式主要用于将完整的固件烧录到设备上,通常是初次生产或批量出厂时使用。
-
特点:
- 在工厂模式下,固件通常包括设备的初始化代码和配置。
- 一般会烧录 bootloader、partition table 和应用程序固件。
- 适合于大规模生产或设备出厂时的固件配置。
-
烧录流程:
- 烧录过程中,可以设置多个地址,确保 bootloader、分区表和主应用程序正确烧录。
开发者模式(Development Mode)
-
用途:
- 开发者模式主要用于开发和调试阶段,用于频繁更新固件或测试。
-
特点:
- 通常只烧录应用程序固件,而不包括 bootloader 或 partition table,假设这些组件已经存在且是最新的。
- 可以更快速地更新固件,便于开发人员在调试时频繁烧录。
-
烧录流程:
- 只需要设置目标地址为主应用程序的地址(如
0x10000
),不需要关注 bootloader 和 partition table。
- 只需要设置目标地址为主应用程序的地址(如
使用场景
-
使用工厂模式:
- 当您需要将设备送到客户手中,确保设备已经预配置好所有必要的组件时。
- 在生产过程中需要一次性烧录多个设备,确保每个设备的固件一致。
-
使用开发者模式:
- 在开发阶段频繁更新和测试应用程序时。
- 调试应用程序时需要快速烧录,而不必每次都重置 bootloader 或 partition table。
总结来说,工厂模式适合于出厂和批量烧录,开发者模式适合于开发和测试阶段的快速迭代。选择哪种模式取决于您当前的需求。
参考资料
- [1] 【CSDN】使用 flash_download_tool 下载Vscode PlatformIO 开发ESP32的 bin 文件
- [2] 【CSDN】 ESP32 使用下载工具烧录程序