Ubuntu 下搭建ESP32 ESP-IDF开发环境,并在windows下用VSCode通过SSH登录Ubuntu开发ESP32应用
Ubuntu 下搭建ESP32 ESP-IDF开发环境,网上操作指南很多,本来一直也没有想过要写这么一篇文章。因为我其实不太习惯在linux下开发应用,平时更习惯windows的软件操作,只是因为windows下开发ESP32的应用编译时太慢,让人受不了,所以最后还是选择搭建了一个Ubuntu系统下的ESP32 ESP-IDF的开发环境,并在window系统下通过SSH连接Ubuntu,这样就即可以在window下用esp-idf开发esp32的应用,又不用忍受window下编译的漫长等待。
一、安装依赖项
这里我们假设Ubuntu系统已经安装完毕。我使用的是ubuntu 24.04.2 LTS版本(非虚拟机,如果使用虚拟机安装,可能后面有一些步骤会略有不同)。
sudo apt updatesudo apt-get install vim
sudo apt install git
sudo apt-get install python3sudo apt install -y git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
在ubuntu终端命令行分别输入以上命令并运行。这里一般不会出问题,不多说。
二、获取ESP-IDF框架
首先建立工作目录。
mkdir ~/esp
cd ~/esp
这里需要特别强调的一点是:用git命令来clone下来,这就可以可以同步最新的框架版本!不能直接一个downLoad 下载,发现会有错误,切记!
git clone -b v5.4 --recursive https://github.com/espressif/esp-idf.git
另外,官方提供了不少的子模块,我们也一起克隆下来。这里需要用到重定向脚本,我们先下载该脚本。
git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
然后,我们利用该脚本获取子模块。
cd esp-idf
../esp-gitee-tools/submodule-update.sh
三、安装并设置工具链
除了 ESP-IDF SDK外,您还需要安装 并设置ESP-IDF 使用的各种工具,比如编译器、调试器、Python 包等!
cd ~/esp/esp-idf
./install.sh
这里需要注意的是,因为网络或其它原因,安装过程中可能会中断并报错,需要反复操作,直到最后出现下面的提示:
All done! You can now run :
. ./export.sh
看到这两行字符,那么恭喜你,ubuntu下的esp32开发环境基本搭建成功。
四、配置环境变量
每次打开新终端时,在esp-idf目录下运行:
source export.sh
或者:
. ./export.sh
注意两个"."之间需要加一个空格。
成功后显示如下:
如果觉得每次找开新终端都要运行比较麻烦,也可以把该脚本添加到~/.bashrc
echo "source \$HOME/esp/esp-idf/export.sh" >> ~/.bashrc
source ~/.bashrc
五、验证安装
我们用官方提供的样例hello_world来验证上述安装、设置是否成功。
该样例目录:esp32/esp-idf/examples/get-started/hello_world
进入该目录后运行下列命令:
idf.py set-target esp32idf.py build
idf.py -p /dev/ttyUSB0 flash monitor
注意:实际设备端口号可能不是ttyUSB0
,使用ls /dev/ttyUSB*
查看可用端口。建议使用官方支持的Ubuntu LTS版本
六、设备权限设置
创建udev规则文件(这一节并非必要):
sudo nano /etc/udev/rules.d/99-esp32.rules
添加以下内容:
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", MODE="0666"
SUBSYSTEM=="tty", ATTRS{idVendor}=="1a86", MODE="0666"
重新加载规则:
sudo udevadm control --reload-rules
七、window通过SSH连接Ubuntu
Ubuntu 系统SSH服务开启:
开启 Ubuntu 的 SSH 服务以后我们就可以在 Windwos 下通过SSH登陆到 Ubuntu了。
sudo apt-get install openssh-server
同样windows系统也要安装相应的工具软件或服务。我安装的是openssh,配置好环境后,在命令行窗口就可以通过SSH 登录Ubuntu。
注意两台电脑要在同一个网段。
另外,当ubuntu重装后,那怕IP相同,再远程访问可能会有问题,可能出现如下提示:
解决办法如下:
在windows命令行输入:sshkkeygen -R 192.168.3.165
八、Windows下VSCode的配置
Windows下VSCode 配置esp-idf的开发,官方及网上的介绍很多也很详细,这里就不多说。
这一节,我们简单介绍如何配置VSCode,从而可以通过SSH登录Ubuntu,实现我们的终极目的,在windows下写代码,在Ubuntu下编译。
操作比较简单,按图所示操作就可以。
选第一个就可以。
输入Ubuntu的用户登录密码。
第一次需要的时间会比较长。
至此,我们的开发环境搭建就成功了。
相关文章:

Ubuntu 下搭建ESP32 ESP-IDF开发环境,并在windows下用VSCode通过SSH登录Ubuntu开发ESP32应用
Ubuntu 下搭建ESP32 ESP-IDF开发环境,网上操作指南很多,本来一直也没有想过要写这么一篇文章。因为我其实不太习惯在linux下开发应用,平时更习惯windows的软件操作,只是因为windows下开发ESP32的应用编译时太慢,让人受…...
[FreeRTOS- 野火] - - - 临界段
一、介绍 临界段最常出现在对一些全局变量进行操作的场景。 1.1 临界段的定义 临界段是指在多任务系统中,一段需要独占访问共享资源的代码。在这段代码执行期间,必须确保没有任何其他任务或中断可以访问或修改相同的共享资源。 临界段的主要目的是防…...
【洛谷P9303题解】AC代码- [CCC 2023 J5] CCC Word Hunt
在CCC单词搜索游戏中,单词可以隐藏在字母网格中,以直线或直角的方式排列。以下是对代码的详细注释和解题思路的总结: 传送门: https://www.luogu.com.cn/problem/P9303 代码注释 #include <iostream> #include <vecto…...

NodeMediaEdge接入NodeMediaServer
如何使用NME接入NMS 简介 NodeMediaEdge是一款部署在监控摄像机网络前端中,拉取Onvif或者rtsp/rtmp/http视频流并使用rtmp/kmp推送到公网流媒体服务器的工具。 通过云平台协议注册到NodeMediaServer后,可以同NodeMediaServer结合使用。使用图形化的管理…...

【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
在Java开发的世界里,选择一个强大的集成开发环境(IDE)是迈向高效编程的第一步。而IntelliJ IDEA无疑是Java开发者中最受欢迎的选择之一。它以其强大的功能、智能的代码辅助和简洁的用户界面,帮助无数开发者快速构建和部署Java项目…...
WebSocket指数避让与重连机制
1. 引言 在现代Web应用中,WebSocket技术已成为实现实时通信的重要手段。与传统的HTTP请求-响应模式不同,WebSocket建立持久连接,使服务器能够主动向客户端推送数据,极大地提升了Web应用的实时性和交互体验。然而,在实…...
DrissionPage WebPage模式:动态交互与高效爬取的完美平衡术
在Python自动化领域,开发者常面临两难选择:Selenium虽能处理动态页面但效率低下,Requests库轻量高效却难以应对JavaScript渲染。DrissionPage的WebPage模式创新性地将浏览器控制与数据包收发融为一体,为复杂网页采集场景提供了全新…...
adb查看、设置cpu相关信息
查内存 adb shell dumpsys meminfo查CPU top -m 10打开 system_monitor adb shell am start -n eu.chainfire.perfmon/.LaunchActivity设置CPU的核心数 在/sys/devices/system/cpu目录下可以看到你的CPU有几个核心,如果是双核,就是cpu0和cpu1,…...

PHP7+MySQL5.6 查立得源码授权系统DNS验证版
# PHP7MySQL5.6 查立得源码授权系统DNS验证版 ## 一、系统概述 本系统是一个基于PHP7和MySQL5.6的源码授权系统,使用DNS TXT记录验证域名所有权,实现对软件源码的授权保护。 系统支持多版本管理,可以灵活配置不同版本的价格和下载路径&#…...
68元开发板,开启智能硬件新篇章——明远智睿SSD2351深度解析
在智能硬件开发领域,开发板的选择至关重要。它不仅关系到项目的开发效率,还直接影响到最终产品的性能与稳定性。而今天,我要为大家介绍的这款明远智睿SSD2351开发板,仅需68元,却拥有远超同价位产品的性能与功能&#x…...

【QQ音乐】sign签名| data参数加密 | AES-GCM加密 | webpack (下)
1.目标 网址:https://y.qq.com/n/ryqq/toplist/26 我们知道了 sign P(n.data),其中n.data是明文的请求参数 2.webpack生成data加密参数 那么 L(n.data)就是密文的请求参数。返回一个Promise {<pending>},所以L(n.data) 是一个异步函数…...
基于netmiko模块实现支持SSH or Telnet的多线程多厂商网络设备自动化巡检脚本
自动化巡检的需求 巡检工作通常包含大量的重复性操作,而这些重复性特征意味着其背后存在明确的规则和逻辑。这种规律性为实现自动化提供了理想的前提条件。 自动化工具 我们这里采用python作为自动化的执行工具。 过程 安装 netmiko pip install netmiko 模块的使…...
不用 apt 的解决方案(从源码手动安装 PortAudio)
第一步:下载并编译 PortAudio 源码 cd /tmp wget http://www.portaudio.com/archives/pa_stable_v190600_20161030.tgz tar -xvzf pa_stable_v190600_20161030.tgz cd portaudio# 使用 cmake 构建(推荐): mkdir build &&…...
【前端】JS引擎 v.s. 正则表达式引擎
JS引擎 v.s. 正则表达式引擎 它们的转义符都是\ 经过JS引擎会进行一次转义 经过正则表达式会进行一次转义在一次转义中\\\\\的转义过程: 第一个 \ (转义符) 会“吃掉”第二个 \,结果是得到一个字面量的 \。 第三个 \ (转义符) 会“吃掉”第四个 \&#x…...
开发体育平台,怎么接入最合适的数据接口
一、核心需求匹配:明确平台功能定位 1.实时数据驱动型平台 需重点关注毫秒级延迟与多端同步能力。选择支持 WebSocket 协议的接口,可实现比分推送延迟 < 0.5秒。例如某电竞直播平台通过接入支持边缘计算的接口,将团战数据同步速度提升至…...

3D虚拟工厂
1、在线体验 3D虚拟工厂在线体验 vue3three.jsblender 2、功能介绍 1. 全屏显示功能2. 镜头重置功能3. 企业概况信息模块4. 标签隐藏/显示功能5. 模型自动旋转功能6. 办公楼分层分解展示7. 白天/夜晚 切换8. 场景资源预加载功能9. 晴天/雨天/雾天10. 无人机视角模式11. 行人…...

http传输协议的加密
创建目录存放签证 [rootserver100 ~]# mkdir /etc/nginx/certs [rootserver100 ~]# openssl req -newkey rsa:2048 -nodes -sha256 -keyout /etc/nginx/certs/timinglee.org.key -x509 -days 365 -out /etc/nginx/certs/timinglee.org.crt ..................................…...

半导体晶圆制造洁净厂房的微振控制方案-江苏泊苏系统集成有限公司
半导体晶圆制造洁净厂房的微振控制方案-江苏泊苏系统集成有限公司 微振控制在现行国家标准《电子工业洁净厂房设计规范》GB50472中有关微振控制的规定主要有:洁净厂房的微振控制设施的设计分阶段进行,应包括设计、施工和投产等各阶段的微振测试、厂房建…...
嵌入式(1):STM32 GPIO与AFIO深度解析:从原理到高阶应用实战
写在前面:本文基于STM32官方参考手册与实际项目经验,系统总结GPIO与AFIO的核心技术要点。每行代码都经过实际验证,可直接用于项目开发。 一、GPIO:芯片与世界的桥梁 1.1 GPIO的8种工作模式详解 工作模式等效电路典型应用场景配置…...
Netty 实战篇:Netty RPC 框架整合 Spring Boot,迈向工程化
本文将基于前面构建的 RPC 能力,尝试将其与 Spring Boot 整合,借助注解、自动扫描、依赖注入等机制,打造“开箱即用”的 Netty RPC 框架,提升开发效率与工程规范。 一、为什么要整合 Spring Boot? 手动 new 实例、写注…...
QML视图组件ListView、TableView、GridView介绍
1 MVD模型 Model:模型,包含数据及其结构。View:视图,用于显示数据。Delegate:代理,规定数据在视图中的显示方式。2 ListView 以列表形式展示数据。2.1 属性 model:设置或获取列表视图的数据模型delegate:定义了列表中每一项的外观和行为currentIndex:获取或设置当前选…...

常见压缩算法性能和压缩率对比 LZ4 LZO ZSTD SNAPPY
网传压缩算法对比表 算法压缩率压缩速度解压速度支持流式压缩适用场景LZ4低极快极快是实时数据压缩、日志压缩、内存缓存等Zstandard高快快是文件压缩、网络传输、数据库备份等Brotli很高中等快是静态资源压缩(HTML、CSS、JS)等LZO低极快快是嵌入式系统…...

Spring Boot 应用中实现配置文件敏感信息加密解密方案
Spring Boot 应用中实现配置文件敏感信息加密解密方案 背景与挑战 🚩一、设计目标 🎯二、整体启动流程 🔄三、方案实现详解 ⚙️3.1 配置解密入口:EnvironmentPostProcessor3.2 通用解密工具类:EncryptionTool 四、快速…...

【TTS】基于GRPO的流匹配文本到语音改进:F5R-TTS
论文地址:https://arxiv.org/abs/2504.02407v3 摘要 我们提出了F5R-TTS,这是一种新颖的文本到语音(TTS)系统,它将群体相对策略优化(GRPO)集成到基于流匹配的架构中。 通过将流匹配TTS的确定性输出重新表述为概率高斯分布,我们的方…...

动态规划-152.乘积最大子数组-力扣(LeetCode)
一、题目解析 根据示例nums数组中存在负数,下面分析时需注意 二、算法原理 1、状态表示 此时f[i]表示:以i位置为结尾的所有子数组中的最大乘积,但是由于nums中存在负数,所以还需要g[i]表示:以i位置为结尾的所有子数组…...

1-1 初探Dart编程语言
Dart 是 Google 最初开发的一种开源编程语言,适用于客户端与服务端开发。它配套提供 Dart SDK,其中包含 Dart 编译器、Dart 虚拟机(Dart VM)以及一个名为 dart2js 的工具,可将 Dart 脚本转换为 JavaScript,…...

搭建最新版开源监控平台SigNoz踩的坑
转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权并注明出处。感谢您喜爱本文,请文明转载,谢谢。 一、前言 SigNoz 是一款开源应用程序性能监控工具,在往期相关文章(文末有链接)中…...
Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南 免费内网穿透家用服务器
Ubuntu 服务器配置与 Cloudflare Tunnel 部署指南 本文档总结了服务器配置相关内容,包括 Ubuntu 服务器配置、硬盘扩容、静态 IP 设置以及 Cloudflare Tunnel 的部署步骤。 目录 硬盘分区与扩容设置静态 IPCloudflare Tunnel 部署SSH 通过 Cloudflare Tunnel常见…...

无人机多人协同控制技术解析
一、运行方式 无人机多人点对点控制通常采用以下两种模式: 1. 主从控制模式 指定一个主控用户拥有最高优先级,负责飞行路径规划、紧急操作等关键指令;其他用户作为观察者,仅能查看实时画面或提交辅助指令,需经主…...

【东枫科技】KrakenSDR 测向快速入门指南
本快速入门指南旨在帮助您使用运行在 Raspberry Pi 4/5 或 Orange Pi 5B (OPI5B)(带 WiFi 型号)上的 KrakenSDR 尽快连接到测向应用程序。不过,请务必阅读本手册的其余部分,以了解无线电测向的工作原理。 你需要什么 本指南假设…...