ESP32开发:ubuntu22.04 下esp-idf开发环境搭建

ubuntu22.04 下 esp-idf 开发环境搭建

    • 1.安装编译 ESP-IDF 需要以下软件包
    • 2.获取 ESP-IDF
    • 3.设置工具
      • 下载工具备选方案
    • 4.设置环境变量
    • 5.编译工程并烧录
      • 配置工程
      • 编译工程
      • 烧录固件到设备
    • 6.其他指令
      • 监视输出
      • 擦除 flash
      • 清除编译

1.安装编译 ESP-IDF 需要以下软件包

编译 ESP-IDF 需要以下软件包。请根据使用的 Linux 发行版本,选择合适的安装命令。

  • Ubuntu 和 Debian:

    sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
    

2.获取 ESP-IDF

在home目录下新建 esp 文件夹.

mkdir ~/esp

为了安装多个版本:

esp 目录下载指定版本的esp-idf sdk.

cd ~/esp
git clone -b v5.4.2 --recursive https://github.com/espressif/esp-idf.git

等待下载解压结束,把esp-idf 重命名为 esp-idf-v5.4.2,进入 esp-idf-v5.4.2

3.设置工具

进入 esp-idf-v5.4.2 ,运行安装脚本:.install.sh

cd esp-idf-v5.4.2

如果只需要为esp32-s3、esp32设置所需工具,可以指定:

. ./install.sh esp32s3,esp32

如果需要一次性为所有支持的目标芯片安装工具,可以运行如下命令:

. ./install.sh all

下载工具备选方案

ESP-IDF 工具安装器会下载 Github 发布版本中附带的一些工具,如果访问 Github 较为缓慢,可以设置一个环境变量,从而优先选择 Espressif 的下载服务器进行 Github 资源下载。

⚠️ 该设置只影响从 Github 发布版本中下载的单个工具,它并不会改变访问任何 Git 仓库的 URL。

要在安装工具时优先选择 Espressif 下载服务器,请在运行 install.sh 时使用以下命令:

cd ~/esp/esp-idf-v5.4.2
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
./install.sh

⭐️推荐国内用户使用国内的下载服务器,以加快下载速度。

cd ~/esp/esp-idf-v5.4.2
export IDF_GITHUB_ASSETS="dl.espressif.cn/github_assets"
./install.sh

4.设置环境变量

工具安装完成之后,尚未添加至 PATH 环境变量,无法通过终端中使用这些工具。因此,必须设置一些环境变量。

需要运行 ESP-IDF 的终端窗口运行以下命令:

. $HOME/esp/esp-idf-v5.4.2/export.sh

如果需要经常运行 ESP-IDF,可以为执行 export.sh 创建一个别名,具体步骤如下:

  1. 复制并粘贴以下命令到 shell 配置文件中(.profile.bashrc.zprofile 等)

    alias get_idf='. $HOME/esp/esp-idf/export.sh'
    
  2. 通过重启终端窗口或运行 source [path to profile],如 source ~/.bashrc 来刷新配置文件。

现在可以在任何终端窗口中运行 get_idf 来设置或刷新 ESP-IDF 环境。

不建议直接将 export.sh 添加到 shell 的配置文件。这样做会导致在每个终端会话中都激活 IDF 虚拟环境(包括无需使用 ESP-IDF 的会话)。这违背了使用虚拟环境的目的,还可能影响其他软件的使用。

按照上述方法,当安装了多个版本的esp-idf 之后,也可以通过使用添加别名来区分不同的版本。

示例如下:

在终端中,输入get_idf_v53 即可使用V5.3.3版本的esp-idf:

5.编译工程并烧录

配置工程

设置目标芯片,然后配置项目,指令如下:

idf.py set-target esp32s3
idf.py menuconfig

编译工程

打开一个测试工程,编译工程需要输入指令:

idf.py build

运行以上命令可以编译应用程序和所有 ESP-IDF 组件,接着生成引导加载程序、分区表和应用程序二进制文件,编译完成后将生成 .bin 文件。

把串口插入到ubuntu中,找到对应的串口的标识,Linux 操作系统:/dev/tty 开头。

Linux中两种常见的 USB 转串口设备标识:

  • ttyUSB*:常见于 CH340、CP2102 等 USB 转串口芯片。

  • ttyACM*:常见于 CDC-ACM 类设备(比如 Arduino、STM32 的虚拟串口)。

使用如下指令可以查看ubuntu下的可用的串口设备文件:

cd /dev
ls ttyUSB*
ls ttyACM*

也可以比较插入设备前后的变化,可以快速找到当前的设备标识符:

插入设备前,运行:

ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null

记下已有的串口设备。

插入 USB 串口设备后,再运行同样的命令。

ls /dev/ttyUSB* /dev/ttyACM* 2>/dev/null

新出现的设备就是你要找的,比如 /dev/ttyUSB0/dev/ttyACM0

烧录固件到设备

烧录之前,需要获取串口设备文件的读写权限:

sudo chmod a+rw /dev/ttyACM0

或者

sudo chmod 666 /dev/ttyACM0

运行以下命令,将刚刚生成的二进制文件烧录至芯片:

idf.py -p PORT flash

将 PORT 替换为自己的串口名称,上面的设备对应指令则为:

idf.py -p /dev/ttyACM0 flash

6.其他指令

监视输出

可以使用 idf.py -p PORT monitor 命令,监视工程的运行情况

idf.py -p PORT monitor

擦除 flash

ESP-IDF 支持擦除 flash。请运行以下命令,擦除整个 flash:

idf.py -p PORT erase-flash

若存在需要擦除的 OTA 数据,请运行以下命令:

idf.py -p PORT erase-otadata

擦除 flash 需要一段时间,在擦除过程中,请勿断开设备连接。

清除编译

清除之前的编译:

idf.py fullclean

文档参考链接:
Linux 和 macOS 平台工具链的标准设置

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

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

相关文章

汇编基础2

1.函数调用fun0mov r4, #100bx lrget_MaxNumcmp r0, r1stmfd sp!, {r0-r12, lr} //入栈bl fun0 //调用fun0函数ldmfd sp!, {r0-r12, lr} //出栈movge r3, r0movlt r3, r1bx lr mainldr sp, 0x40001000mov r0, #100mov r1, #200mov r2, #100stmfd sp!,…

20250909的学习笔记

HTML 基础笔记1. HTML 基本格式<!DOCTYPE html> <html> <head><meta charset"utf-8"><title>中文测试</title> </head> <body>这里是测试body测试内容。 </body> </html>2. HTML 标签常用标签 - <h1…

Linux 安全加固;Windows 安全设置

一、Linux 安全加固1. 账户与权限管理最小权限原则禁用 root 远程登录&#xff1a;修改 /etc/ssh/sshd_config&#xff0c;设置 PermitRootLogin no。使用 sudo 替代直接 root 操作&#xff0c;并通过 /etc/sudoers 限制命令范围&#xff08;如仅允许 apt 和 systemctl&#xf…

条码打印检测一体机是什么?

在工业4.0和智能制造的大背景下&#xff0c;数据的准确性和实时性是构建高效追溯系统。条码/二维码作为物理世界与数字世界连接的桥梁&#xff0c;其打印质量直接决定了数据链路的可靠性。传统“打印-人工抽检/离线全检”的模式存在流程割裂、效率低下、无法100%覆盖的弊端&…

Javaweb - 14.6 - Vue3 数据交互 Axios

目录 Promise 普通函数和回调函数 Promise 简介 Promise 基本用法 async 和 await 的使用 Axios 介绍 Axios 入门案例 Axios 的 get 和 post 方法 Axios 拦截器 完&#xff01; Promise 普通函数和回调函数 普通函数&#xff1a;正常调用的函数&#xff0c;一般函数…

怎么选适合企业的RPA财务机器人?

对于大多数财务人来说&#xff0c;“月初月末就是噩梦”已经成了常态&#xff1a;一边要面对堆积如山的单据和报表&#xff0c;一边还要应付领导不断加码的工作&#xff0c;常常忙到深夜&#xff0c;却总觉得自己陷在重复事务中难有成长。其实&#xff0c;这并不是个体问题&…

html css js网页制作成品——HTML+CSS无穷网页设计(5页)附源码

目录 一、👨‍🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML

AUTOSAR进阶图解==>AUTOSAR_SWS_PDURouter

AUTOSAR PDU Router详解文档 AUTOSAR通信架构中的核心路由模块目录 1. 概述2. PDU Router模块架构3. PDU Router配置模型4. PDU Router路由流程5. PDU Router状态机6. 总结 1. 概述 PDU Router模块是AUTOSAR通信架构中的核心组件&#xff0c;负责在AUTOSAR软件组件之间路由I-…

RHEL7.9、RHEL9.3——源码安装MySQL

目录 一、环境部署 1. 克隆rhel7.9虚拟机 二、源码安装MySQL 1. 准备工作 2. 源码部署mysql8.0.40 1&#xff09;安装编译mysql所需软件包 2&#xff09;编译安装mysql8.0.40 3&#xff09;生成启动脚本 一、环境部署 1. 克隆rhel7.9虚拟机 改名为 “RHEL79_mysql_master” 并…

解决Win11 安全中心删掉存在隐患的工具

打开设置&#xff0c; 找到Windows安全中心&#xff0c;找到病毒和威胁防护&#xff0c;选择排除项&#xff0c;点 添加或删除排除项添加文件&#xff0c;文件夹&#xff0c;工具按照自己需求选择。或&#xff0c;删除文件注意&#xff1a;隐患的工具或者文件安装或者用完&…

通过URI Scheme实现从Web网页上打开本地C++应用程序(以腾讯会议为例,附完整实现源码)

目录 1、需求描述 2、选择URI Scheme实现 3、何为URI Scheme&#xff1f; 4、将自定义的URL Scheme信息写入注册表的C源码实现 5、如何实现最开始的3种需求 6、后续需要考虑的细节问题 之前陆续收到一些从Web页面上启动我们C客户端软件的需求&#xff0c;希望我们能提供一…

机器学习02——模型评估与选择(过拟合与欠拟合、K折交叉验证、均方误差、混淆矩阵)

上一章&#xff1a;机器学习01——机器学习概述 下一章&#xff1a;机器学习03——线性模型 机器学习实战项目&#xff1a;【从 0 到 1 落地】机器学习实操项目目录&#xff1a;覆盖入门到进阶&#xff0c;大学生就业 / 竞赛必备 文章目录一、经验误差与过拟合&#xff08;一&a…

基于 Django 与 Bootstrap 构建的现代化设备管理平台

整体步骤概览 创建项目和应用设计模型&#xff08;Model&#xff09; - 定义设备的数据结构配置用户认证&#xff08;Auth&#xff09; - 使用 Django 自带的强大用户系统创建视图&#xff08;View&#xff09; - 处理业务逻辑&#xff1a;登录、列表、增删改查编写模板&#x…

微软依旧稳定发挥,Windows 最新更新性能「开倒车」

微软在前不久为Release Preview测试用户推送了最新Windows11 25H2版本。按照惯例&#xff0c;正式版将于9月或者10月与咱们见面。虽然看起来是个跨版本的大更新&#xff0c;但是更新方式将服务堆栈更新&#xff08;SSU&#xff09;与最新累积更新&#xff08;LCU&#xff09;。…

一手实测,文心x1.1的升级很惊喜啊

一手实测&#xff0c;文心x1.1的升级很惊喜啊 前言 月9日&#xff0c;在 WAVE SUMMIT深度学习开发者大会上 百度发布了一个新的思考模型文心x1.1&#xff1a; X1 Turbo 升级为 X1.1 了。 文心4.5 Turbo 和 X1 Turbo 是2025年4月25日发布的&#xff0c;距今已经半年过去了&…

Flask 核心基础:从 路由装饰器 到 __name__ 变量 的底层逻辑解析

Flask 核心基础&#xff1a;从路由装饰器到 name 变量的底层逻辑解析 在使用 Flask 开发 Web 应用时&#xff0c;我们总会从 app Flask(__name__) 和 app.route("/") 这两行代码开始。看似简单的语法背后&#xff0c;藏着 Python 装饰器机制与 Flask 框架设计的核心…

中国AI云市场报告:阿里云份额达35.8%,高于2至4名总和

9月9日&#xff0c;国际权威市场调研机构英富曼&#xff08;Omdia&#xff09;发布《中国AI云市场&#xff0c;1H25》报告&#xff0c;报告显示&#xff0c;2025年上半年&#xff0c;中国AI云市场规模达223亿元&#xff0c;阿里云占比35.8%位列第一&#xff0c;市场份额高于2到…

鸿蒙Next开发指南:UIContext接口解析与全屏拉起元服务实战

前言在鸿蒙应用开发过程中&#xff0c;我们经常会遇到需要获取UI上下文实例或者在非UI上下文中调用UI相关方法的场景。随着HarmonyOS NEXT的不断发展&#xff0c;UIContext API为我们提供了更加优雅的解决方案。本文将详细介绍如何使用UIContext中对应的接口获取与实例绑定的对…

leaflet读取mvt格式

如图所示&#xff0c;是全国的数据&#xff0c;截图是部分数据先安装&#xff1a;npm install leaflet npm install leaflet.vectorgrid如果是其余的框架直接用就行&#xff1a;import * as L from leaflet; import leaflet.vectorgrid;我用的是angular,所以是ts中声明&#xf…

OSG中交互(鼠标、键盘)处理

OpenSceneGraph (OSG) 中的交互处理,包括鼠标和键盘事件。 一、OSG 事件处理体系 OSG 使用一个基于访问者模式的事件处理体系,核心类包括: osgGA::GUIEventHandler: 所有事件处理器的基类 osgViewer::Viewer: 查看器,管理事件队列和分发 osgGA::EventQueue: 事件队列…