ESP32开发之ubuntu环境搭建

1. 在Ubuntu官网下载Ubuntu server 20.04版本https://releases.ubuntu.com/20.04.6/
2. 在vmware下安装Ubuntu
3. 改Ubuntu静态IP
$ sudo vi /etc/netplan/00-installer-config.yaml

# This is the network config written by ‘subiquity’
network:
renderer: networkd
ethernets:
ens33:
# dhcp4: true
addresses:
- 192.168.4.251/24
nameservers:
addresses: [4.2.2.2,8.8.8.8]
routes:
- to: default
via: 192.168.4.1
version: 2

$ sudo netplan apply
$ ip addr show ens33
$ ip route show
$ reboot

3. 使用SecureCRT使用SSH远程连接虚拟机的ubuntu
4. 安装各种必要的工具
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
5. 新建esp32目录并进入
$ mkdir esp32
$ cd esp32
6. 拉取gitee工具(原因是从官方下载大概率会失败)
$ git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
7. 执行gitee工具切换镜像脚本
$ cd esp-gitee-tools
$ ./jihu-mirror.sh set
8. 拉取esp-idf源码
$ cd ..
$ git clone --recursive https://github.com/espressif/esp-idf.git
9. 切换esp-idf版本分支到v5.2
$ cd esp-idf
$ git checkout v5.2
$ git submodule update --init --recursive
如果提示失败或有错误试下这句:../esp-gitee-tools/submodule-update.sh
10. 更换pip源
$ pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
$ pip config set global.trusted-host mirrors.aliyun.com
11. 安装编译工具
$ ../esp-gitee-tools/install.sh
12. 设置环境变量并将环境变量放到.bashrc中(这样下次启动后上一步设置的环境变量会重新加载)
$ source export.sh
$ echo "source ~/esp32/esp-idf/export.sh" >> ~/.bashrc
13. 设置USB串口权限(解决下载代码时报USB串口权限问题)
$ sudo usermod -aG dialout usrname usrname需要换成你的用户名
14. 重启
15. windows安装VSCODE,并安装如下插件

在这里插入图片描述

16. 通过以上插件远程连接ubuntu

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

这样就可以建立远程连接了,代码就可以在vscode进行查看和更改,但是我们会发现每次都需要输入密码,我们通过如下方式解决

解决使用VsCode远程ssh连接虚拟机ubuntu需要重复输入密码

17. VSCode中为远程主机安装插件

在这里插入图片描述

按照上图依次安装如下插件

在这里插入图片描述

18. 进行插件配置
  • c/c++插件

在这里插入图片描述
在这里插入图片描述

  • 改ESP-IDF配置

键盘同时按下ctl+shift+p,在弹出的对话框输入如下,这样我们就可以任意查看和跳转代码位置了。

在这里插入图片描述

19. 建立第一个工程
  • 使用vscode远程连接虚拟机,在终端窗口进行操作

在这里插入图片描述

  • 创建存放工程的目录并进入目录
mkdir esp32-prj
cd esp32-prj

在这里插入图片描述

  • 使用命令创建工程
idf.py create-project helloworld

在这里插入图片描述

  • 进入目录更改目标芯片,一般默认为esp32
idf.py set-target esp32-s3

在这里插入图片描述

  • 进行第一次编译
idf.py build

在这里插入图片描述
在这里插入图片描述

  • 打开工程

在这里插入图片描述

  • 如图操作,这样才可以方便的跳转和查看代码,每个新的工程都需要执行一次

在这里插入图片描述

  • 编译代码

在这里插入图片描述

  • 烧录,先连接开发板,并保证开发板是连接到了虚拟机
idf.py flash

在这里插入图片描述

  • 监视开发板执行情况
idf.py monitor

在这里插入图片描述
在这里插入图片描述
退出监控使用CTL+]组合键

  • 烧录指令可以和监控指令可以放在一起执行
idf.py flash monitor

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

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

相关文章

HTTP 1.1 比 HTTP1.0 多了什么?(详尽版)

相较于HTTP 1.0,1.1 版本增加了以上特性: 1. 新增了连接管理即 keepalive,允许持久连接。 定义: Keepalive允许客户端和服务器在完成一次请求-响应后,保持连接处于打开状态,以便后续请求复用同一连接&am…

【深度学习】PyTorch实现VGG16模型及网络层数学原理

一、Demo概述 代码已附在文末 1.1 代码功能 ✅ 实现VGG16网络结构✅ 在CIFAR10数据集上训练分类模型 1.2 环境配置 详见【深度学习】Windows系统Anaconda CUDA cuDNN Pytorch环境配置 二、各网络层概念 2.1 卷积层(nn.Conv2d) nn.Conv2d(in_cha…

解决RecyclerView在调用smoothScrollToPosition后最后一个item底部超出屏幕的问题

要解决RecyclerView在调用smoothScrollToPosition后最后一个item底部超出屏幕的问题,可以使用自定义的LinearSmoothScroller,使其底部对齐屏幕。步骤如下: 创建自定义的SmoothScroller类: 继承LinearSmoothScroller并重写getVerti…

k8s亲和力和非亲和力

在 Kubernetes 中,亲和力(Affinity)和非亲和力(Anti-Affinity)是用于控制 Pod 调度策略的机制,它们可以帮助优化资源利用率、提高应用性能和可用性。以下是亲和力和非亲和力的详细解释: 亲和力…

开发一款游戏需要哪些岗位角色参与?

常见分类 1. 游戏策划(Game Designer) 核心职责:设计游戏的玩法、规则、内容和整体体验。 具体工作: 系统设计:设计游戏的战斗、经济、成长、社交等核心系统。 数值设计:平衡角色属性、装备数值、经济系…

Asp.NET Core WebApi 创建带鉴权机制的Api

构建一个包含 JWT(JSON Web Token)鉴权的 Web API 是一种常见的做法,用于保护 API 端点并验证用户身份。以下是一个基于 ASP.NET Core 的完整示例,展示如何实现 JWT 鉴权。 1. 创建 ASP.NET Core Web API 项目 使用 .NET CLI 或 …

Jenkins 发送钉钉消息

这里不介绍 Jenkins 的安装,可以网上找到很多安装教程,重点介绍如何集成钉钉消息。 需要提前准备钉钉机器人的 webhook 地址。(网上找下,很多教程) 下面开始配置钉钉机器人,登录 Jenkins,下载 …

CentOS中离线安装DockerCompos并用其部署Rabbitmq(使用离线导入导出docker镜像方式)

场景 DockerDockerCompose实现部署jenkins,并实现jenkinsfile打包SpringBootVue流水线项目过程详解、踩坑记录(附镜像资源、离线包资源下载): DockerDockerCompose实现部署jenkins,并实现jenkinsfile打包SpringBootVue流水线项目过程详解、踩坑记录(附镜像资源、离…

stm32week11

stm32学习 八.stm32基础 2.stm32内核和芯片 F1系统架构:4个主动单元和4个被动单元 AHB是内核高性能总线,APB是外围总线 总线矩阵将总线和各个主动被动单元连到一起 ICode总线直接连接Flash接口,不需要经过总线矩阵 AHB:72MHz&am…

贪心算法:部分背包问题深度解析

简介: 该Java代码基于贪心算法实现了分数背包问题的求解,核心通过单位价值降序排序和分阶段装入策略实现最优解。首先对Product数组执行双重循环冒泡排序,按wm(价值/重量比)从高到低重新排列物品;随后分两阶段装入:循环…

13. Langchain异步处理:提升应用性能的关键技巧

引言:从"顺序等待"到"并行加速" 2025年某电商平台引入LangChain异步处理后,大促期间订单处理能力提升5倍,系统响应延迟降低70%。本文将基于LangChain的异步架构,详解如何通过并行执行流式处理,让…

ros2-rviz2控制unity仿真的6关节机械臂,探索从仿真到实际应用的过程

文章目录 前言(Introduction)搭建开发环境(Setup Development Environment)在window中安装Unity(Install Unity in window)创建Docker容器,并安装相关软件(Create Docker containers…

计算机组成原理笔记(十四)——3.4指令类型

一台计算机的指令系统可以有上百条指令,这些指令按其功能可以分成几种类型,下面分别介绍。 3.4.1数据传送类指令 一、核心概念与功能定位 数据传送类指令是计算机指令系统中最基础的指令类型,负责在 寄存器、主存、I/O设备 之间高效复制数…

各开源协议一览

在 GitHub 上,开源项目通常会使用一些常见的开源协议来定义项目的使用、修改和分发规则。以下是目前 GitHub 上最常见的几种开源协议及其差异和示例说明: TL;DR 协议宽松程度是否强制开源专利保护适用场景MIT最宽松否无希望代码被广泛使用Apache 2.0宽松…

51c自动驾驶~合集17

我自己的原文哦~ https://blog.51cto.com/whaosoft/13793157 #汇聚感知、定位、规划控制的自动驾驶系统 自动驾驶技术在应用到车辆上之后可以通过提高吞吐量来缓解道路拥堵,通过消除人为错误来提高道路安全性,并减轻驾驶员的驾驶负担,从…

小程序开发指南

小程序开发指南 目录 1. 小程序开发概述 1.1 什么是小程序1.2 小程序的优势1.3 小程序的发展历程 2. 开发准备工作 2.1 选择开发平台2.2 开发环境搭建2.3 开发模式选择 3. 小程序开发流程 3.1 项目规划3.2 界面设计3.3 代码开发3.4 基本开发示例3.5 数据存储3.6 网络请求3.7 …

Day15:关于MySQL的编程技术——基础知识

前言:先创建一个练习的数据库和数据 1.创建数据库并创建数据表的基本结构 -- 创建练习数据库 CREATE DATABASE db_programming; USE db_programming;-- 创建员工表(包含各种数据类型) CREATE TABLE employees (emp_id INT PRIMARY KEY AUTO…

批处理脚本bat丨遍历一个包含项目名称的数组,并对每个文件中的项目执行 git pull 操作 (一键拉很多文件的代码)

文章目录 前言一、操作方式二、文件展示三、分析代码结构四、代码五、需要注意的潜在问题六、改进后的代码七、改进说明八、感谢 前言 由于之前git服务部署在本地服务器,处于代码安全角度考虑。领导让我将所有的项目代码手动物理备份一份并且发给他。 这种傻傻的操…

【C++】C与C++、C++内存空间、堆与栈

C嘎嘎嘎嘎嘎~ C与C的区别与联系 C内存空间 int global_var; // 未初始化全局变量,BSS段 const char* str "Hello"; // 字符串常量text段 in数据段void func() {static int static_var; // 未初始化的静态变量,数据段int local_var; …

舵机:机器人领域的“关节革命者”

机器人的技术,每一个细微的进步都可能引领一场行业变革。而在这场变革中,舵机作为机器人关节的核心部件,正悄然上演着一场革命性的应用风暴。从简单的关节运动到复杂的姿态控制,舵机以其卓越的性能和无限的可能,重新定…