ESP32-C3 入门笔记03:VScode + flash_download_tool 下载烧录程序(ESP-IDF + PlatformIO)
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 uploadPS 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 0Total 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.binesptool.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 使用下载工具烧录程序
相关文章:

ESP32-C3 入门笔记03:VScode + flash_download_tool 下载烧录程序(ESP-IDF + PlatformIO)
ESP32-C3 支持多种烧录方式,主要包括以下几种: VS Code 串口烧录:使用 VS Code 配合 PlatformIO 或 ESP-IDF 插件进行串口烧录。串口连接通常使用 UART 接口,通过 USB 转串口芯片与电脑连接。步骤大致如下: 配置 VS Co…...

Node.js——fs模块-文件重命名和移动
1、在Node.js中,我们可以使用 rename 或 renameSync 来移动或重命名文件或文件夹 2、语法: fs.rename(oldPath,newPath,callback) fs.renameSync(oldPath,newPath) 参数说明: oldPath 文件当前的路径 newPath 文件新的路径 callback 操…...
vue2.0版本引入Element-ui问题解决
作者:fyupeng 技术专栏:☞ https://github.com/fyupeng 项目地址:☞ https://github.com/fyupeng/distributed-blog-system-api 留给读者 使用版本: vue:2.6.14 element-ui:2.15.14 一、问题及解决 1、安装后组件没有生效&#x…...

qt QTableView详解
1、概述 QTableView 是 Qt 框架中的一个高级视图类,用于以表格形式展示二维数据。它基于 QAbstractItemView,并与模型(通常是 QAbstractTableModel 或 QStandardItemModel)结合使用,以实现数据的展示和交互。QTableVi…...

将Notepad++添加到右键菜单【一招实现】
一键添加注册表 复制以下代码保存为 Notepad.reg,将红框内路径修改为自己电脑的“Notepad.exe路径”后,再双击运行即可。 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\NotePad] "Notepad" "Icon""D:\\N…...

Nature Methods | 基于流形约束的RNA速度推断精准解析细胞周期动态调节规律
生信碱移 VeloCycle算法 VeloCycle:基于流形约束的RNA速度推断在细胞周期动态中的精准解析 今天给各位老铁们分享一篇于2024年10月31号发表在 Nature Methods [IF: 36.1] 的文章:"Statistical inference with a manifold-constrained RNA velocity…...
在离线环境中使用sealos工具快速部署一套高可用的k8s服务集群
文章目录 项目基础信息工具版本测试环境 下载资源文件下载sealos二进制命令文件下载k8s安装镜像和组件资源下载docker离线安装包下载Docker Registry容器镜像 NFS共享配置coredns服务的DNS解析配置安装配置sealos、k8s服务安装sealos工具导入k8s及相关组件镜像安装 K8s 集群部署…...

ReactPress系列—Next.js 的动态路由使用介绍
ReactPress Github项目地址:https://github.com/fecommunity/reactpress 欢迎提出宝贵的建议,感谢Star。 Next.js 的动态路由使用介绍 Next.js 是一个流行的 React 框架,支持服务端渲染、静态站点生成和动态路由等功能,极大地简化…...

DevOps业务价值流:需求设计最佳实践
DevOps实践正推动着产品快速迭代与高质量交付,但需求设计作为产品开发的关键起点,往往被忽视。它不仅是收集与分析需求的过程,更是将需求转化为可实施产品特性的核心。本文深入探讨DevOps业务价值流中的需求设计,从调研、整理、原…...

A15基于Spring Boot的宠物爱心组织管理系统的设计与实现
🙊作者简介:在校研究生,拥有计算机专业的研究生开发团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹 赠送计算机毕业设计600…...

RC高通滤波器Bode图分析(传递函数零极点)
RC高通滤波器 我们使得R1K,C1uF;电容C的阻抗为Xc; 传递函数 H ( s ) u o u i R X C R R 1 s C R s R C 1 s R C (其中 s j ω ) H(s)\frac{u_{o} }{u_{i} } \frac{R }{X_{C}R} \frac{R }{\frac{1}{sC}R} \fra…...

SpeechT5 模型
微软开源的 SpeechT5 语音模型,主要包括以下功能 语音转文字:用于自动语音识别(ASR)。文字转语音:用于合成音频(TTS)。语音转语音:用于不同声音之间的转换或进行语音增强。 T5 网络…...
网站用户行为分析:方法、工具与实践
摘要:随着互联网发展,网站竞争激烈,用户行为分析对网站建设与运营至关重要。本文综合介绍了基于服务器日志和客户端收集用户行为数据的方法,包括各自优缺点及相关工具;阐述了网站用户分析的五大常规方法;以…...
医疗医药企业新闻稿怎么写?健康行业品牌宣传背书的报纸期刊杂志媒体有哪些
【本篇由 言同数字全球媒体 原创】在撰写医疗、医学和制药相关稿件时,遵循一定的结构和内容规范至关重要。以下是一些写作建议以及适合发表健康类稿件的报纸、杂志及新闻媒体的推荐。 一、稿件写作结构 标题 原则:简洁、明了,能够准确传达主…...
2024-11-06 问AI: [AI面试题] 人工智能如何用于欺诈检测和网络安全?
文心一言 人工智能在欺诈检测和网络安全领域的应用日益广泛,其强大的数据处理和分析能力为这一领域带来了革命性的变化。以下详细介绍人工智能在欺诈检测和网络安全中的具体应用: 一、欺诈检测 身份认证和访问控制: 通过验证用户的身份信息…...
个人3DCoat设置分享
个人3DCoat设置分享 将当前选择的对象置于屏幕正中显示: /键 版本3DCoat 2023 3DCoat自定义快捷键: Quick Pick: Q Transform: T Primitives: Shift A Cut Off : K Res : Shift Clear Space : Delete 隐藏/显示对象: 点击Sculpt Tree中的眼睛按钮 显示隐…...

Spark 程序开发与提交:本地与集群模式全解析
Spark 的介绍与搭建:从理论到实践-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 目录 一、本地开发与远程提交测试 (一)问题背景 (二)解决方案 集群环境准…...
Linux编程:DMA增加UDP 数据传输吞吐量并降低延迟
文章目录 0. 引言1. 原理介绍1.1 DMA 与中断的协同机制1.2. DMA优化UDP 数据包发送 2. DMA 配置优化 0. 引言 UDP 网络传输常面临高 CPU 占用、传输延迟和丢包等挑战。本文将介绍 DMA 如何优化 UDP 数据包的发送,以提高吞吐量、减少延迟并降低 CPU 占用。 阅读本文…...
鸿蒙开启无线调试
DevEco Studio没找到通过WI-FI连接手机的可视化操作按钮,就去官网看了下hdc - TCP连接场景 操作也比较简单: 第1步:PC通过USB连接手机/平板; 第2步:在手机/平板的“开发者选项”中打开“无线调试”并记录下IP和端口…...
C. DS循环链表—约瑟夫环 (Ver. I - B)
题目描述 N个人坐成一个圆环(编号为1 - N),从第S个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。 例如:N 3,K 2,S 1。2号先出列,然后是…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...