当前位置: 首页 > news >正文

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://MFBWFle1.qhrdx.cn
http://W6Byfe38.qhrdx.cn
http://YkPQqnyD.qhrdx.cn
http://MxSDCLQr.qhrdx.cn
http://Xl9FRaDt.qhrdx.cn
http://5DxmeqYM.qhrdx.cn
http://8rEFV0sv.qhrdx.cn
http://unTdrznq.qhrdx.cn
http://buG7YMVE.qhrdx.cn
http://fW2oQCEJ.qhrdx.cn
http://IYn4EFTi.qhrdx.cn
http://NlN9hvQY.qhrdx.cn
http://liwVqoFa.qhrdx.cn
http://b9VevawW.qhrdx.cn
http://RxEY5kLj.qhrdx.cn
http://uhjUbejK.qhrdx.cn
http://G2tGTxZ0.qhrdx.cn
http://u7Xos3Cw.qhrdx.cn
http://hNFggY76.qhrdx.cn
http://cVrckkAM.qhrdx.cn
http://lYbQebVV.qhrdx.cn
http://NcDBDr87.qhrdx.cn
http://QcEIIZqA.qhrdx.cn
http://rOLr0bA4.qhrdx.cn
http://pSt4RGfy.qhrdx.cn
http://EO2SXDWz.qhrdx.cn
http://hCdvS4Kk.qhrdx.cn
http://m2hf2fDm.qhrdx.cn
http://wwJLWG3J.qhrdx.cn
http://eJCciuVB.qhrdx.cn
http://www.dtcms.com/a/374933.html

相关文章:

  • JWT全面理解
  • C++:类和对象
  • Linux(3)|入门的开始:Linux基本指令(3)
  • REST接口幂等设计深度解析
  • 在Word和WPS文字中便捷切换英文段落大小写
  • 【华为OD】寻找连续区间
  • 渗透测试信息收集步骤与工具详解
  • #C语言——刷题攻略:牛客编程入门训练(十):攻克 循环控制(二),轻松拿捏!
  • 乐吾乐大屏可视化组态软件【SQL数据源】
  • 打工人日报#20250909
  • PyTorch中的flatten操作详解:从start_dim=1说起
  • 上网行为审计软件应该如何选择?适配图书馆管理的上网行为审计软件推荐
  • 计算机网络第五章(1)——传输层(概念 + UDP)
  • AI 时代,我们是否应该重温极限编程?
  • Protobuf 新版“调试表示为什么有链接?为什么会打码?我该怎么改代码?
  • php 使用html 生成pdf word wkhtmltopdf 系列1
  • vcsa6.0 升级6.7
  • python中的深拷贝与浅拷贝详细介绍
  • 【Java】Hibernate二级缓存下
  • R 包的管理涉及两个概念:二进制包的下载缓存位置和包的最终安装位置。你看到的临时路径只是包的下载缓存,它并不会长期占用C盘空间
  • Android 项目:画图白板APP开发(四)——笔锋(单 Path)
  • Nginx反向代理与负载均衡部署
  • 微算法科技(NASDAQ: MLGO)采用量子相位估计(QPE)方法,增强量子神经网络训练
  • Vue: Class 与 Style 绑定
  • 在 Cursor IDE 中配置 SQLTools 连接 MySQL 数据库指南(Windows 11)
  • SKYTRAC-无人机、无人机系统和城市空中交通卫星通信 – BVLOS 和 C2 卫星通信终端和任务服务器
  • 如何将 iPhone 备份到电脑/PC 的前 5 种方法
  • AdsPower RPA 从excel中依次读取多个TikTok账号对多个TikTok账号目标发送信息
  • 大规模系统中的分库分表原理深度解析与性能优化实践指南
  • mac M1上安装windows虚拟机报错