在win10-wsl2(ubuntu)中安装jlink

1. 下载jlink的linux版本驱动

在 官方下载linux版本的deb包

SEGGER - The Embedded Experts - Downloads - J-Link / J-Trace

拷贝到ubuntu的/home目录下(其他目录也可以),进行安装

sudo dpkg -i JLink_Linux_V788e_x86_64.deb

然后提示很多依赖缺失的错误,此时执行自动安装需要的依赖包

sudo apt install -f

再次重新安装就可以啦

sudo dpkg -i JLink_Linux_V788e_x86_64.deb

查看是否安装成功,输入JLink 再按下两次Table键,是否如下所示

这样表示安装成功了

2. 连接jlink

执行jlink操作

JLinkExe

出现连接失败,如下所示

原因:WSL2和WSL相比是真正的虚拟环境,功能也更加强大。但正是因为如此,所以硬件环境也是完全隔离的,不能像WSL一样直接引用Windows下的COM。如果想在WSL2下使用jlink,必须解决访问宿主机USB的问题

3. 解决WSL2使用USB的问题

下载usbipd-win的msi安装包

dorssel/usbipd-win:用于将本地连接的USB设备共享到其他计算机(包括Hyper-V来宾和WSL 2)的Windows软件。 (github.com)

Release usbipd-win 3.0.0 · dorssel/usbipd-win (github.com)

官方介绍解决方案:

连接 USB 设备 | Microsoft Learn

window: 首先下载msi包usbipd,安装,并加入环境变量

管理员模式打开PowerShell,查看usbipd

 查看当前所有usb设备

 linux: 如下安装

sudo apt install linux-tools-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20

查看usb 设备

lsusb

 当前还是没有jlink设备的

此时需要在window的管理员PowerShell中将jlink这个USB设备关联到WSL2中去

usbipd wsl attach --busid=<busid>

 attach完成后再Linux中查看usb设备

lsusb

此时已经有了jlink设备

执行jlink操作

JLinkExe

 可以正确识别jlink设备

尝试连接GD32芯片

 此时连接芯片也正常

4. window想再次使用jlink处理方式

 当attach jlink至wsl后,window不再能使用jlink了,如果再window下需要再次使用,需要先detach

usbipd wsl detach --busid=<busid>

5. 当wsl中usbip异常

  1. 当window下usbipd wsl list 可以正常显示,但是wsl下的usbip报错如下

    # 执行usbip,查看错误信息
    yang@DESKTOP-A0TQ4LV:/usr/bin$ ./usbip
    WARNING: usbip not found for kernel 5.15.90.1-microsoft
    ​
      You may need to install the following packages for this specific kernel:
        linux-tools-5.15.90.1-microsoft-standard-WSL2
        linux-cloud-tools-5.15.90.1-microsoft-standard-WSL2
    ​
      You may also want to install one of the following packages to keep up to date:
        linux-tools-standard-WSL2
        linux-cloud-tools-standard-WSL2
  2. 查看是否已经安装linux-tools-generic

        # 查看linux-tools的版本
        yang@DESKTOP-A0TQ4LV:~$ ls /usr/lib/linux-tools/
        5.15.0-83-generic
        yang@DESKTOP-A0TQ4LV:~$
​
        # 查看linux-tools/*-generic/中是否有usbip
        yang@DESKTOP-A0TQ4LV:~$ ls /usr/lib/linux-tools/5.15.0-83-generic/
        acpidbg  bpftool  cpupower  libperf-jvmti.so  perf  turbostat  usbip  usbipd          x86_energy_perf_policy
        yang@DESKTOP-A0TQ4LV:~$ 
  1. 如果没有linux-tools则需要安装

    # 安装
    sudo apt install linux-tools-generic hwdata
    # 更新链接(这里为什么是usr/local/bin而不是usr/bin ??)
    sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20
  2. 如果已经安装linux-tools并且存在usbip

    # 已经安装了还是出错,查看错误信息后发现是内核版本不对
    # 内核是5.15.90.1,而linux-tools的是5.15.0-83;
    # 所以需要重新更新链接
    sudo update-alternatives --install /usr/bin/usbip usbip /usr/lib/linux-tools/*-generic/usbip 20
  3. 此时在执行usbip则正常了,会显示相关操作信息

    yang@DESKTOP-A0TQ4LV:~$ usbip
    usage: usbip [--debug] [--log] [--tcp-port PORT] [version]
                 [help] <command> <args>
    ​
      attach     Attach a remote USB device
      detach     Detach a remote USB device
      list       List exportable or local USB devices
      bind       Bind device to usbip-host.ko
      unbind     Unbind device from usbip-host.ko
      port       Show imported USB devices

参考:

通过WSL2连接USB串口调试ESP32

Ubuntu:使用命令行安装deb文件

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐