ESP32-C3 入门笔记03:VScode + flash_download_tool 下载烧录程序(ESP-IDF + PlatformIO)

ESP32-C3 支持多种烧录方式,主要包括以下几种:

  1. VS Code 串口烧录:使用 VS Code 配合 PlatformIO 或 ESP-IDF 插件进行串口烧录。串口连接通常使用 UART 接口,通过 USB 转串口芯片与电脑连接。步骤大致如下:

    • 配置 VS Code 以使用 PlatformIO 或 ESP-IDF 插件。
    • 编译代码后,通过 VS Code 内置的烧录功能烧录到 ESP32-C3 开发板。
  2. USB 下载烧录:ESP32-C3 具有原生 USB 设备功能,可以直接通过 USB 接口与电脑通信进行烧录。使用官方的 esptool.py 工具或者 ESP-IDF 工具链,通过 USB 连接烧录程序。

  3. 通过 bin 文件下载烧录:如果已有编译好的 .bin 文件,可以使用 esptool.py 工具将二进制文件烧录到 ESP32-C3。步骤如下:

    • 使用命令行运行 esptool.py,指定目标设备端口,加载 .bin 文件,并烧录到指定的内存地址。命令示例如下:

      esptool.py --chip esp32c3 --port <端口号> --baud 460800 write_flash -z 0x1000 your_program.bin
      
  4. 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

  1. 打开 Flash Download Tool
    启动下载工具,您将看到一个界面。

在这里插入图片描述

在这里插入图片描述

  1. 配置选项

    • 在“Chip Type”中选择 ESP32
    • 点击右侧的“Add”按钮,选择您的 .bin 文件。
    • 设置 Flash 位置,通常为 0x1000(用于 bootloader),具体位置可以根据您的项目需求进行调整。
  2. 连接 ESP32
    使用 USB 数据线将 ESP32 开发板连接到计算机,确保驱动程序已正确安装。

  3. 选择串口
    在工具中,选择您的 ESP32 开发板的串口端口。

  4. 设置烧录选项

    • 选择“Download Path”对应您的 .bin 文件的路径。
    • 在“Flash Size”选项中,根据您的 ESP32 模型选择合适的 Flash 大小。
  5. 开始烧录
    点击“Start”按钮,等待烧录完成。烧录过程中,请保持串口连接,不要拔掉 USB 线。
    在这里插入图片描述

  6. 烧录完成
    烧录完成后,您可以重启 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(主程序)。
  • 根据需要设置其他文件的地址。

工厂模式和开发者模式

Flash Download Tool 的工厂模式和开发者模式在烧录程序时有以下区别:

工厂模式(Factory Mode)

  1. 用途

    • 工厂模式主要用于将完整的固件烧录到设备上,通常是初次生产或批量出厂时使用。
  2. 特点

    • 在工厂模式下,固件通常包括设备的初始化代码和配置。
    • 一般会烧录 bootloader、partition table 和应用程序固件。
    • 适合于大规模生产或设备出厂时的固件配置。
  3. 烧录流程

    • 烧录过程中,可以设置多个地址,确保 bootloader、分区表和主应用程序正确烧录。

开发者模式(Development Mode)

  1. 用途

    • 开发者模式主要用于开发和调试阶段,用于频繁更新固件或测试。
  2. 特点

    • 通常只烧录应用程序固件,而不包括 bootloader 或 partition table,假设这些组件已经存在且是最新的。
    • 可以更快速地更新固件,便于开发人员在调试时频繁烧录。
  3. 烧录流程

    • 只需要设置目标地址为主应用程序的地址(如 0x10000),不需要关注 bootloader 和 partition table。

使用场景

  • 使用工厂模式

    • 当您需要将设备送到客户手中,确保设备已经预配置好所有必要的组件时。
    • 在生产过程中需要一次性烧录多个设备,确保每个设备的固件一致。
  • 使用开发者模式

    • 在开发阶段频繁更新和测试应用程序时。
    • 调试应用程序时需要快速烧录,而不必每次都重置 bootloader 或 partition table。

总结来说,工厂模式适合于出厂和批量烧录,开发者模式适合于开发和测试阶段的快速迭代。选择哪种模式取决于您当前的需求。


参考资料

  • [1] 【CSDN】使用 flash_download_tool 下载Vscode PlatformIO 开发ESP32的 bin 文件
  • [2] 【CSDN】 ESP32 使用下载工具烧录程序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/906871.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java使用apache.commons.io框架下的FileUtils类实现文件的写入、读取、复制、删除

Apache Commons IO 是 Apache 开源基金组织提供的一组有关IO&#xff08;Input/Output&#xff09;操作的小框架&#xff0c;它是 Apache Commons 项目的一部分&#xff0c;专注于提供简单易用的 API&#xff0c;用于处理输入和输出操作。Apache Commons IO 是一个功能强大的 J…

Mac 电脑 使用sudo创建项目后,给了读写权限,仍报权限问题

问题&#xff1a;sudo创建的项目&#xff0c;都已经改成读写权限了&#xff0c;但是修改项目中的内容还是报没权限。 原因&#xff1a;当你使用 sudo 创建项目时。这是因为 sudo 会以 root 用户的身份创建文件和目录&#xff0c;这些文件和目录默认属于 root 用户&#xff0c;…

3. keil + vscode 进行stm32协同开发

1. 为什么使用vscode 主要还是界面友好&#xff0c;使用习惯问题&#xff0c;vscode 从前端&#xff0c;js, c/c, qt, 仓颉&#xff0c;rust都有很好插件的支持&#xff0c;并且有romote&#xff0c; wsl 等很多插件可以提高效率&#xff0c; 唯一的问题就是要使用插件进行环境…

Spring MVC 完整生命周期和异常处理流程图

先要明白 // 1. 用户发来请求: localhost:8080/user/1// 2. 处理器映射器(HandlerMapping)的工作 // 它会找到对应的Controller和方法 GetMapping("/user/{id}") public User getUser(PathVariable Long id) {return userService.getById(id); }// 3. 处理器适配…

Hadoop生态圈框架部署(四)- Hadoop完全分布式部署

文章目录 前言一、Hadoop完全分布式部署&#xff08;手动部署&#xff09;1. 下载hadoop2. 上传安装包2. 解压hadoop安装包3. 配置hadoop配置文件3.1 虚拟机hadoop1修改hadoop配置文件3.1.1 修改 hadoop-env.sh 配置文件3.3.2 修改 core-site.xml 配置文件3.3.3 修改 hdfs-site…

【智能算法应用】天鹰优化算法求解二维路径规划问题

摘要 路径规划问题在机器人和无人机导航中起着关键作用。本文提出了一种基于天鹰优化算法的二维路径规划方法。天鹰优化算法&#xff08;Eagle Strategy Optimization, ESO&#xff09;通过模拟天鹰的捕猎行为&#xff0c;寻找最优路径。实验结果显示&#xff0c;该算法能够有…

数据结构之二叉树——堆 详解(含代码实现)

1.堆 如果有一个关键码的集合 K { &#xff0c; &#xff0c; &#xff0c; … &#xff0c;}&#xff0c;把它的所有元素按完全二叉树的顺序存储方式存储 在一个一维数组中&#xff0c;则称为小堆( 或大堆 ) 。将根节点最大的堆叫做最大堆或大根堆&#xff0c;根节点最小的…

【机器学习】25. 聚类-DBSCAN(density base)

聚类-DBSCAN-density base 1. 介绍2. 实现案例计算 3. K-dist4. 变化密度5. 优缺点 1. 介绍 DBSCAN – Density-Based Spatial Clustering of Applications with Noise 与K-Means查找圆形簇相比&#xff0c;DBSCAN可以查找任意形状和复杂形状的簇&#xff0c;如S形、椭圆、半圆…

MongoDB 8.0.3版本安装教程

MongoDB 8.0.3版本安装教程 一、下载安装 1.进入官网 2.选择社区版 3.点击下载 4.下载完成后点击安装 5.同意协议&#xff0c;下一步 6.选择第二个Custon&#xff0c;自定义安装 7.选择安装路径 &#xff01;记住安装路径 8.默认&#xff0c;下一步 9.取…

怎么做才能降低APP用户的卸载率?

常年困扰 App 开发者的始终是一个问题&#xff1a;怎么做才能降低用户卸载率呢&#xff1f; 不要慌&#xff0c;今天这篇文章里&#xff0c;你就会找到解决方案啦。首先请记住&#xff1a; 每个 App 都是有自己独立个性的&#xff0c;所以没有一个通用的公式能让大家套用。 还…

elasticsearch 8.x 插件安装(三)之拼音插件

elasticsearch 8.x 插件安装&#xff08;三&#xff09;之拼音插件 elasticsearch插件安装合集 elasticsearch插件安装&#xff08;一&#xff09;之ik分词器安装&#xff08;含MySQL更新&#xff09; elasticsearch 8.x插件&#xff08;二&#xff09;之同义词安装如何解决…

CSP-J2024入门级T3:小木棍

题目链接 CSP-J2024T3:小木棍 题目描述 小 S 喜欢收集小木棍。在收集了 n n n 根长度相等的小木棍之后,他闲来无事,便用它们拼起了数字。用小木棍拼每种数字的方法如下图所示。 现在小 S 希望拼出一个正整数,满足如下条件: 拼出这个数恰好使用

Python小游戏19——滑雪小游戏

运行效果 python代码 import pygame import random # 初始化Pygame pygame.init() # 设置屏幕尺寸 screen_width 800 screen_height 600 screen pygame.display.set_mode((screen_width, screen_height)) pygame.display.set_caption("滑雪小游戏") # 定义颜色 WH…

哪个牌子的宠物空气净化器好?口碑好的宠物空气净化器推荐!

哪个牌子的宠物空气净化器好&#xff1f;作为一名家电测评博主&#xff0c;我发现市面上宠物空气净化器的牌子越来越多了&#xff0c;很多厂家都看中了宠物行业的红利&#xff0c;想来分一杯羹&#xff0c;这就导致很多技术不成熟的产品流入了市场。今年我测试了50多台宠物空气…

【Vue3.js】计算属性监视属性的深度解析

&#x1f9d1;‍&#x1f4bc; 一名茫茫大海中沉浮的小小程序员&#x1f36c; &#x1f449; 你的一键四连 (关注 点赞收藏评论)是我更新的最大动力❤️&#xff01; &#x1f4d1; 目录 &#x1f53d; 前言1️⃣ 计算属性概述2️⃣ 监视属性概述3️⃣ 计算属性与监视属性的对比…

[SAP ABAP] 在选择屏幕上的标准工具栏上增加自定义按钮

SAP系统的选择屏幕的标准工具栏上预先定义了5个按钮&#xff0c;对应的功能码是FC01、FC02、FC03、FC04、FC05&#xff0c;该功能码默认是不激活的。用户可以使用以下代码来激活这5个按钮 SELECTION-SCREEN FUNCTION KEY i. 提示Tips&#xff1a;这里的 i 必须是整数1-5&…

SIwave:释放 DCIR 求解器的强大功能

SIwave 是一种电源完整性和信号完整性工具。本文讨论了 DCIR 是电源完整性求解器之一。 DCIR 对于研究 powerplane 配电网络 PDN 的电压和电流分布是必要的。该求解器可计算任何电源层中的电压降、接地层中的电压上升、电流分布、每个过孔中的电流&#xff0c;检测任何过孔中的…

【论文笔记】Token Turing Machines

&#x1f34e;个人主页&#xff1a;小嗷犬的个人主页 &#x1f34a;个人网站&#xff1a;小嗷犬的技术小站 &#x1f96d;个人信条&#xff1a;为天地立心&#xff0c;为生民立命&#xff0c;为往圣继绝学&#xff0c;为万世开太平。 基本信息 标题: Token Turing Machines 作…

2. Flink快速上手

文章目录 1. 环境准备1.1 系统环境1.2 安装配置Java 8和Scala 2.121.3 使用集成开发环境IntelliJ IDEA1.4 安装插件2. 创建项目2.1 创建工程2.1.1 创建Maven项目2.1.2 设置项目基本信息2.1.3 生成项目基本框架2.2 添加项目依赖2.2.1 添加Flink相关依赖2.2.2 添加slf4j-nop依赖2…

XHCI 1.2b 规范摘要(九)

系列文章目录 XHCI 1.2b 规范摘要&#xff08;一&#xff09; XHCI 1.2b 规范摘要&#xff08;二&#xff09; XHCI 1.2b 规范摘要&#xff08;三&#xff09; XHCI 1.2b 规范摘要&#xff08;四&#xff09; XHCI 1.2b 规范摘要&#xff08;五&#xff09; XHCI 1.2b 规范摘要…