ubuntu22.04 桌面系统怎么搭建一个esp-idf的项目,搭建开发环境

详细介绍如何在 Ubuntu 22.04 桌面系统上搭建 ESP-IDF 的开发环境,并创建一个 ESP-IDF 项目。以下内容将涵盖从环境准备到项目创建和编译的所有步骤。


目录

  1. 环境准备
    • 1.1 更新系统
    • 1.2 安装必要的工具和依赖项
  2. 安装 ESP-IDF
    • 2.1 克隆 ESP-IDF 仓库
    • 2.2 运行安装脚本
  3. 设置环境变量
    • 3.1 临时设置环境变量
    • 3.2 永久添加到 .bashrc
  4. 创建 ESP-IDF 项目
    • 4.1 使用示例项目
    • 4.2 创建新项目
  5. 编译、烧录和监视项目
    • 5.1 编译项目
    • 5.2 烧录固件
    • 5.3 监视串口输出
  6. 使用 VSCode 进行开发(可选)
    • 6.1 安装 VSCode
    • 6.2 安装 ESP-IDF 扩展
  7. 常见问题与故障排除
  8. 总结

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。
  • cmakeninja-build:用于构建项目。
  • libusb-1.0-0dfu-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

提示:您也可以将 flashmonitor 命令合并:

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 扩展

  1. 打开 VSCode,点击左侧的扩展(Extensions)图标。
  2. 搜索 ESP-IDF,安装由 Espressif Systems 提供的官方扩展。
  3. 安装完成后,按照扩展的指引,配置 ESP-IDF 的路径和 Python 环境。
  4. 在 VSCode 中打开您的项目,即可进行开发、编译、烧录和监视。

7. 常见问题与故障排除

问题 1:无法连接到开发板

  • 症状:运行 idf.py flash 时,出现连接错误。
  • 解决方法
    • 检查串口设备名称是否正确。
    • 确保开发板已正确连接,并未被其他程序占用。
    • 尝试按下开发板的 BOOTEN 按钮,再次尝试烧录。

问题 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 示例项目

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React是如何工作的?

从编写组件到最后屏幕生成界面,如上图所示,我们现在需要知道的就是后面几步是如何运行的。 概述 这张图解释了 React 渲染过程的几个阶段: 渲染触发:通过更新某处的状态来触发渲染。渲染阶段:React 调用组件函数&…

智能优化算法-生物地理学算法(BBO)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 生物地理学优化算法 (Biogeography-Based Optimization, BBO) 是一种基于生物地理学原理的元启发式优化算法,由Dan Simon于2008年提出。BBO通过模拟物种在不同栖息地之间的迁移过程来搜索最优解&…

Dongle Sentinal在Jenkins下访问不了的问题

背景: 工作站部署的jenkins的脚本无法正常打包,定位后发现是本地获取不了license,但是使用usb over network的远程license都能获取并正常打包 分析: 获取不了license的原因是本地无法识别dongle。根据提供信息,之前…

卡特兰数解释相关的样例以及补充例题

目录 拓展的场景分析 1.圆上连接线段 2.二叉树问题 3.多边形划分三角形问题 补充的例题 P1976 鸡蛋饼 P1722 矩阵 II 通过取模处理判断选择用哪个式子​编辑 P2532 [AHOI2012] 树屋阶梯 P3978 [TJOI2015] 概率论 拓展的场景分析 1.圆上连接线段 一个圆上有2*n个点&am…

nginx中的HTTP 负载均衡

HTTP 负载均衡:如何实现多台服务器的高效分发 为了让流量均匀分配到两台或多台 HTTP 服务器上,我们可以通过 NGINX 的 upstream 代码块实现负载均衡。 方法 在 NGINX 的 HTTP 模块内使用 upstream 代码块对 HTTP 服务器实施负载均衡: upstr…

基于微博评论的自然语言处理情感分析

目录 一、项目概述 二、需要解决的问题 三、数据预处理 1、词汇表构建(vocab_creat.py) 2、数据集加载(load_dataset.py) 四、模型构建(TextRNN.py) 1、嵌入层(Embedding Layer&#xff…

Unity通过高德开放平台获取天气信息

一、注册高德开放平台账号&#xff0c;获取天气接口Key 1、构建自己的应用 网址&#xff1a;https://lbs.amap.com/api/webservice/guide/api/weatherinfo 最终调用api的地址形式&#xff1a; https://restapi.amap.com/v3/weather/weatherInfo?city110101&key<用户…

ionic Capacitor 生成 Android 应用

官方文档 https://ionic.nodejs.cn/developing/android/ https://capacitorjs.com/docs/getting-started 1、创建新的 Capacitor 应用程序 空目录下面 npm init capacitor/app2、install Capacitor npm install npm start在这里插入图片描述 3、生成dist目录 npm run buil…

华为eNSP:MAC地址漂移防止与检测

一、什么是MAC地址漂移&#xff1f; MAC地址漂移是指在计算机网络中&#xff0c;MAC&#xff08;Media Access Control&#xff09;地址被动态更改的现象。每个网络接口设备都有一个唯一的MAC地址&#xff0c;用来标识该设备在网络中的身份。然而&#xff0c;有些恶意软件或网…

15.JVM垃圾收集算法

一、垃圾收集算法 1.分代收集理论 分代收集理论是JAVA虚拟机进行垃圾回收的一种思想&#xff0c;根据对象存活周期的不同将内存分成不同的几个区域&#xff1b;一般将JAVA堆内存分为新生代和老年代&#xff1b;根据每个分代特点选择不同的垃圾收集器&#xff1b; 在新生代中&am…

深入理解 TypeScript 中的 as 关键字

在TypeScript中&#xff0c;as 关键字是一种类型断言&#xff08;Type Assertion&#xff09;的语法&#xff0c;用于告诉编译器如何理解某个变量的类型。这在开发过程中非常有用&#xff0c;尤其是当你知道比编译器更多的类型信息时 基本用法 类型断言允许你在编译时更改变量的…

InnoDB引擎(架构,事务原理,MVCC详细解读)

目录 架构分析 逻辑存储结构​ 内存结构​ Buffer Pool​ ChaneBuffer 自适应哈希​ LogBuffer​ 磁盘结构​ 后台线程​ 事务原理​ redolog日志 undolog日志​ MVCC​ 三个隐藏字段​ undolog版本链 readview​ RC(读已提交原理分析)​ RR(可重复读原理分析…

动态规划之斐波那契数列

文章目录 第 N 个泰波那契数三步问题使用最小花费爬楼梯解码方法 动态规划的基本思想是利用之前已经计算过的结果&#xff0c;通过递推关系式来计算当前问题的解。 整体思路 状态表示状态转移方程初始化填表顺序返回值 第 N 个泰波那契数 题目&#xff1a; 第 N 个泰波那契数 思…

云网络验证系统云验证+卡密生成+多应用多用户管理

云网络验证系统云验证&#xff0c;多样化应用管理方式&#xff0c;多种项目任你开发&#xff0c;分布式应用开关&#xff0c;让您的应用开发更简单&#xff0c;本系统借鉴于易如意API写法及思路&#xff0c;完美实现多用户多应用管理。 源码特色 1&#xff0c;对接&#xff1…

013_django基于大数据的高血压人群分析系统2024_dcb7986h_055

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍&#xff1a;CodeMentor毕业设计领航者、全网关注者30W群落&#xff0c;InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者&#xff0c;博客领航之星、开发者头条/腾讯云/AW…

MarkDownload 剪裁网页插件配置使用全流程

前言 写在前面&#xff0c;大家有什么问题和需要可以跟我交流 需求 之前一直使用 Joplin 的剪裁网页功能&#xff0c;但是剪裁下来后不可避免的需要使用 Joplin 对剪裁下来的内容做处理&#xff0c;Joplin 用起来不是很习惯&#xff0c;所以在想可不可以用 Obsidian 来实现网…

图的最小生成树算法--普里姆(Prim)算法和克鲁斯克尔(Kruskal)算法

一、图的最小生成树 最小生成树&#xff08;Minimum spanning tree&#xff0c;MST&#xff09;是最小权重生成树&#xff08;Minimum weight spanning tree&#xff09;的简称&#xff0c;是一个连通加权无向图中一棵权值最小的生成树。 在一给定的无向图 G ( V , E ) G …

探索 Jupyter 笔记本转换的无限可能:nbconvert 库的神秘面纱

文章目录 探索 Jupyter 笔记本转换的无限可能&#xff1a;nbconvert 库的神秘面纱背景&#xff1a;为何选择 nbconvert&#xff1f;库简介&#xff1a;nbconvert 是什么&#xff1f;安装指南&#xff1a;如何安装 nbconvert&#xff1f;函数用法&#xff1a;简单函数示例应用场…

MySQL企业常见架构与调优经验分享

文章目录 一、选择 PerconaServer、MariaDB 还是 MYSQL二、常用的 MYSQL 调优策略三、MYSOL 常见的应用架构分享四、MYSOL 经典应用架构 观看学习课程的笔记&#xff0c;分享于此~ 课程&#xff1a;MySQL企业常见架构与调优经验分享 mysql官方优化文档 一、选择 PerconaServer、…

全方面熟悉Maven项目管理工具(二)坐标、pom.xml文件的解读!

1. 坐标&#xff08;核心概念&#xff09; 1.1 数学中的坐标 使用 x、y、z 三个向量作为空间的坐标系&#xff0c;可以在空间中唯一的定位到一个点 1.2 Maven 中的坐标 1.2.1 向量说明&#xff1a; 使用三个向量在 Maven的仓库 中唯一的定位到一个 jar 包 groupId&#xf…