【知识分享】ubuntu22.04-ESP32环境搭建

文章目录

    • 一、概要
    • 二、环境及工具介绍
    • 三、名词解释
    • 四、环境搭建

一、概要

    手上有一块安信可的WIFI开发板,用的是乐鑫的ESP32模组。刚好最新装了双系统,貌似在Linux环境使用gcc编译器会快一些。
    万事开头难,要在Linux环境下进行开发工作,那就意味着需要在Linux环境中搭建ESP32适当的开发环境。本文主要是在官方搭建文档的基础上进行一些查缺补漏,适合新手阅读。

二、环境及工具介绍

    开发环境:操作系统ubuntu 22.04.1,内核5.19.0-42-generic
在这里插入图片描述
    开发板:NODEMCU-32 V1.3
在这里插入图片描述
    串口工具:USB转TTL
串口工具

三、名词解释

  • esp-idf:是为开发者提供了一整套的工具、库和API,方便快速构建和开发各种物联网设备和应用。可以理解为是跟Keil一样的工具,只是没有像Keil一样把界面做的那么好。
  • 环境:也称开发环境,指的是开发人员用来编写、测试和调试代码的综合工具和设置。而环境搭建指的是准备和配置一个特定的软件开发环境,以便开发人员可以在其中编写、测试和调试代码。

四、环境搭建

    这里选择官方推荐的方式,esp-idf的工具链。

    不同的ubuntu版本可能会有不同的问题出现,建议在进行工具安装前,先使用下面两个指令更新系统软件。在ubuntu系统下,按Ctrl + Alt + T,打开终端,输入以下指令更新软件。

sudo apt update
sudo apt upgrade

    首先需要安装esp-idf所需要的软件及工具,根据官方提示,输入以下指令进行安装。可以看出,这里面安装了git、python3、cmake等需要用到的工具,如果是ubuntu 22.04,其实像python3这类工具是系统自带的,不过这里再选择安装也不影响,系统会自动检查。

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

    接下来就是安装工具主体——esp-idf,打开终端,输入下面指令安装。细心的小伙伴应该会发现,这里用git获取工具有个地方跟官方文档不大一样,就是少了个–recursive参数。加上这个参数,下载esp-idf工具时,会自动下载路径下的子模块,但因为github这个网站直接下载文档速度有点慢,所以这里选择先下载主体,再单独更新子模块。如果连主体下载都太慢的小伙伴,可以百度搜下github.com的镜像网站,替换掉下面github.com即可。(子模块的更新不一定是根据这个命令里的网址来的,下面细说)

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

    下载完主体,就可以更新里面用到的子模块,更新之前最好切换一下源,切换方式是在esp-idf路径下,找到.gitmodules的文件(该文件为隐藏文件,需要选择查看隐藏文件才能找到)。
esp-idf
    打开该文件,把其中所有的…/…/替换成镜像源,保存文件。

在这里插入图片描述
    然后在当前路径下,输入指令更新子模块的源

git submodule sync

    再输入下面的指令更新子模块

git submodule update --init --recursive --progress

    如果这个更新完后,还发现有没更新的模块,则输入以下指令进行更新

git submodule --remote

    如果用这个指令一直更新失败,那就只能手动去下载子模块了,根据刚才打开的那个.gitmodules文件,找到对应的路径,如果对应路径下没有文件,则需要手动下载,下载路径就是文件中的"url ="后面的这个网址。

    以上工具安装完后,就可以安装对应芯片所需要的工具了,键入以下指令进行安装,如果前面工具安装都正常,这里就可以正常安装。其中./install.sh后面带的是对应开发板的芯片,esp32/esp32-s就选esp32,如果需要安装其他芯片系列,则加上对应的芯片即可,比如还需要esp32-s2,就修改指令为./install.sh esp32,esp32s2

cd ~/esp/esp-idf
./install.sh esp32

    安装完工具后,在开始编译工程之前,需要设置环境变量,idf工具里提供了.export.sh的快捷设置方式,但因为每次打开终端都需要设置一次,且每次都需要进入对应路径进行调用,所以官方也很亲切地提供了一种比较快捷的方式,即设置一个快捷变量供使用,将以下指令添加至xxx 文件中,后续打开终端只需要输入get_idf即可设置环境变量。

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

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

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

相关文章

[数据集][目标检测]瞳孔虹膜检测数据集VOC+YOLO格式8768张2类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):8768 标注数量(xml文件个数):8768 标注数量(txt文件个数):8768 标注…

基于UE5和ROS2的激光雷达+深度RGBD相机小车的仿真指南(二)---ROS2与UE5进行图像数据传输

前言 本系列教程旨在使用UE5配置一个具备激光雷达深度摄像机的仿真小车,并使用通过跨平台的方式进行ROS2和UE5仿真的通讯,达到小车自主导航的目的。本教程默认有ROS2导航及其gazebo仿真相关方面基础,Nav2相关的学习教程可以参考本人的其他博…

thinkphp8 定时任务 addOption

在ThinkPHP8中&#xff0c;我们可以使用addOption方法来添加命令行选项。这个方法允许我们为命令行应用程序定义可接受的选项和参数。 以下是一个简单的例子&#xff0c;演示如何在ThinkPHP8中为命令行应用程序添加一个选项&#xff1a; <?php namespace app\command;use…

【git 第一篇章】版本控制之GIT

Git是一种分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。以下是Git的详细介绍&#xff1a; 一、Git的基本概念 分布式&#xff1a;Git的最大特点之一是它的分布式设计。这意味着每个开发者都拥有完整的代码仓库&#xff0c;包含项目的全部历史记录。…

【MySQL进阶之路】表的约束——主键,自增长,唯一键,外键

目录 主键 复合主键 自增长 唯一键 unique 外键 方案一 方案二 方案三 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 主键 主键&#xff1a;primary key用来唯一的约束该字段里面的数据&#xff0c;不能重复&#xff0c;不能为空&#xff08;必须有非空约束&#xf…

js高阶 -- 总结 03(小白)

严格模式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> &…

微知-lspci如何查看pcie设备树状结构(-t)

对于查看pcie设备列表除了看是否存在 还需要看拓扑结构。如何看&#xff1f; lspci -t以减号为分割说明 第一列数字是域段 和 bus id。比如0000:00中0000是域 00是busid 第二列 01.2中01是device id。2是functionid 如果还有下游设备device还有一个指定busid的序号

传统的进程间通信——管道通信

传统的进程间通信——管道通信 管道是UNIX系统中最古老的进程间通信方式&#xff0c;是一种特殊文件读写机制 当进程从管道文件中读取数据时&#xff0c;如果管道中没有数据则进程会进入阻塞状态&#xff0c;直到有数据读取出来才返回&#xff0c;因此不需要借助信号、文件锁来…

Postman文件上传接口测试

接口介绍 返回示例 测试步骤 1.添加一个新请求&#xff0c;修改请求名&#xff0c;填写URL&#xff0c;选择请求方式 2.将剩下的media参数放在请求body里&#xff0c;选择form-data&#xff0c;选择key右边的类型为file类型&#xff0c;就会出现选择文件的按钮Select Files&a…

QT翻金币小游戏(含音频图片文件资源)

目录 QT翻金币小游戏 音频图片资源文件获取 效果展示 图片 视频 实现代码 main.cpp mymainwindow.h mymainwindow.cpp startscene.h startscene.cpp selectscene.cpp playscene.h playscene.cpp mypushbutton.h mypushbutton.cpp dataconfig.h dataconfig.cpp QT…

大模型时代,云南白药如何成为一家AI医药企业?|产业AI案例

作者|斗斗 编辑|皮爷 出品|产业家 中医药大模型发布&#xff1b;英伟达成立AI制药部门&#xff0c;发力生物制药领域&#xff1b;赛诺菲与百图生科达成战略合作&#xff0c;共同开发用于生物治疗药物发现的领先模型&#xff1b;京东发布医疗大模型&#xff1b;百度“产业级”…

读软件开发安全之道:概念、设计与实施04缓解

1. 缓解 1.1. 安全思维转换为有效行动的方法就是首先预判威胁&#xff0c;然后针对可能的漏洞加以保护 1.2. 主动响应的做法就叫做“缓解” 1.2.1. mitigation 1.2.2. 喂宝宝的时候给孩子围上围嘴&#xff0c;避免掉下来的食物粘在宝宝的衣服上&#xff0c;还有安全带、限速…

ansync/await 运行流程图

1、流程图&#xff1a; 2、await 之后的方法是何时执行&#xff0c;如何执行的&#xff1f; await 的方法在 Task 执行完成之后&#xff0c;通过调用 Finish 方法执行的。 具体的执行步骤是先将 MoveNext 方法注册到 Task 的回调里&#xff0c;然后在 Task 执行完后调用这个方法…

ID3算法详解:构建决策树的利器

目录 引言 ID3算法概述 算法基础 信息熵 ​编辑 信息增益 ID3算法步骤 决策树 概念: 核心&#xff1a; 节点 1. 根节点 2. 非叶子节点 3. 叶子节点 引言 在机器学习领域&#xff0c;决策树是一种非常流行的分类和回归方法。其中&#xff0c;ID3算法作为决策树算法…

jenkins最佳实践(二):Pipeline流水线部署springCloud微服务项目

各位小伙伴们大家好呀&#xff0c;我是小金&#xff0c;本篇文章我们将介绍如何使用Pipeline流水线部署我们自己的微服务项目&#xff0c;之前没怎么搞过部署相关的&#xff0c;以至于构建流水线的过程中中也遇到了很多自己以前没有考虑过的问题&#xff0c;特写此篇&#xff0…

使用 Python 进行 PDF 文件加密

使用 Python 解密加密的 PDF 文件-CSDN博客定义一个名为的函数&#xff0c;该函数接受三个参数&#xff1a;输入的加密 PDF 文件路径input_pdf、输出的解密 PDF 文件路径output_pdf和密码password。https://blog.csdn.net/qq_45519030/article/details/141256661 在数字化时代…

Linux驱动开发基础(设备树)

所学来自百问网 目录 1. 引入设备树的原因 2. 设备树语法 2.1 Devicetree格式 2.1.1 DTS文件格式 2.1.2 node的格式 2.1.3 properties的格式 2.1.4 dts 文件包含dtsi文件 2.2 常用属性 2.2.1 #address-cells、#size-cells 2.2.2 compatible 2.2.3 model 2.2.4 st…

Total Commander 右键卡死问题,百度云冲突

一段时间TC总是右键卡死&#xff0c;后来发现是跟百度云冲突了&#xff0c;只要把右键菜单里的百度云删除即可 不仅仅是跟TC冲突&#xff0c;资源管理器也受累的 可以通过360安全卫士的右键菜单管理搞定&#xff0c;也可以注册表删除&#xff0c;可以先备份注册表 运行里 re…

一步解决Ubuntu中/mnt/hgfs无共享文件夹的问题

当我们启用了共享文件夹后&#xff0c;但是在终端/mnt/hgfs任然没有文件 在终端输入 sudo vmhgfs-fuse .host:/ /mnt/hgfs/ -o allow_other 之后&#xff0c;就可以查到共享文件了

复现 LET-NET

摘要 稀疏光流法是计算机视觉中的一项基本任务。然而&#xff0c;它依赖于恒定的假设限制了其在高动态范围&#xff08;HDR&#xff09;场景中的适用性。在本研究中&#xff0c;我们提出了一种新的方法&#xff0c;旨在通过学习一个对光照变化具有鲁棒性的特征映射来超越图像的…