转载来源:https://blog.csdn.net/godmial/article/details/149854149
原作者:Sean_woo1998
转载已经过原作者授权。
本文解决了WLS2与ST-Link,JLink等下载器之间的不能通信的问题
WSL 版本: 2.5.9.0
内核版本: 6.6.87.2-1
WSLg 版本: 1.0.66
MSRDC 版本: 1.2.6074
Direct3D 版本: 1.611.1-81528511
DXCore 版本: 10.0.26100.1-240331-1435.ge-release
Windows: 10.0.26100.4652
一.安装ubuntu
1.将ubuntu安装到D盘
将ubuntu安装到非C盘位置,这篇文章写的非常好,我就不浪费时间了
【Linux】自定义WSL2安装位置,安装到其他磁盘(非C盘)_wsl2安装到其他盘-CSDN博客
2.vscode安装WSL插件来使用Ubuntu
安装完成之后打开vscode,打开拓展搜索WSL拓展并安装
3.打开ubuntu
连接成功:
打开终端
说明Ubuntu安装成功
二.安装usbipd
usbipd是一个运行在 Windows 上的后台服务,基于 USB/IP 协议,用于将本地 USB 设备虚拟化并共享给 WSL2、虚拟机或远程 Linux 系统,使这些系统能够像本地设备一样访问和使用这些 USB 外设。简单来说这一步就是为了将插到win主机上的USB设备共享到WSL
1.win环境安装usbipd
win环境下打开cmd,输入以下命令winget install --interactive --exact dorssel.usbipd-win
需要重启电脑!!!
重启电脑后输入以下命令
说明usbipd安装完成
2.ubuntu环境安装usbipd
以防万一,先更新一下ubuntu,全部输入Y即可sudo apt update
sudo apt upgrade
安装usbipdsudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20
3.将USB共享给WSL
1.把ST-Link或者Jlink插到电脑上
2.win+s键打开搜索栏输入power shell,以管理员身份打开
然后输入以下命令
发现ST-Link设备
然后输入以下命令, 1-11对应stlink的BUSID
注意:
命令执行成功后 ST-Link的状态会更改为Shared,然后才可以往下进行,
要注意以下两点
1.主机开关机可能会改变ST-Link或JLink的BUSID
2.更换USB插口也会改变ST-Link或JLink的BUSID
3.如果BUSID更换,那么状态就会改为Not shared,那么就要重新执行usbipd bind --busi <你的BUSID>,让状态改为Shared。
4.win环境vscode安装usbipd拓展
安装完成vscode左下角会有Attach字样
把ST-Link或者Jlink插到电脑上,然后点击 Attach
成功:
Ubuntu环境下使用lsusb查询
如果报错:
Error while attaching USB device:Error: Command failed: usbipd.exe attach --wsl --busid=1-1 usbipd: error: Device is not shared; run 'usbipd bind --busid 1-1' as administrator first.
这个错误就代表你没有将USB设备改为 Shared,请退回第三章第三节重新设置
三.启用systemd
ubuntu环境下命令行输入
然后将以下代码输入
按Ctrl+X退出,按Y确定保存
验证 WSL 中systemd是否已经成功启用
如果返回的是:
说明systemd是系统的 init 进程,已经启用。
然后ubuntu就可以添加udev规则了
四.添加udev规则
首先克隆pyocd仓库git clone https://github.com/pyocd/pyOCD.git
进入udev目录找到以下规则文件
然后将整个udev文件夹拖到ubuntu的home/user文件夹里去
Ubuntu进入到刚刚复制进来的udev目录里
终端输入命令将所有规则加入sudo cp *.rules /etc/udev/rules.d
然后输入以下命令重新触发udevsudo udevadm control --reload
sudo udevadm trigger
此时,如果以上步骤都全部成功的话,JLink或者ST-Link与WSL ubuntu之间的通道已经全部打通,我们还需要在Ubuntu中下载JLink验证一下是否成功
五.验证是否成功
JLink下载网站:SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace
下载完毕之后还是放到home/user里边去
输入命令:sudo dpkg -i JLink_Linux_V856_x86_64.deb
这时候会报错
这是依赖缺失的错误,此时执行自动安装需要的依赖包
然后重新输入:sudo dpkg -i JLink_Linux_V856_x86_64.deb
查看是否安装成功,输入JLink 再按下两次Table键,是否如下所示
插入JLink,将JLink状态改为Shared
将设备Attach到ubuntu上
Ubuntu查询是否有Jlink
输入命令连接JLink下载器
成功:
如果ubuntu能显示usb但是连接失败,检查udev规则是否导入成功
参考文章:
连接 USB 设备 | Microsoft Learn
WSL2连接USB存储设备(保姆级教程,真正做到你奶奶来了也能成功) - 知乎
Getting Started Guide — Zephyr Project Documentation
WSL 2.5.7.0: getting WSL kernel is not USBIP capable error · Issue #12984 · microsoft/WSL
在win10-wsl2(ubuntu)中安装jlink_jlink windows-CSDN博客
Use systemd to manage Linux services with WSL | Microsoft Learn
|