esp32 开发环境搭建

2023-05-16

文章目录

  • 前言
  • 提示
  • 构建工具
  • 安装 IDF
    • 设置 idf 目标平台
  • 设定环境变量
  • 同时安装多个版本
    • 安装 idf 和 tools
    • 修改环境变量
  • 参考资料
    • ESP-IDF 快速入门
    • 编译 ESP-AT 工程
    • idf.py build 出现cmake failed with exit code 1

前言

这是一篇水贴。。。

这里记录了这几天安装esp-idf的一些过程,涉及到了换软件源(github镜像)的一些操作,可能会对大家有些许帮助,所以整理之后发布出来。

另外,本人的开发机是 ArchLinux,里面有些软件包的名字可能和 ubuntu/CentOS 等系统中不一样,这些系统按照官方指南进行安装即可。

提示

如果访问 github 有困难,可以使用以下网址替代https://github.com/进行 clone:

https://jihulab.com

例如:
git clone -b release/v4.3 --recursive https://github.com/espressif/esp-idf.git ./esp-idf-v4. 3
替换之后是
git clone -b release/v4.3 --recursive https://jihulab.com/esp-mirror/espressif/esp-idf.git ./esp-idf-v4.3

构建工具

先安装构建和编译工具链:

$ sudo pacman -S --needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb

安装 IDF

克隆 esp-idf 到本地:

$ mkdir -p ~/esp
$ cd ~/esp
$ git clone --recursive https://github.com/espressif/esp-idf.git

如果下载速度较慢,可以试一下用手机热点下载。

设置 idf 目标平台

这一步主要是针对 esp32/esp8266 不同型号下载不同工具,如编译器、调试器、Python包等。

设置编译工具链安装位置:

$ export IDF_TOOLS_PATH=~/.Software/esp/espressif

这条指令将 IDF_TOOLS_PATH 安装到 ~/.Software/esp/espressif 目录下:

.Software/esp/espressif
▶ tree -L 1
.
├── dist
├── espidf.constraints.v5.0.txt
├── idf-env.json
├── python_env
└── tools # 里面就是编译和调试用的工具链

4 directories, 2 files

设置命令:

# 先设定 Espressif 的下载服务器进行 Github 资源下载
$ export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"

# 下载工具链
$ cd esp-idf
$ ./install.sh [platform1,platform2]

安装示例:

$ ./install.sh esp32 # 只安装 esp32 工具链
$ ./install.sh esp32,esp32s3 # 安装 esp32 和 esp32s3 工具链
$ ./install.sh all # 安装所有平台工具链

如果需要在安装后,将工具链转移到其他位置,可以通过两种方式完成:

  1. 修改 export.sh:

    # export.sh  
    2 export IDF_PATH=$HOME/.Software/esp/esp-idf
    3 export IDF_TOOLS_PATH=$HOME/.Software/esp/espressif
    

    修改完成之后,每次运行 export.sh,都会设置这两个环境变量。

  2. 修改文件 esp/esp-idf/tools/idf_tools.py 完成:

    # 修改前
    IDF_TOOLS_PATH_DEFAULT = os.path.join('~', '~/.espressif')
    # 修改后
    IDF_TOOLS_PATH_DEFAULT = os.path.join('~', '.Software/esp/espressif')
    

    修改之后将 espressif 移动到预定位置即可。

这里更推荐第一种方法,其灵活性更高,也更容易记住。这两种方法都需要和环境变量设置里面的 idf_start 搭配使用。

设定环境变量

在每次需要使用 esp-idf 时在 shell 里面执行 path/to/esp-idf/path/esp/esp-idf/export.sh 即可。

.profile(需要保证 .bashrc 或 .zshrc 里面有 source .profile 这一条语句) 或者 .bashrc 里面添加如下信息:

alias idf_start='source $HOME/esp/esp-idf/export.sh'

这样在每次需要使用idf的时候,执行指令idf_start即可。

也可以使用 idf_start 以外的名字,但是需要和环境中的各种命令区别开,避免重名。

同时安装多个版本

安装 idf 和 tools

按照官方 wiki 将各版本的idf和tools都安装在esp目录下,并修改相应信息:

▶ tree -L 1 esp
.
├── esp-idf-v4.4
├── esp-idf-v5.0
├── espressif-v5.0
├── xtensa-esp32-elf
└── xtensa-esp32-elf-v4.4

6 directories, 2 files

修改环境变量

这里将所有的环境变量全部放在 esp-idf/export.sh 中:

# esp-idf-v4.4/export.sh       
2 export IDF_PATH=$HOME/.Software/esp/esp-idf-v4.4
3 export IDF_TOOLS_PATH=$HOME/.Software/esp/xtensa-esp32-elf-v4.4

# esp-idf-v5.0/export.sh  
2 export IDF_PATH=$HOME/.Software/esp/esp-idf-v5.0
3 export IDF_TOOLS_PATH=$HOME/.Software/esp/espressif-v5.0

$HOME/.profile 里面设置各版本的环境变量指令:

6 # esp32
7 alias idf_start_v5='source $HOME/.Software/esp/esp-idf-v5.0/export.sh'
8 alias idf_start_v4.4='source $HOME/.Software/esp/esp-idf-v4.4/export.sh'

之后,只要在shell 中运行需要的指令就可以获取到 esp-idf 环境了。

环境变量 IDF_TOOLS_PATH 也可以直接写到 install.sh 中:

#!/usr/bin/env bash             
# 修改 Espressif 下载服务器
export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
export IDF_TOOLS_PATH="/home/dark/.Software/esp/idf-tools-v4.3"

注:
在编译 esp-at 过程中,我也在安装 idf-tools 之后,将tools换到了其他位置,也修改了相关变量,但是最终编译 esp-at 时,出现了 idf.py build 出现cmake failed with exit code 1 的问题,该问题目前并没有找到合适解决方法,最后只能通过重新安装 idf-tools 到预定位置解决。错误提示如下:

Cannot add target-level dependencies to non-existent target "flash"

参考资料

本文中所有操作大部分均来源于以下资料,感谢这些作者的辛苦付出,让我在遇到各种问题的时候能够找到相关的解决方法。

ESP-IDF 快速入门

本文所有步骤均按照 espressif 提供的 edp-idf 安装页面 进行。

编译 ESP-AT 工程

https://docs.espressif.com/projects/esp-at/zh_CN/latest/esp32/Compile_and_Develop/How_to_clone_project_and_compile_it.html

文中关于切换 github 镜像为国内镜像的操作在这篇文章里面可以找到。

idf.py build 出现cmake failed with exit code 1

https://github.com/espressif/esp-at/issues/559

这是 esp-at 的讨论,文末关于 esp-at 编译部分的问题可以在这里找到详细资料。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

esp32 开发环境搭建 的相关文章

  • C语言总结day02

    day02 1 运算符 算术运算符 单目运算符 xff1a 43 正 xff1b 负 xff1b 双目运算符 xff1a 这三个同级 gt 43 这两个同级 注意 xff1a 前边三个的优先级大于后边的两个 xff1b 双目运算符两边运算数
  • C语言总结day03

    day03 1 数据的输入输出 数据的输出 xff1a 从计算机向输出设备 如显示器 打印机等 输出数据称为输出 数据的输入 xff1a 从输入设备 如键盘 磁盘 光盘 扫描仪等 向计算机输入数据称为输入 C语言函数库中有一批 34 标准输
  • C语言总结day04

    day04 1 int a n 是错误的 C语言中不允许对数组的大小作动态定义 2 字符数组的初始化 char a 61 I am Student char a 10 利用for语句对每个进行初始化 3 字符数组的输入和输出输入 char
  • C语言总结day06

    day06 1 定义和使用结构体变量 C语言允许用户建立由不同类型数据组成的组合型的数据结构 xff0c 它称为结构体 声明格式 struct 结构体名 成员列表 定义结构体类型变量 struct 结构体名 结构体变量 在声明类型的同时定义
  • C语言总结day07

    day07 一些概念理解 1 为什么使用指针 每一个编程语言都使用指针C 43 43 将指针暴露给了 用户 xff08 程序员 xff09 xff0c 而java和C 等语言则将指针隐蔽起来了 2 指针和引用的区别 本质 xff1a 引用是
  • C语言总结day05

    day05 1 函数间可以相互调用 xff0c 但是不能调用main函数 xff0c main函数是被操作系统调用的 2 数组作为函数参数 数组元素可以作函数参数 值传递 注意 xff1a 数组元素可以用作函数实参 xff0c 不能用作形参
  • SSM-Spring入门

    Spring学习 1 Spring简介 Spring是什么 Spring是分层的Java SE EE应用full stack轻量级开源框架 xff0c 是以loC Inverse Of Contorl 反转控制 和AOP Aspect Or
  • SSM-Spring学习(二)

    Spring IoC和DI注解开发 Spring配置数据源 数据源 xff08 连接池 xff09 介绍 xff1a 数据库连接池概念 百度百科 xff1a 数据库连接池负责分配 管理和释放数据库连接 xff0c 它允许应用程序重复使用一个
  • SSM-Spring(三)-AOP

    简介 什么是 AOP AOP 为 span class token class name Aspect span span class token class name Oriented span span class token clas
  • RocetMQ发送顺序消息的所有方法以及代码示例

    RocetMQ发送顺序消息的所有方法以及代码示例 一 使用RocketMQTemplate发送顺序消息 xff08 1 xff09 SendResult syncSendOrderly String destination Message
  • Spring(四)---Spring Jdbc Template基本使用

    1 概述 JdbcTemplate是spring框架中提供的一个对象 xff0c 是对原始繁琐的Jdbc API对象的简单封装 spring框架 为我们提供了很多的操作模板类 例如 xff1a 操作关系型数据的JdbcTemplate和Hi
  • SpringMVC(一)------快速入门

    Spring与Web环境集成 ApplicationContext应用上下文获取方式 应用上下文对象是通过new ClasspathXmlApplicationContext spring配置文件 方式获取的 xff0c 但是每次从容器中获
  • SpringMVC(二)-----SpringMVC的请求和响应

    SpringMVC的数据响应 SpringMVC的数据响应 数据响应方式 理解 页面跳转 直接返回字符串通过ModelAndView对象返回 回写数据 直接返回字符串返回对象或集合 SpringMVC的数据响应 页面跳转 返回字符串形式 x
  • SpringMVC(三)------SpringMVC的文件上传

    SpringMVC的请求 文件上传 客户端表单实现 应用 文件上传客户端表单需要满足 xff1a 表单项type 61 file 表单的提交方式是post表单的enctype属性是多部分表单形式 xff0c 及enctype 61 mult
  • Keil 安装

    Keil v5 C51和MDK共存 准备工具 C51版本 Keil xff08 如C51v959 xff09 MDK版本 xff08 如MDK525 xff09 激活工具 keil keygen 需要的Pack包 Keil STM32F1x
  • Kubernetes安装

    使用kubeadm创建集群 基础环境 一台兼容的 Linux 主机 Kubernetes 项目为基于 Debian 和 Red Hat 的 Linux 发行版以及一些不提供包管理器的发行版提供通用的指令每台机器 2 GB 或更多的 RAM
  • Java集合学习

    Java集合图的详解 Java集合详解 第一部分 Collection xff08 继承了Iteratable接口 xff09 和Map xff0c 是集合框架的根接口集合类存放于java util包中 集合类存放的都是对象的引用 xff0
  • yaml文件格式总结

    yaml文件格式总结 概念基本语法数据类型YAML 对象 YAML 数组复合结构纯量引用 概念 YAML 是 YAML Ain t a Markup Language xff08 YAML 不是一种标记语言 xff09 的递归缩写 在开发的
  • tmux使用教程

    tmux 的安装 Centos系统中使用 yum 来安装 tmuxyum install tmuxUbuntu系统使用apt安装tmuxapt install tmuxMac OS 使用 brew 来安装 tmuxbrew install
  • SSM-Spring快速入门(基于maven)

    Spring IoC amp DI 开发流程 xff08 1 xff09 导入Spring开发的基本包坐标 span class token generics span class token punctuation lt span pro

随机推荐

  • RocketMQ发送事务消息的所有方法以及代码示例

    TOC 一 使用RocketMQTemplate发送事务消息 首先我们要确定发送什么样的消息 xff0c 使用RocketMQTemplate发事务消息时程序会自动进入事务监听器类中 xff0c 所以我们确定发什么样的消息才能在事务监听器中
  • ubuntu运行maude提示error while loading shared libraries: libtinfo.so.5

    ubuntu运行maude提示 maude linux64 error while loading shared libraries libtinfo so 5 cannot open shared object file No such
  • connect to host port 22: Connection refused

    Windows 使用SSH连接树莓派 xff1a 提示 xff1a 这里简述项目相关背景 xff1a 今天练习发现使用MobaXterm可以正常连接到树莓派 xff0c 但是使用windows终端就不可以连接 xff0c 显示connect
  • windows通过SSH控制树莓派

    windows通过SSH控制树莓派 xff1a 因学习需要在windows系统下对树莓派进行SSH连接 xff0c 包括SSH密钥生成 密钥传输及公钥保存等 Windows下密钥的产生 在Windows下使用 ssh keygen生成公钥和
  • raspistill command not found

    raspistill command not found xff1a 提示 xff1a 这里简述项目相关背景 xff1a 今天使用树莓派来调用摄像头 xff0c 摄像头为树莓派官方摄像头 xff0c 在升级系统和配置后发现使用raspist
  • 树莓派I2C基本用法

    文章目录 一 I2C二 I2C配置1 I2C02 I2C13 I2C34 I2C45 I2C56 I2C6 三 I2C工具总结 一 I2C 树莓派默认打开I2C功能 xff0c 如果I2C没有打开 xff0c 可以使用命令sudo rasp
  • 树莓派RTC

    文章目录 一 RTC准备二 RTC芯片三 为什么使用hwclock显示找不到硬件总结 一 RTC准备 在使能树莓派RTC之前 xff0c 需要先为树莓派RTC模块安装电池 xff08 一般为纽扣电池 xff09 二 RTC芯片 树莓派4B使
  • cpptools占用率过高

    问题描述 使用vscode发现在系统中cpptools CPU占用率达到百分百 电脑发生严重卡顿 解决方案 xff1a 此问题的出现是因为使用了C C 43 43 这个插件 xff0c 如果直接禁用此插件就可以解决这个问题 如果希望使用这个
  • c语言状态机系统

    读取文件并实现了把里面的数字读取出来并加以求平均数 include lt stdio h gt include lt string h gt using namespace std int a1 1000009 int r 61 0 int
  • 快速创建kvm虚拟机(shell)

    通过脚本的方式 xff0c 快速复制kvm虚拟机 更改脚本变量 使用脚本 结果展示 脚本如下 xff0c 已测试通过 usr bin env bash coding utf 8
  • windows安装虚拟机 Linux-ubuntu20.04.6 LTS x86_64(Py3.7.9)详细教程

    安装虚拟机 首先需要下载vmware 注意版本 xff0c 这里我下载的版本是 vmware最新版 xff08 17 0 0 build 20800274 xff09 17 0 0 build 20800274版本的密钥 xff1a MC6
  • 基于51单片机实现时间显示及闹钟设置

    文章目录 一 介绍二 原理三 步骤四 结果五 结果分析六 总结 一 介绍 本次为大学中的一次创新实验 xff0c 当时老师叫我自己拿个单片机去玩 xff0c 为了赶时间就做了个简单的时间显示和闹钟设置 xff0c 因为比较简单所以也把代码附
  • vim 文本替换

    常规替换 n1 span class token punctuation span n2s hello world g span class token operator span 用world替换文件n1行到n2行所有的hello n1
  • 51单片机定时器工作方式1、2原理详解

    写在前面 1 本篇博文旨在帮助那些像我一样刚入门51单片机 xff0c 如果你对定时器有一定了解 xff0c 但是其中的的工作方式不能理解 xff0c 那么这篇文章很适合你 xff0c 如果你是大神的话 直接绕行吧 2 我在学习的过程中由于
  • 虚拟机Ubuntu连接不了网络的解决方法

    昨晚上虚拟机ubuntu中网络还是正常使用的今天准备安装一个nfs服务发现无法使用apt工具了 xff0c 然后才发现虚拟机没网了 xff0c 然后在百度试了两种方法没有效果 方法1 xff1a 尝试输入以下命令来解决 xff1a span
  • 安装Anaconda并配置环境变量

    安装Anaconda并配置环境变量 下载安装配置变量 下载安装 anaconda官网 xff1a https www anaconda com 选择需要的版本进行下载 https www anaconda com products dist
  • OrCAD 导出 BOM 表

    BOM 表简介 BOM表是什么呢 xff1f 它的全称 xff08 Bill Of Material xff09 即物料清单的意思 顾名思义 xff0c 一个产品的BOM说明了这个产品总共需要多少零配件来组装 所有的PCBA制造商都需要根据
  • Allergo 导出光绘(Gerber)文件及坐标文件

    文章目录 导出 Gerber光绘介绍设置输出文件夹和路径生成钻孔信息导出光绘 ArcworkGerber 生成报错 database has error 导出坐标文件坐标文件介绍生成坐标文件 参考资料 导出 Gerber 光绘介绍 Gerb
  • cpp-http 库的使用

    文章目录 前言 96 cpp http 96 库简介 96 cpp http 96 库使用介绍http 客户端搭建步骤http 服务端搭建步骤 96 cpp http 96 库示例服务端实现客户端实现 示例下载关于示例代码编译出错的问题 参
  • esp32 开发环境搭建

    文章目录 前言提示构建工具安装 IDF设置 idf 目标平台 设定环境变量同时安装多个版本安装 idf 和 tools修改环境变量 参考资料ESP IDF 快速入门编译 ESP AT 工程idf py build 出现cmake faile