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

WSL2搭建基于Docker的ESP32开发环境

WSL2 安装

  • 如何在 Windows 上安装 WSL2
sudo apt install esptool
sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20

Docker安装和配置

一键安装脚本

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

配置

cat /etc/docker/daemon.json
{"registry-mirrors" : ["https://docker.registry.cyou","https://docker-cf.registry.cyou","https://dockercf.jsdelivr.fyi","https://docker.jsdelivr.fyi","https://dockertest.jsdelivr.fyi","https://mirror.aliyuncs.com","https://dockerproxy.com","https://mirror.baidubce.com","https://docker.m.daocloud.io","https://docker.nju.edu.cn","https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.mirrors.ustc.edu.cn","https://mirror.iscas.ac.cn","https://docker.rainbond.cc","https://do.nark.eu.org","https://dc.j8.work","https://dockerproxy.com","https://gst6rzl9.mirror.aliyuncs.com","https://registry.docker-cn.com","http://hub-mirror.c.163.com","http://mirrors.ustc.edu.cn/","https://mirrors.tuna.tsinghua.edu.cn/","http://mirrors.sohu.com/"],"insecure-registries" : ["registry.docker-cn.com","docker.mirrors.ustc.edu.cn"],"debug": true,"experimental": false
}
sudo systemctl daemon-reload
sudo systemctl restart docker

测试Docker

sudo docker pull hello-world
Using default tag: latestlatest: Pulling from library/hello-world
Digest: sha256:ec153840d1e635ac434fab5e377081f17e0e15afab27beb3f726c3265039cfff
Status: Image is up to date for hello-world:latest
docker.io/library/hello-world:latest
sudo docker run hello-world
[sudo] password for cmf:Hello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/

设置以非 root 用户身份管理 Docker

  • Docker Engine 的 Linux 安装后步骤

创建docker组。

sudo groupadd docker

将您的用户添加到docker组。

 sudo usermod -aG docker $USER

注销并重新登录WSL2,在Windows Cmd下执行。

wsl --shutdown

还可以运行以下命令来激活对组的更改:

 newgrp docker

验证是否可以在没有sudo的情况下运行命令。

docker run hello-worldHello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/

拉取Docker镜像

cat docker-compose.yml
version: "3.8"services:esp-idf:image: espressif/idfcontainer_name: esp-idf-builderworking_dir: /projectvolumes:- .:/projectenvironment:- HOME=/tmp- IDF_GIT_SAFE_DIR=/projecttty: truestdin_open: true
docker compose up

VsCode

  • Visual Studio Code Download

需要安装的插件

  • Dev Containers
  • Remote Development
  • ESP-IDF

Code

git clone https://github.com/espressif/esp-idf.git

使用hello_world为示例工程

cp -rf esp-idf/examples/get-started/hello_world .

使用vscode打开hello_world工程

cd hello_world
code .

在VsCode的菜单栏选择 查看 > 命令面板,在弹出的对话框中输入ESP-IDF: Add docker container configuration。
然后当前项目的 .devcontainer 文件夹就会自动生成了。下一步在点击左下角的连接->在容器中重新打开。
在这里插入图片描述
在这里插入图片描述

在 Docker 容器中使用外部 USB 转串口设备

Windows中下载并安装usbipd-win工具
在这里插入图片描述
在这里插入图片描述dmesg可以看到wsl2中已经识别到了一个ttyACM0,这时我们在回到VsCode。
在这里插入图片描述
在下面一行配置中,串口配置端口就选择ttyACM0,设备目标自行根据开发板选择,然后就可以点击Build Project,看我这里编译成功了!
接下载再试试烧录。
在这里插入图片描述
我选择的用UART烧录,看打印信息是烧录成功了,具体我们点击Monitor Devict试下。
在这里插入图片描述
优雅!

参考资料

  • 使用Docker容器的ESP32开发环境搭建
  • Docker官方文档
  • 如何在 Windows 上安装 WSL2
  • 如何将USB 设备连接到 WSL 2 上运行的 Linux 分发版
http://www.lryc.cn/news/605007.html

相关文章:

  • 机器学习项目完整流程详解
  • 基于C-MTEB/CMedQAv2-rerankingv的Qwen3-1.7b模型微调-demo
  • Android基础(二)了解Android项目
  • 端侧大模型迎来“轻”革命!移远通信 × RWKV 打造“轻量AI大脑”
  • 单片机电路基础
  • 【NCS随笔】如何在hello_world添加蓝牙功能(一)
  • sqli-labs:Less-7关卡详细解析
  • 国内数据集成厂商有哪些?如何选择最适合的数据集成平台?
  • Qt 与物联网(IoT)开发
  • 【Linux】重生之从零开始学习运维之备份恢复
  • String模拟实现的补充说明
  • 第1课:向量与矩阵运算
  • QT中QTableView+Model+Delegate实现一个demo
  • 【ESP32设备通信】-LAN8720与ESP32集成
  • 如何设计一个站内消息系统:架构设计合集(八)
  • 订单识别技术原理及场景应用
  • 【音视频】WebRTC 开发环境搭建-Web端
  • MYSQL:视图
  • Qt 下载说明
  • uniApp实战六:Echart图表集成
  • 实现implements InitializingBean, DisposableBean 有什么用
  • 【MATLAB/Simulink】查看MATLAB以往版本的帮助文档
  • 牛顿-拉夫森法求解非线性方程组
  • 无人机惯性导航模块运行与技术难点!
  • 25年新算法!基于猛禽的优化算法(BPBO):一种元启发式优化算法,附完整免费MATLAB代码
  • 《数学模型》——最大流与最小费用流问题
  • Mediapipe 的某些模型,网络下载不来可以去gitee找找看
  • 双塔模型 + 自监督学习:解决长尾物品表征难题
  • Helm在Kubernetes中的应用部署指南与案例解析
  • FragmentManager 返回栈与 Activity 运行栈的关系(当按下Back键时屏幕会如何变化?)