ESP32之Linux编译环境搭建流程
背景:为了解决 “windows环境中编译ESP32代码速度慢” 的问题,现搭建一个Linux环境,让windows下的VScode连接到Linux环境,VSCode负责编辑代码,虚拟机用于编译代码。
目录
一、安装VMware
1.1 获取VMware安装包
1.2 安装安装包
二、安装Ubuntu
2.1 获取Ubuntu安装包
2.2 安装Ubuntu
2.2.1 配置阶段
2.2.2 安装阶段
2.2.3 查看阶段
2.2.4 通过MobaXterm登录Ubuntu
三、安装必要工具
3.1 安装各种必要的工具
3.2 拉取esp-idf工具
3.3 执行gitee工具切换镜像脚本
3.4 拉取esp-idf源码
3.5 切换esp-idf版本分支
3.6 安装编译工具
3.7 设置环境变量
3.8 拷贝源码
3.9 编译、下载与监视
3.9.1 编译
3.9.2 下载
3.9.3 监视
四、配置VSCode
4.1 安装插件
4.2 配置Remote-SSH
4.3 在远程SSH中安装插件
4.3.1 安装C/C++插件
4.3.2 安装ESP-IDF插件
4.3.3 配置esp-idf库文件查看路径
4.3.4 设置签名(解决每次都要输密码的问题)
五、参考资料
一、安装VMware
1.1 获取VMware安装包
方式1:百度网盘获取
方式2:官网下载
1.2 安装安装包
安装过程一直点击下一步就可以了,详细过程省略。
二、安装Ubuntu
2.1 获取Ubuntu安装包
点击获取ubuntu-20.04.6-live-server-amd64.iso安装包
2.2 安装Ubuntu
2.2.1 配置阶段
打开VMware-->创建新的虚拟机-->自定义-->下一步
下一步-->浏览-->选择对应Ubuntu镜像文件版本打开-->下一步
设置用户名和密码-->下一步
设置名称,选择安装位置-->下一步
设置处理器和内核数量-->下一步
下一步-->下一步-->下一步-->下一步-->下一步-->设置磁盘大小-->下一步
下一步-->完成。
2.2.2 安装阶段
选择英语:
选择不更新:
一直Done-->继续
输入之前设置的用户名和密码
勾选安装SSH服务器
安装中,需要漫长的等待。注意:如果遇到询问是否需要升级,要选择取消升级
等待安装结束后,输入用户名和密码
2.2.3 查看阶段
输入指令安装网络工具(用于查看IP地址):
sudo apt-get install net-tools
等待安装完成后,输入以下指令,查看IP地址:
ifconfig
可以看到IP地址是:192.168.37.128
2.2.4 通过MobaXterm登录Ubuntu
通过百度网盘下载MobaXterm(免安装),并打开,点击Session,选择SSH,输入IP地址和用户名,点击OK
输入密码,点击Yes
至此就登录了Ubuntu系统了
三、安装必要工具
3.1 安装各种必要的工具
sudo apt-get install git wget flex bison gperf python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0 net-tools
3.2 拉取esp-idf工具
新建esp32目录
mkdir esp32
cd esp32拉取esp-idf工具
git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
先新建一个esp32的目录,再拉取esp-idf工具
3.3 执行gitee工具切换镜像脚本
进入esp-gitee-tools目录
cd esp-gitee-tools执行脚本
./jihu-mirror.sh set回到上层目录
cd ..
执行这句命令后,会将github的地址自动替换成jihu上的镜像地址,这样就不用担心git的访问问题了。
3.4 拉取esp-idf源码
git clone --recursive https://github.com/espressif/esp-idf.git或者(指定版本)
git clone -b v5.3.2 --recursive https://github.com/espressif/esp-idf.git
3.5 切换esp-idf版本分支
切换esp-idf版本分支到v5.2:
cd esp-idf
git checkout v5.2
如果提示失败或有错误试下这句:../esp-gitee-tools/submodule-update.sh
更新子模块:
git submodule update --init --recursive
至此,esp-idf基本已经安装完了。
3.6 安装编译工具
由于可能需要用到不同型号的esp32,其安装工具可能都不一样,这个命令能把各个型号的安装工具都下载下来。在esp-idf路径中执行以下命令:
../esp-gitee-tools/install.sh
注意:如果卡住不动了,就关闭重新输入指令下载,直至全部下载完成
3.7 设置环境变量
方法1(临时配置,每次重新进入都要配置):
在esp-idf路径中执行下述命令,会自动把esp-idf的环境变量设置到当前环境变量路径中:
source export.sh
方法2(自动配置环境变量):
由于上述是一次性设置,重启后需要重新设置环境变量,如需每次打开时让其自动设置环境变量,需要在默认路径中将配置环境变量的命令添加进.profile文件中:
//进入默认路径
cd ~//用vim打开profile文件
vim .profile//在.profile文件最后一行插入以下命令,即可执行脚本,自动设置环境变量
source esp32/esp-idf/export.sh
回到当前界面后,输入exit退出,然后输入r即可重新进入:
3.8 拷贝源码
先新建一个工作目录workspace,然后拷贝demo程序(如hello_world)到此目录
3.9 编译、下载与监视
3.9.1 编译
cd helloworld
idf.py build
3.9.2 下载
idf.py flash
idf.py -p COMx falsh
提示没有USB权限,需要设置USB串口权限:
方法1(临时解决):
sudo chmod 777 /dev/ttyUSB0
方法2(永久解决,注意:sss需要换成你的用户名):
sudo usermod -aG dialout sss
如果还是提示错误,则在虚拟机左侧我的计算机-->Ubuntu sss-->鼠标右击-->选择设置-->USB控制器-->USB兼容性选择USB3.1即可。
重新烧录:
3.9.3 监视
idf.py monitor
四、配置VSCode
4.1 安装插件
安装Remote-SSH插件
4.2 配置Remote-SSH
打开Remote-SSH,点击设置,选择第一个:
设置IP地址和用户名,并保存后刷新:
右击选择“在当前窗口中连接”:
Linux --> 继续 --> 输入密码 --> :
打开工作目录的文件夹:
4.3 在远程SSH中安装插件
4.3.1 安装C/C++插件
4.3.2 安装ESP-IDF插件
4.3.3 配置esp-idf库文件查看路径
按Ctrl+Shift+P,选择ESP-IDF:Add VSCode Configuration Folder,这样就能查看源文件了
4.3.4 设置签名(解决每次都要输密码的问题)
(1)生成证书文件
先在windows中打开PowerShell,输入以下命令:
ssh-keygen -t ed25519 -C sss@gitee.com
然后一路回车到底:
根据路径打开文件id_ed25519.pub,复制其中的内容:
(2)编辑路径~/.ssh/authorized_keys文件
通过vim打开authorized_keys文件:
将前面复制的id_ed25519.pub文件中的内容粘贴到authorized_keys文件中,保存退出:
这样配置完后,就不需要每次打开VSCode都要输密码了。
五、参考资料
【【2024最新版 ESP32教程(基于ESP-IDF)】ESP32入门级开发课程 更新中 中文字幕】https://www.bilibili.com/video/BV1eRg7exEcT?p=2&vd_source=81a7e4213950c9b4e7925e57b921574a
相关文章:

ESP32之Linux编译环境搭建流程
背景:为了解决 “windows环境中编译ESP32代码速度慢” 的问题,现搭建一个Linux环境,让windows下的VScode连接到Linux环境,VSCode负责编辑代码,虚拟机用于编译代码。 目录 一、安装VMware 1.1 获取VMware安装包 1.2…...
Linux 软件安装方式全解(适用于 CentOS/RHEL 系统)
🐧 Linux 软件安装方式全解(适用于 CentOS/RHEL 系统) 在 Linux 系统中,软件安装方式丰富多样,常见于以下几种方式: 安装方式命令/工具说明软件包管理器(推荐)yum, dnf, apt, zypp…...
QT- QML Layout+anchors 布局+锚点实现窗口部件权重比例分配
布局管理 简单比较两种界面管理锚点布局实现比例布局布局管理实现比例布局循环依赖问题简谈 在日常打螺丝中,我们偶尔会需要实现界面各组件能按比例放置,自适应各种分辨率的需求。我用锚点和布局都实现过相关界面,记录下来两种方式实现的差异…...

UE5打包项目设置Project Settings(打包widows exe安装包)
UE5打包项目Project Settings Edit-Project Settings- Packaging-Ini Section Denylist-Advanced 1:打包 2:高级设置 3:勾选创建压缩包 4:添加要打包地图Map的数量 5:选择要打包的地图Maps 6:Project-Bui…...
Python中os模块详解
Python os 模块详解 os 模块提供了丰富的文件和目录操作、环境变量访问、进程管理等功能,是与操作系统交互的核心模块之一。 基本导入方式 import os常用目录与文件操作 1️⃣ 获取/设置当前工作目录 os.getcwd() # 获取当前工作目录 os.chdir(/tmp) …...

便捷高效能源服务触手可及,能耗监测系统赋能智能建筑与智慧城市
在建筑行业迈向智能化、精细化管理的进程中,传统建筑管理模式因信息割裂、数据利用不足等问题,逐渐难以满足现代建筑复杂的运营需求。楼宇自控系统实现了建筑设备的智能调控,BIM技术则构建了建筑的三维数字化模型,当两者相遇&…...
Kotlin List 操作全面指南
在传统 Java 开发 List 相关的 API 中,有着样板代码冗长、缺乏链式调用、空安全等问题。 Kotlin 这门语言 为 List 提供了丰富的扩展函数,这些函数大大简化了集合操作,解决了传统 Java 集合 API 中的许多痛点。 一、基础操作 1. 创建 List …...
C++--范围for循环详解
范围 for 循环是 C11 引入的语法特性,用于简化遍历容器或数组元素的过程。它比传统 for 循环更简洁安全,特别适合初学者。以下是详细讲解: 基本语法 for (元素类型 变量名 : 容器/数组) {// 循环体(使用变量名访问当前元素&#…...

ISO18436-2 CATII级振动分析师能力矩阵
ISO18436-2021是当前针对针对分析师的一个标准,它对振动分析师的能力和知识体系做了4级分类,这里给出的是一家公司响应ISO18436的CATII级标准,做的一个专题培训的教学大纲。摘自: 【振動噪音產學技術聯盟】04/19-23 ISO 18436-2…...
deepseek问答:torch.full() 函数详解
torch.full() 是 PyTorch 中用于创建指定形状、所有元素值都相同的新张量的核心函数。它在深度学习中有广泛应用,尤其是在初始化张量和创建特殊数据结构时。 函数签名 torch.full(size, fill_value, *, dtypeNone, layouttorch.strided, deviceNone, requires_gra…...

dvwa4——File Inclusion
LOW: 先随便点开一个文件,可以观察到url栏变成这样,说明?page是dvwa当前关卡用来加载文件的参数 http://10.24.8.35/DVWA/vulnerabilities/fi/?pagefile1.php 我们查看源码 ,没有什么过滤,直接尝试访问其他文件 在url栏的pag…...
MYSQL 高级 SQL 技巧
高级 SQL 技巧 以下是一些高级 SQL 技巧,可以帮助优化查询、提高性能并解决复杂的数据处理问题。 使用窗口函数 窗口函数允许在查询结果的行上进行计算,而不会减少行数。常见的窗口函数包括 ROW_NUMBER()、RANK()、DENSE_RANK() 和聚合函数如 SUM() 与…...

Spring Boot养老院管理系统源码分享
概述 基于Spring Boot开发的养老院管理系统,该系统通过智能化管理模块,为养老机构提供高效运营解决方案。 主要内容 后台管理功能 系统后台功能完善,左侧导航栏涵盖首页、安全巡查管理、设备管理等模块。设备管理界面以表格形式清晰展示设…...

go|context源码解析
文章目录 Context接口Deadline()Done()Err()Value() canceler接口ctxemptyCtxcancelCtxtimerCtxvalueCtx 基本使用cancelCtxvalueCtx 首先看一下源码对“context”的描述, When a Context is canceled, all Contexts derived from it are also canceled. 当一个Cont…...

如何在PowerBI中使用Analyze in Excel
如何在PowerBI中使用Analyze in Excel 之前分享过如何使用DAXStudio将PowerBI与Excel连接 ,今天介绍另外一个工具,也可以实现同样的功能,Analyze in Excel。 使用Analyze in Excel 第一步: 首先准备好一个PBIX文件,…...
【学习记录】Element UI导入报错 * element-ui/lib/theme-chalk/index.css in ./src/main.js
文章目录 📌 摘要⚠️ 问题描述🔍 原因分析✅ 正常情况下的依赖结构❗ 问题根源 ✅ 解决方案✅ 方法一:使用 cnpm 安装 Element UI(推荐)步骤 1:全局安装 cnpm(使用淘宝镜像)步骤 2&…...

大模型分布式训练笔记(基于accelerate+deepspeed分布式训练解决方案)
文章目录 一、分布式训练基础与环境配置(1)分布式训练简介(2)如何进行分布式训练(3)分布式训练环境配置 二、数据并行-原理与实战(pytorch框架的nn.DataParallel)1)data …...

鸿蒙UI开发——组件的自适应拉伸
1、概 述 针对常见的开发场景,ArkUI开发框架提供了非常多的自适应布局能力,这些布局可以独立使用,也可多种布局叠加使用。本文针对ArkUI提供的拉伸能力做简单讨论。 拉伸能力是指容器组件尺寸发生变化时,增加或减小的空间全部分…...

鸿蒙仓颉语言开发教程:自定义弹窗
假期第一天,祝大家端午节快乐。昨天观看了时代旗舰尊界S800的发布,不得不感慨这车真好啊~ 放假闲来无事,继续跟大家分享仓颉语言的开发教程,今天介绍一下自定义弹窗。 仓颉语言中的自定义弹窗和ArkTs类似,…...
meilisearch docker 简单安装
ElasticSearch平替 docker run -it -d -p 7700:7700 -v /home/dev/melisearch/meili_data:/meili_data -e MEILI_MASTER_KEYRhTX1pLPSKSn7KW9yf9u_MNKC0v1YKkmx2Sc6qSwbLQ getmeili/meilisearch:v1.13 MEILI_MASTER_KEYRhTX1pLPSKSn7KW9yf9u_MNKC0v1YKkmx2Sc6qSwbLQ …...

Python 数据分析与可视化实战:从数据清洗到图表呈现
目录 一、数据采集与初步探索 二、数据清洗的七种武器 1. 缺失值处理策略 2. 异常值检测与修正 3. 数据类型转换技巧 三、数据转换的魔法工坊 1. 透视表与交叉表 2. 窗口函数实战 3. 文本数据处理 四、可视化呈现的艺术 1. 基础图表进阶用法 2. 高级可视化方案 3.…...

机器学习数据降维方法
1.数据类型 2.如何选择降维方法进行数据降维 3.线性降维:主成分分析(PCA)、线性判别分析(LDA) 4.非线性降维 5.基于特征选择的降维 6.基于神经网络的降维 数据降维是将高维数据转换为低维表示的过程,旨在保…...

uefi和legacy有什么区别_从几方面分析uefi和legacy的区别
uefi和legacy是两种不同的引导方式,uefi是新式的BIOS,legacy是传统BIOS。你在UEFI模式下安装的系统,只能用UEFI模式引导;同理,如果你是在Legacy模式下安装的系统,也只能在legacy模式下进系统。uefi只支持64为系统且磁盘…...

Spring @Autowired自动装配的实现机制
Spring Autowired自动装配的实现机制 Autowired 注解实现原理详解一、Autowired 注解定义二、Qualifier 注解辅助指定 Bean 名称三、BeanFactory:按类型获取 Bean四、注入逻辑实现五、小结 源码见:mini-spring Autowired 注解实现原理详解 Autowired 的…...
Neo4j 数据可视化与洞察获取:原理、技术与实践指南
在关系密集型数据的分析领域,Neo4j 凭借其强大的图数据模型脱颖而出。然而,将复杂的连接关系转化为直观见解,需要专业的数据可视化技术和分析方法。本文将深入探讨 Neo4j 数据可视化的核心原理、关键技术、实用技巧以及结合图数据科学库&…...

一种基于性能建模的HADOOP配置调优策略
1.摘要 作为分布式系统基础架构的Hadoop为应用程序提供了一组稳定可靠的接口。该文作者提出了一种基于集成学习建模的Hadoop配置参数调优的方法。实验结果表明,该性能模型可以准确预测MapReduce应用程序的运行时间。采用提出的Hadoop配置参数方法调优后,…...

【Stable Diffusion 1.5 】在 Unet 中每个 Cross Attention 块中的张量变化过程
系列文章目录 文章目录 系列文章目录前言特征图和注意力图的尺寸差异原因在Break-a-Scene中的具体实现总结 前言 特征图 (Latent) 尺寸和注意力图(attention map)尺寸在扩散模型中有差异,是由于模型架构和注意力机制的特性决定的。 特征图和注意力图的尺寸差异原…...

MySQL - Windows 中 MySQL 禁用开机自启,并在需要时手动启动
Windows 中 MySQL 禁用开机自启,并在需要时手动启动 打开服务管理器:在底部搜索栏输入【services.msc】 -> 点击【服务】 打开 MySQL 服务的属性管理:找到并右击 MySQL 服务 -> 点击【属性】 此时的 MySQL 服务:正在运行&a…...
前端下载文件,文件打不开的问题记录
需求: 下载是很常见的接口,但是经常存在下载的文件异常的问题。此处记录一个常见的错误。 分析: 1、接口请求需要配置{responseType: ‘blob’},此时要求返回的格式为blob,进而进行下载。 const res await axios.…...
小白的进阶之路系列之十一----人工智能从初步到精通pytorch综合运用的讲解第四部分
本文将介绍如何用PyTorch构建模型 torch.nn.Module和torch.nn.Parameter 除了Parameter之外,本视频中讨论的所有类都是torch.nn.Module的子类。这是PyTorch基类,用于封装PyTorch模型及其组件的特定行为。 torch.nn.Module的一个重要行为是注册参数。如果特定的Module子类具…...