ubuntu22.04 桌面系统怎么搭建一个esp-idf的项目,搭建开发环境
详细介绍如何在 Ubuntu 22.04 桌面系统上搭建 ESP-IDF 的开发环境,并创建一个 ESP-IDF 项目。以下内容将涵盖从环境准备到项目创建和编译的所有步骤。
目录
- 环境准备
- 1.1 更新系统
- 1.2 安装必要的工具和依赖项
- 安装 ESP-IDF
- 2.1 克隆 ESP-IDF 仓库
- 2.2 运行安装脚本
- 设置环境变量
- 3.1 临时设置环境变量
- 3.2 永久添加到 .bashrc
- 创建 ESP-IDF 项目
- 4.1 使用示例项目
- 4.2 创建新项目
- 编译、烧录和监视项目
- 5.1 编译项目
- 5.2 烧录固件
- 5.3 监视串口输出
- 使用 VSCode 进行开发(可选)
- 6.1 安装 VSCode
- 6.2 安装 ESP-IDF 扩展
- 常见问题与故障排除
- 总结
1. 环境准备
在开始之前,确保您的 Ubuntu 系统已更新,并安装了必要的工具。
1.1 更新系统
打开终端,运行以下命令更新系统软件包:
sudo apt update
sudo apt upgrade -y
1.2 安装必要的工具和依赖项
ESP-IDF 需要一些依赖库和工具,请按以下步骤安装:
sudo apt install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 -y
- git:用于克隆 ESP-IDF 仓库。
- python3:ESP-IDF 使用 Python 3。
- cmake 和 ninja-build:用于构建项目。
- libusb-1.0-0 和 dfu-util:用于与 ESP32 设备通信。
2. 安装 ESP-IDF
ESP-IDF 是 Espressif 提供的官方开发框架,支持 ESP32 系列芯片。
2.1 克隆 ESP-IDF 仓库
首先,选择一个目录用于存放 ESP-IDF,例如 ~/esp
:
mkdir -p ~/esp
cd ~/esp
然后,克隆 ESP-IDF 仓库(以 release/v5.0 分支为例,您也可以选择其他版本):
git clone -b release/v5.0 --recursive https://github.com/espressif/esp-idf.git
注意:--recursive
参数用于克隆子模块。
2.2 运行安装脚本
ESP-IDF 提供了安装脚本,可自动安装所需的工具链和 Python 包。
cd ~/esp/esp-idf
./install.sh all
- all 参数表示安装所有支持的工具链,包括 ESP32、ESP32-S2、ESP32-S3、ESP32-C3 等。
安装过程可能需要一段时间,取决于网络速度。
3. 设置环境变量
在每次使用 ESP-IDF 前,需要设置环境变量,确保系统能够找到 ESP-IDF 工具。
3.1 临时设置环境变量
您可以运行以下命令,临时设置环境变量:
. $HOME/esp/esp-idf/export.sh
或者:
source $HOME/esp/esp-idf/export.sh
这将在当前终端会话中生效。
3.2 永久添加到 .bashrc
为了避免每次都手动设置,可以将上述命令添加到 ~/.bashrc
文件中:
echo '. $HOME/esp/esp-idf/export.sh' >> ~/.bashrc
然后,重新加载 ~/.bashrc
:
source ~/.bashrc
这样,每次打开新的终端时,环境变量都会自动设置。
4. 创建 ESP-IDF 项目
您可以使用 ESP-IDF 提供的示例项目,或者创建一个新的项目。
4.1 使用示例项目
ESP-IDF 包含丰富的示例,可以直接使用。
cd ~/esp
cp -r $IDF_PATH/examples/get-started/hello_world .
cd hello_world
- $IDF_PATH:环境变量,指向 ESP-IDF 的安装目录。
4.2 创建新项目
您也可以从头创建一个新的项目:
cd ~/esp
idf.py create-project my_project
cd my_project
这将创建一个名为 my_project
的新项目,包含基本的项目结构。
5. 编译、烧录和监视项目
接下来,我们将编译项目、烧录到设备,并监视串口输出。
5.1 编译项目
确保已经设置了环境变量,进入项目目录,运行:
idf.py build
这将编译项目,生成固件。
可能的错误与解决方法
- 缺少环境变量:如果收到
idf.py: command not found
,请确保已正确设置环境变量,或者重新运行source ~/esp/esp-idf/export.sh
。
5.2 烧录固件
将 ESP32 开发板通过 USB 连接到电脑,运行以下命令烧录固件:
idf.py -p /dev/ttyUSB0 flash
- -p 参数指定串口设备,请将
/dev/ttyUSB0
替换为实际的设备名称,可以使用ls /dev/ttyUSB*
查看。
识别串口设备
如果不确定设备名称,可以运行:
ls /dev/ttyUSB*
或者:
dmesg | grep ttyUSB
5.3 监视串口输出
您可以使用以下命令监视串口输出,查看设备的日志信息:
idf.py -p /dev/ttyUSB0 monitor
提示:您也可以将 flash
和 monitor
命令合并:
idf.py -p /dev/ttyUSB0 flash monitor
按 Ctrl+]
可以退出监视器。
6. 使用 VSCode 进行开发(可选)
为了提高开发效率,您可以在 Visual Studio Code(VSCode)中进行开发。
6.1 安装 VSCode
如果尚未安装 VSCode,可以使用以下命令安装:
sudo snap install --classic code
或者从 VSCode 官网下载并安装。
6.2 安装 ESP-IDF 扩展
- 打开 VSCode,点击左侧的扩展(Extensions)图标。
- 搜索
ESP-IDF
,安装由 Espressif Systems 提供的官方扩展。 - 安装完成后,按照扩展的指引,配置 ESP-IDF 的路径和 Python 环境。
- 在 VSCode 中打开您的项目,即可进行开发、编译、烧录和监视。
7. 常见问题与故障排除
问题 1:无法连接到开发板
- 症状:运行
idf.py flash
时,出现连接错误。 - 解决方法:
- 检查串口设备名称是否正确。
- 确保开发板已正确连接,并未被其他程序占用。
- 尝试按下开发板的
BOOT
或EN
按钮,再次尝试烧录。
问题 2:idf.py
命令找不到
- 症状:终端提示
idf.py: command not found
。 - 解决方法:
- 确保已运行
source ~/esp/esp-idf/export.sh
。 - 检查
~/.bashrc
中是否正确添加了环境变量。
- 确保已运行
问题 3:Python 包版本冲突
- 症状:编译时出现 Python 包版本错误。
- 解决方法:
- 使用 ESP-IDF 提供的 Python 虚拟环境,确保依赖包的版本正确。
- 不要在系统的 Python 环境中安装或升级与 ESP-IDF 相关的包。
8. 总结
通过以上步骤,您已经在 Ubuntu 22.04 桌面系统上成功搭建了 ESP-IDF 的开发环境,并学会了如何创建、编译和烧录 ESP-IDF 项目。
关键点:
- 环境准备:安装必要的工具和依赖项。
- 安装 ESP-IDF:克隆仓库并运行安装脚本。
- 设置环境变量:确保 ESP-IDF 工具可用。
- 项目创建与编译:使用
idf.py
命令进行项目管理。
建议:
- 熟悉 ESP-IDF 文档:ESP-IDF 官方文档提供了丰富的资源和示例,可以帮助您深入了解。
- 使用版本控制:建议使用 Git 管理您的项目代码,方便协作和版本管理。
- 定期更新 ESP-IDF:Espressif 会定期发布更新,包含新功能和修复。
参考资源:
- ESP-IDF 编程指南
- ESP-IDF 示例项目
相关文章:
ubuntu22.04 桌面系统怎么搭建一个esp-idf的项目,搭建开发环境
详细介绍如何在 Ubuntu 22.04 桌面系统上搭建 ESP-IDF 的开发环境,并创建一个 ESP-IDF 项目。以下内容将涵盖从环境准备到项目创建和编译的所有步骤。 目录 环境准备 1.1 更新系统1.2 安装必要的工具和依赖项 安装 ESP-IDF 2.1 克隆 ESP-IDF 仓库2.2 运行安装脚本 …...

iOS Swift逆向——deMangle过程中的偏移计算
碰到好多函数最开始都会调用这个函数,xref了一下,发现有上万个xref。 __int64 __fastcall sub_1000B6ED0(__int64 *a1) {__int64 result; // x0result *a1;if ( result < 0 ){result swift_getTypeByMangledNameInContext((char *)a1 (int)result…...

国产大模型基础能力大比拼 - 计数:通义千文 vs 文心一言 vs 智谱 vs 讯飞-正经应用场景的 LLM 逻辑测试
在大语言模型(LLM)不断涌现的时代,如何评估这些国产大模型的逻辑推理能力,尤其是在处理基础计数问题上的表现,成为了一个备受关注的话题。随着越来越多的国产大模型进入市场,比较它们在不同任务中的表现尤为…...

YOLO11改进 | 注意力机制 | 正确的 Self-Attention 与 CNN 融合范式,性能速度全面提升【独家创新】
秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 卷积和自注意力是两种强大的表征学习技术…...
0基础学java之Day11
二维数组 静态二位数组 理解:二维数组中包含了多个一维数组 声明: 数据类型 变量名;--推荐 数据类型 变量名; //静态初始化1//String[][] names new String[][]{{"小红","小绿","小蓝"},{"小黄","小紫…...
python主流框架Django:ORM框架关联查询与管理器
目录 注意 使用前要调用之前的模型类 F对象 Q对象 聚合函数 排序 关联查询(连表查询) 修改 删除 查询集 QuerySet 注意 使用前要调用之前的模型类 F对象 之前的查询都是对象的属性与常量值比较,两个属性怎么比较呢? 答:使用 "F对象&quo…...

如何有效维护您的WordPress在线商店内容:提高客户参与度与转化率的实用技巧
在电子商务领域,内容为王。新鲜、相关且有吸引力的内容能显著提升客户参与度和转化率。本文将探讨如何有效更新和维护您的在线商店内容,确保客户始终获得最佳体验。 定期更新产品信息 产品描述 产品描述是吸引客户和促成销售的关键。定期检查并更新产…...

【Java】认识异常
1.异常概念与体系结构 1.1异常的概念 在我们日常开发中,代码都是尽可能完善,但是难免会出现一些奇奇怪怪的问题。而这些奇奇怪怪的问题可能很难通过代码去控制,比如格式不对会报错,网络不好也会报错等。 在Java中,将…...

20 Shell Script输入与输出
标出输入、标准输出、错误输出 一、程序的基本三个IO流 一)文件描述符 任何程序在Linux系统中都有3个基本的文件描述符 比如: cd/proc/$$/fd 进入当前shell程序对于内核在文件系统的映射目录中: [rootlocalhost ~]# cd /proc/$$/fd [rootlocalhos…...

HCIP-HarmonyOS Application Developer 习题(十六)
(判断)1、HiLink通过分布式软总线的方式连接所有设备,强能力设备可对弱能力设备进行设备虚拟化,将弱设备当做本机设备直接调用。 答案:错误 分析:HiLink 主要针对的是应用开发者与第三方设备开发者…...
没有什么可以抵达乌托邦,包括AI
本文为《智人之上:从石器时代到AI时代的信息网络简史》书评 可以说,尤瓦尔赫拉利又一次让我们获得了理解人类文明的新视角。 这是他一直以来都在做的:构建理解人类文明史的新知识框架。从此前的《人类简史》《未来简史》《今日简史》,到今天的新书《智人之上》,他一直保…...

家庭事务管理系统|基于java和vue的家庭事务管理系统设计与实现(源码+数据库+文档)
家庭事务管理系统 目录 基于java和vue的家庭事务管理系统 一、前言 二、系统功能设计 三、系统实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师,阿里云…...

doris创建异步物化视图(加速数据低频变更的复杂实时计算)
异步物化视图,可以把那些每次实时计算非常耗时的,而需要计算的数据变更比较低频的这些计算创建对应的异步物化视图,当相关数据变化的时候触发异步任务去更新计算结果,或者定时计算也可以。例如该处示范为计算订单的订单标识&#…...

PhpSpreadsheet创建带复杂表头的excel数据
目录 一:背景 二:excel表头数据实现 三:excel渲染数据实现: 四:最终效果如下: 一:背景 最近需要统计一些数据,导出到excel,主要是一些区域的人员销售统计数据,涉及到复杂的表头和…...

BurpSuite渗透工具的简单使用
BurpSuite渗透工具 用Burp Suite修改请求 step1: 安装Burp Suite。官网链接:Burp Suite官网 step2: 设置代理 step3: 如果要拦截https请求,还需要在客户端安装证书 step4: 拦截到请求可以在Proxy ->…...

洞察云上风险,主机安全尽在掌握
在实战攻防演练中,主机一直是攻击方的最终目标。作为网络架构中的重要组成部分,主机包含了大量的敏感数据、关键服务和系统资源。同时主机拥有网络资源的访问权限,攻击者通过入侵主机获得权限,进而控制整个网络或系统。因此做好主…...
使用kimi编辑助手,开始搭建一个微信小程序!第一天
为什么开源?因为不开源,一个人开发小程序,一点突如其来的变故就会导致自己整体处于一个不舒服的状态,同时自己从0开始1开始搭建小程序,也是自己个体之间能力的验证! 目前小程序版本:2.5.2 目前…...
【已解决】libev not found
学习韦东山老师的Linux应用开发实验班的JSON部分,在编译JSON包的过程中 报错命令: ./configure --hostarm-buildroot-linux-gnueabihf -prefix$PWD/tmp 错误信息: checking for libev support... checking for arm-buildroot-linux-gnue…...

qt QVariant详解
QVariant是Qt框架中一个功能强大的变体类,它提供了一种通用的方式来存储Qt对象及其他类的值,能够以类似于指针的方式存储任意类型的值。 一、 主要特性 通用性:QVariant可以存储几乎所有数据类型,包括基本数据类型(如…...

再获殊荣!通付盾当选信息技术应用创新工作委员会技术活动单位称号
近日,通付盾凭借其在信息技术应用创新领域的卓越贡献和突出表现,荣获“信息技术应用创新工作委员会技术活动单位”称号。这一荣誉不仅是对通付盾在技术创新和信息安全领域努力的肯定,更是对其在推动国家信息技术应用创新发展中发挥重要作用的…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

最新SpringBoot+SpringCloud+Nacos微服务框架分享
文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的,根据Excel列的需求预估的工时直接打骨折,不要问我为什么,主要…...

Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...