【初识篇】ESP-IDF零基础入门 4 —— 编译工具讲解

news2025/4/16 17:41:34

系列文章目录

【文章导航】基于 ESP-IDF 框架的 ESP32 零基础入门系列教程


文章目录

  • 系列文章目录
  • 前言
  • 1. idf.py 简介
  • 2. idf.py 用法
  • 3. idf.py 常用命令
  • 4. 使用 idf.py 命令编译项目的流程


前言

上一篇教程里,我们学习了如何创建自己的工程,那么现在我们就来学习一下如何编译和烧录。

1. idf.py 简介

安装好 ESP-IDF 后,就会看到这个叫做 idf.py 的命令行工具,通过这个工具,就可以完成工程配置、编译、烧录和监控。

在这里插入图片描述


我们可以把 idf.py 看成一个工具包,这个工具包中包含了如下几个不同用途的工具:

  • CMake,配置项目参数
  • Ninja,编译项目
  • esptool.py,烧录程序

如果不用 idf.py ,那么我们就需要依次使用 CMake 工具配置参数,然后使用 Ninja 工具编译代码,最后再使用 esptool.py 工具将编译出来的可执行文件烧录到芯片中。


idf.py 的主要作用,就是整合了上述几个步骤,用户只需要通过几个命令即可完成配置、编译、烧录等操作,极大地简化了开发流程。 idf.py 工具就等同是用命令行操作的 IDE,编译、烧录通过命令行,而不是图形界面中的图标按钮。


2. idf.py 用法

启动 idf.py 命令行工具后,需要进入项目的根目录下才能正常运行相关编译命令,例如 ESP-IDF 源码路径下的 examples\get-started\sample_project 文件夹中的内容如下所示:
在这里插入图片描述
当我们需要编译 sample_project 这个项目时,就需要在 idf.py 命令行中切换到上图所示的路径下再运行相关命令。


3. idf.py 常用命令


在当前路径下创建工程模板

idf.py create-project <project name>

在指定路径下创建工程模板

idf.py create-project --path xxx/xxx/<project name>

查看支持的芯片列表
如果不知道当前的 ESP-IDF 版本是否支持某个型号的芯片,则可以通过如下命令查看。

idf.py --list-targets

设置项目目标芯片型号
ESP-IDF框架支持多型号芯片,编译前需要先设置目标芯片。

idf.py set-target <target>

启动图形化配置工具

idf.py menuconfig

编译项目

idf.py build

清理项目

idf.py clean

烧录

idf.py flash

通过 -p 选项可以指定烧录串口号,通过 -b 选项可以指定烧录波特率。

idf.py -p COM3 -b 115200 flash

监控输出
烧录好程序后,可以通过如下命令可以监控目标芯片通过串口打印的调试信息。

idf.py monitor

通过 -p 选项可以指定打印调试信息的串口号。

idf.py -p COM3 monitor

4. 使用 idf.py 命令编译项目的流程

设置目标芯片

idf.py set-target esp32

配置项目参数

idf.py menuconfig

编译

idf.py build

烧录

idf.py -p PORT flash

监控运行信息

idf.py -p PORT monitor

启动监控命令后,会一直打印调试信息,如果需要停止输出,可使用快捷键 Ctrl+] 或 Ctrl+C 退出 IDF 监视器。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

当高并发来袭:StarRocks Query Cache 一招搞定!

您是否曾经遇到这样的情况&#xff1f;每天早上或业务活动高峰期&#xff0c;大量用户涌入报表平台或数据应用&#xff0c;希望查看特定业务领域的最新指标或趋势。这些用户可能会基于庞大的数据集进行大量类似的聚合查询&#xff0c;造成集群的 CPU 负载持续攀升&#xff0c;从…

基于随机森林的乳腺癌诊断

在当今的现实生活中存在着很多种微信息量的数据,如何采集这些数据中的信息并进行利用,成了数据分析领域里一个新的研究热点。随机森林以它自身固有的特点和优良的分类效果在众多的机器学习算法中脱颖而出。 随机森林算法由Leo Breiman和 Adele Cutler提出,该算法结合了…

JMeter使用方法

一、基础简介 界面 打开方式 双击 jmeter.bat双击 ApacheJMeter.jsr命令行输入 java -jar ApacheJMeter.jar 目录 BIN 目录&#xff1a;存放可执行文件和配置文件 docs目录&#xff1a;api文档&#xff0c;用于开发扩展组件 printable-docs目录&#xff1a;用户帮助手册 li…

海思Hi3861L开发一-环境搭建

一、简介 之前的文章中有详细介绍了HarmonyOS的Hi3861开发,但是该开发是基于HarmonyOS来的。实际在项目开发中,可能不会用到HarmonyOS,用的还是原生的Hi3861。那这次就重新学习Hi3861L。 二、环境搭建 环境:Ubuntu18.04.5 关于Ubuntu的环境搭建,还是参考之前的文章,附上…

musl libc ldso 动态加载研究笔记:动态库的加载次序与初始化次序

前言 musl ldso 是按照什么次序加载动态链接的应用程序的共享库的&#xff1f;如果共享库之间有依赖&#xff0c; musl ldso 如何处理先初始化哪个 共享库&#xff1f; musl ldso 的代码可以在 musl 官方代码&#xff1a; ldso\dlstart.c 与 ldso\dynlink.c&#xff0c;其中动…

table,设置 数据相同时, 合并列

<el-table :data"tableData" :span-method"objectSpanMethod" border style"width: 100%" show-summary><el-table-column type"index" label"序号" width"100" /><el-table-column prop"dat…

c++(8.23)类,this指针,构造函数,析构函数,拷贝构造函数

设计一个Per类&#xff0c;类中包含私有成员&#xff1a;姓名、年龄、指针成员身高、体重&#xff0c;再设计一个Stu类&#xff0c;类中包含私有成员&#xff1a;成绩、Per类对象 p1&#xff0c;设计这两个类的构造函数、析构函数和拷贝构造函数。 #include <iostream>u…

idea的断点调试

1、行断点 首先在代码的最左侧点击会显示红色的圆圈 第二步在main方法中右键选中debug run进行运行 会出现下面图片的情况 出现上图之后&#xff0c;点击console 下一步 这个时候就可以看到调试的结果了 6、方法调用栈&#xff1a;这里显示了该线程调试所经过的所有方法&…

SQL注入之堆叠查询

文章目录 堆叠查询是什么&#xff1f;堆叠查询修改所有用户密码堆叠查询删除数据库恢复数据库 堆叠查询是什么&#xff1f; 在SQL中&#xff0c;分号;是用来表示一条sql语句的结束。试想一下我们在; 结束一个sql语句后继续构造下一条语句&#xff0c;会不会一起执行&#xff1f…

漏洞挖掘和安全审计的技巧与策略

文章目录 漏洞挖掘&#xff1a;发现隐藏的弱点1. 源代码审计&#xff1a;2. 黑盒测试&#xff1a;3. 静态分析工具&#xff1a; 安全审计&#xff1a;系统的全面评估1. 渗透测试&#xff1a;2. 代码审计&#xff1a;3. 安全策略审查&#xff1a; 代码示例&#xff1a;SQL注入漏…

VB.NET调用VB6 Activex EXE实现PowerBasic和FreeBasic的标准DLL调用

VB6写的ActiveX EXE公共对象是外置进程&#xff0c;因此&#xff0c;尽管它是x86 32位的进程&#xff0c;但可以集成到 VB.NET的x64和x32程序中使用。 VS2022的VB.NET程序&#xff0c;调用ActiveX DLL对象我在上篇笔记中写了 VB.NET通过VB6 ActiveX DLL调用PowerBasic及FreeB…

【网络】DNS | ICMP | NAT | 代理服务器

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 前面几篇文章虽然讲介绍了整个网络通信的协议栈&#xff0c;我们也知道了完整的网络通信过程&#xff…

线性回归的正则化改进(岭回归、Lasso、弹性网络),最小二乘法和最大似然估计之间关系,正则化

目录 最小二乘法 极大似然估计的思想 概率&#xff1a;已知分布参数-对分布参数进行估计 概率描述的是结果;似然描述的是假设/模型​编辑 似然&#xff1a;已知观测结果-对分布参数进行估计​编辑 对数函数消灭连乘-连乘导致算法参数消失 极大似然估计公式&#xff1a;将乘…

Android BatteryManager的使用及BatteryService源码分析

当需要监控系统电量时&#xff0c;用 BatteryManager 来实现。 参考官网 监控电池电量和充电状态 获取电池信息 通过监听 Intent.ACTION_BATTERY_CHANGED 广播实现&#xff0c;在广播接收器中获取电池信息。 这是个粘性广播&#xff0c;即使过了广播发出的时间点后再注册广…

基于数据采集网关的工业锅炉远程监控运维系统

随着社会经济的不断发展&#xff0c;工业生产规模不断扩大&#xff0c;生产工艺也在不断创新&#xff0c;工业锅炉已经实现自动化控制&#xff0c;但管理模式仍存在缺陷&#xff0c;目前锅炉主要以人工巡检为主&#xff0c;这种方式费时费力且无法及时发现生产中的隐患&#xf…

javaScript:带你深入了解基本数据类型和引用类型

目录 一.前言 二.Ecmascript 规定的变量有两种 补充 1.基本数据类型&#xff08;重点掌握&#xff09; 基本数据类型的特点 2.引用数据类型 &#xff08;重点掌握&#xff09; 引用数据类型的特点 三.什么是栈&#xff1f;堆&#xff1f; 下面代码帮助了解 解释 官…

线性数据结构:数组与链表的探索与应用

文章目录 1. 数组&#xff1a;连续存储的有序元素集合1.1 创建和访问数组1.2 数组的搜索与排序 2. 链表&#xff1a;非连续存储的动态数据结构2.1 单链表与双链表2.2 链表的操作与应用 3. 数组与链表的比较与应用3.1 数组与链表的比较3.2 数组与链表的应用 4. 总结与展望 &…

Docker基本部署和相关操作

1.安装docker服务&#xff0c;配置镜像加速器 1、yum安装并且添加源信息 yum install yum-utils device-mapper-persistent-data lvm2 -y yum-config-manager --add-repo https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo2、修改一些配置信息 sed…

跨境电商系统开发:解锁海外财富,轻松实现财富自由

了解跨境电商系统开发的重要性 随着全球化和科技发展的进程&#xff0c;跨境电商已经成为一种崭新且热门的商业模式。跨境电商系统开发为企业提供了进军海外市场的机会&#xff0c;解锁了海外财富&#xff0c;帮助实现财富自由。 跨境电商系统的基本架构 跨境电商系统的基本架…

反腐力度空前,医药行业全面合规势在必行!

“公立医院改革、临床试验自查、医疗反腐、分级诊疗、药品集中采购、一致性评价、最严限抗、两票制等一系列政策卷起了医疗界阵阵反腐风暴。据报道&#xff0c;全国已有至少155家医院的院长和书记接受了调查。。。” 医药行业是与人们的生命和健康息息相关的重要领域&#xff…