「教程」享受 WSL2 + VS Code 丝滑开发体验

[复制链接]
查看424 | 回复5 | 2024-9-23 09:21:33 | 显示全部楼层 |阅读模式
看到论坛有大佬在 WSL 上开发,于是自己也稍微研究了一下。然后发现,开发调试原来在 WSL 上都可以实现,于是和大家分享一下具体的方式。如果大家更好开发调试方式欢迎一起交流~

WSL 介绍
这里引用官方的介绍:

开发人员可以在 Windows 计算机上同时访问 Windows 和 Linux 的强大功能。 通过适用于 Linux 的 Windows 子系统 (WSL),开发人员可以安装 Linux 发行版(例如 Ubuntu、OpenSUSE、Kali、Debian、Arch Linux 等),并直接在 Windows 上使用 Linux 应用程序、实用程序和 Bash 命令行工具,不用进行任何修改,也无需承担传统虚拟机或双启动设置的费用。

系统要求
必须运行 Windows 10 版本 2004 及更高版本(内部版本 19041 及更高版本)或 Windows 11 才能使用以下命令。

安装步骤
在管理员模式下打开 PowerShell 或 Windows 命令提示符,方法是右键单击并选择“以管理员身份运行”,输入 wsl --install 命令,然后重启计算机。
  1. wsl --install
复制代码
默认情况下,安装的 Linux 分发版为 Ubuntu。 可以使用 -d 标志进行更改。
在更改前我们先查看有哪些可以使用的发行版
  1. wsl -l -o
复制代码

发行版.png
例如安装Ubuntu-24.04,只需输入以下命令:
  1. wsl --install -d Ubuntu-24.04
复制代码
完成安装后可以在开始菜单中看到已经安装好的 WSL,点击 Ubuntu-24.04 LTS 就可以启动 WSL了
开始菜单图标.png

升级至 WSL 2
我在两台电脑上安装了 WSL ,但我发现一台电脑是 WSL1 一台是 WSL2。
  1. wsl --list --verbose
复制代码

V1.png
WSL 1 和 WSL 2 之间的主要区别在于,在托管 VM 内使用实际的 Linux 内核、支持完整的系统调用兼容性以及跨 Linux 和 Windows 操作系统的性能。
这里放一张两者的对比图,便于大家理解:
WSL功能比较.png
从上面的比较表中可以看出,WSL 2 架构在几个方面优于 WSL 1,但跨 OS 文件系统的性能除外,对于这种情况,可通过将项目文件存储在与处理项目时运行的工具相同的操作系统上进行处理。
大家可以选择自己合适的WSL版本,接下来讲讲如何升级(降级) WSL 版本
  1. wsl --update

  2. wsl --set-version Ubuntu-24.04 2
复制代码

update-完全截图.png
稍等片刻,然后再查询WSL版本,可以看到已经升级到 WSL2 了
  1. wsl --list --verbose
复制代码

update-完成.png

环境安装
安装依赖
  1. sudo apt install build-essential python3 python3-pip git screen
复制代码

拉取仓库
  1. git clone --recursive https://gitee.com/Ai-Thinker-Open/Ai-Thinker-WB2
复制代码

设置权限
进入Ai-Thinker-WB2/toolchain/riscv目录
  1. cd Ai-Thinker-WB2/toolchain/riscv
  2. chmod -R 777 Linux
复制代码

到此环境已经安装完毕,进入任意一个项目文件夹,运行make命令就可以编译了
make.png
使用串口
WSL 2
WSL2 需借助usbipd-win
windows查看usb设备
  1. usbipd list
复制代码
找到对应设备的编号,共享设备:
  1. usbipd bind --busid <BUSID>
  2. usbipd bind --busid 1-9

  3. usbipd attach --wsl --busid=<BUSID>
  4. usbipd attach --wsl --busid=1-9
复制代码
查看设备
  1. ls -l /dev
复制代码

WSL 1
WSL1 来自网上的一个说法是电脑的串口会自动出现在WSL中,其名字的对应关系为:电脑COMx =WSL中 ttySx,若大家有WSL1可以尝试找一下是否对应
烧录
通过usbipd出现在WSL中的串口名称为ttyUSB0,使用以下命令烧录
  1. make flash p=/dev/ttyUSB0 b=115200
复制代码

代码编辑
最重要的部分来了,在WSL中配置环境,自然是要编辑编辑代码的,这里我首先想到的是直接用电脑上的VS Code打开 WSL 中的仓库,不过很可惜 include 引入全部报错。
直接在电脑上打开仓库.png
既然直接打开不行,我又尝试下载Linux版的VS Code,放到WSL中安装,可惜最后会弹出一个安装失败的警告。
VS Code.png
安装VS COde.png
经过一番探索,我终于发现了一个优雅的解决方案:只需在VS Code中搜索 WSL 插件并安装
wsl插件.png

WSL SDK目录中输入 code .,第一次输入会安装server,然后自动弹出VS Code界面。此时搜索 C 插件并安装,你就会发现所有依赖都可以正常识别了,代码跳转也没问题。
C 插件.png
串口调试
WSLWindows之间切换还是比较麻烦的,这里找到了一个可以在WSL中调试窗口的项目,先下载源码:
  1. git clone https://github.com/npat-efault/picocom.git
复制代码

然后使用 make 编译:
  1. make
复制代码

这足以为大多数现代类 Unix 系统编译 picocom。如果需要,您可以像这样剥离生成的二进制文件:
  1. strip picocom
复制代码

调试串口:
  1. ./picocom -b 115200 -f h /dev/ttyUSB0
复制代码
串口调试.png
至此大功告成,可以在WSL愉快地开发和调试了。

本帖被以下淘专辑推荐:

回复

使用道具 举报

一只呆头鹅 | 2024-9-23 09:34:39 | 显示全部楼层
大佬大佬
回复

使用道具 举报

bzhou830 | 2024-9-23 09:41:40 | 显示全部楼层
我一直使用WSL1, 电脑COMx =WSL中 ttySx 这个是这样对应的。
WSL2中的串口好像不那么好用?
所以我一直没有升级到WSL2
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

爱笑 | 2024-9-23 11:00:43 | 显示全部楼层
不错不错,多多分享!
用心做好保姆工作
回复 支持 反对

使用道具 举报

Yhue | 2024-9-23 11:32:25 | 显示全部楼层
爱笑 发表于 2024-9-23 11:00
不错不错,多多分享!

回复 支持 反对

使用道具 举报

Yhue | 2024-9-23 15:17:47 | 显示全部楼层
bzhou830 发表于 2024-9-23 09:41
我一直使用WSL1, 电脑COMx =WSL中 ttySx 这个是这样对应的。
WSL2中的串口好像不那么好用?
所以我一直没 ...

是的,WSL2的串口需要手动配置过,而且中途关闭WSL再绑定端口会报错
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则