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

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

http://www.lqws.cn/news/78139.html

相关文章:

  • C++中实现随机数(超详细!​​​​​)
  • web架构2------(nginx多站点配置,include配置文件,日志,basic认证,ssl认证)
  • Spring MVC
  • MATLAB 安装与使用详细教程
  • 网络地址转换
  • 【笔记】为 Python 项目安装图像处理与科学计算依赖(MINGW64 环境)
  • Android第十二次面试GetX库渲染机制
  • 数据结构之堆:解析与应用
  • PostgreSQL pgrowlocks 扩展
  • 吴恩达MCP课程(5):mcp_chatbot_prompt_resource.py
  • webpack和vite的区别
  • SQL 逻辑处理顺序详解
  • 2025年危化品安全员考试题库及答案
  • 软件测评师教程 第2章 软件测试基础 笔记
  • DeepSeek模型多模态扩展与跨模态理解实战
  • 强人工智能 vs 弱人工智能:本质区别与未来展望
  • JavaSE 字符串:深入解析 String、StringBuilder与 StringBuffer
  • springboot04
  • NVMe IP现状扫盲
  • [网页五子棋][匹配对战]落子实现思路、发送落子请求、处理落子响应
  • Java设计模式之备忘录模式详解
  • 告别printf!嵌入式系统高效日志记录方案
  • 用“红烧鱼”类比说明卷积神经网络CNN的概念
  • 第18讲、Odoo接口开发详解:原理、类型与实践
  • 2024年数维杯国际大学生数学建模挑战赛C题时间信号脉冲定时噪声抑制与大气时延抑制模型解题全过程论文及程序
  • P12592题解
  • android binder(四)binder驱动详解
  • 电路图识图基础知识-高、低压供配电系统电气系统的继电自动装置(十三)
  • 一种基于性能建模的HADOOP配置调优策略
  • EXCEL--累加,获取大于某个值的第一个数