文章目录

  • Win11 和 WSL2的USB/IP配置
  • 10G虚拟以太网 和 iPerf3 测速
  • NVIDIA Jetson USB
  • WSL2使用USB串口
    • PL2303
    • CH34x
    • CP210x
    • ST-Link V2
    • 给当前用户永久串口读写权限
    • 直接编译进内核的方式
  • Wireshark 抓USB/IP
  • dev 和 lsusb 的对应关系

Win11 和 WSL2的USB/IP配置

参考:

  • 连接 USB 设备 | Microsoft Docs
# wsl2, ubuntu18
sudo apt install linux-tools-5.4.0-77-generic hwdata
sudo update-alternatives --install /usr/local/bin/usbip usbip /usr/lib/linux-tools/5.4.0-77-generic/usbip 20# win11
# 下载最新版安装
# https://github.com/dorssel/usbipd-win/releases# 常用操作, 均在管理员模式powershell
# Win11图标右键 -> Windows终端(管理员)
# 列出所有连接到 Windows 的 USB 设备
usbipd wsl list
# 附加到默认wsl分发版
usbipd wsl attach --busid <busid>
# 附加到指定wsl
usbipd wsl attach -d Ubuntu-18.04 --busid 5-2
# 断开连接
usbipd wsl detach --busid <busid>

USB设备附加到WSL2后, 可以 lsusb 查看设备, 有的默认有通用驱动, 有的没有需要现装:

  • 方法一, 下载对应内核版本的源码 Releases · microsoft/WSL2-Linux-Kernel (github.com), 通过make menuconfig之类的勾选USB设备驱动, 编译内核等, 这种方式之前编译VCAN, VXCAN的时候就用过, 确实很方便, 参见 WSL2内核编译_添加SocketCAN支持_weifengdq的博客, WSL2迁移与硬盘读写测试_weifengdq的博客, 建议直接把WSL2升到最新版, 下最新WSL2内核源码, 直接把源码放在WSL2的ext4磁盘里面(如~目录), 20分钟左右就编完了
  • 方法二, 只编译需要设备的USB驱动, 下面的USB转串口以这种方式为例

常用的USB设备, 如USB转串口, 调试设备, USB打印机, USB网卡, CAN分析仪, 加密狗等都可以通过这种方式挂载到WSL2, OpenWRT路由器 或者 远程Linux服务器.

10G虚拟以太网 和 iPerf3 测速

iPerf官网: iPerf - The TCP, UDP and SCTP network bandwidth measurement tool, 可以下载Windows和Linux程序包

WSL2 安装

$ wget https://iperf.fr/download/source/iperf-3.1.3-source.tar.gz
$ tar xvf iperf-3.1.3-source.tar.gz
$ cd iperf-3.1.3/
$ ./configure; make; sudo make install
$ sudo ldconfig

Win11 PowerShell 里面开启服务

> ipconfig
以太网适配器 vEthernet (WSL):IPv4 地址 . . . . . . . . . . . . : 172.27.160.1PS D:\MyProgram\iPerf3\iperf-3.1.3-win64> .\iperf3.exe -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

WSL2 里面测试

$ iperf3 -c 172.27.160.1
Connecting to host 172.27.160.1, port 5201
[  4] local 172.27.165.112 port 58268 connected to 172.27.160.1 port 5201
[ ID] Interval           Transfer     Bandwidth       Retr  Cwnd
[  4]   0.00-1.00   sec  1.45 GBytes  12.4 Gbits/sec    0    452 KBytes
[  4]   1.00-2.00   sec  1.49 GBytes  12.8 Gbits/sec    0    452 KBytes
[  4]   2.00-3.00   sec  1.47 GBytes  12.7 Gbits/sec    0    452 KBytes
[  4]   3.00-4.00   sec  1.49 GBytes  12.8 Gbits/sec    0    452 KBytes
[  4]   4.00-5.00   sec  1.32 GBytes  11.3 Gbits/sec    0    452 KBytes
[  4]   5.00-6.00   sec  1.51 GBytes  13.0 Gbits/sec    0    452 KBytes
[  4]   6.00-7.00   sec  1.52 GBytes  13.0 Gbits/sec    0    452 KBytes
[  4]   7.00-8.00   sec  1.52 GBytes  13.1 Gbits/sec    0    452 KBytes
[  4]   8.00-9.00   sec  1.52 GBytes  13.0 Gbits/sec    0    452 KBytes
[  4]   9.00-10.00  sec  1.51 GBytes  12.9 Gbits/sec    0    452 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth       Retr
[  4]   0.00-10.00  sec  14.8 GBytes  12.7 Gbits/sec    0             sender[  4]   0.00-10.00  sec  14.8 GBytes  12.7 Gbits/sec                  receiveriperf Done.

PowerShell 里看也是 10Gbps

所以通过USBIP的方式挂单个USB 3.x或多个USB2.0设备应该是压力不大 ???

NVIDIA Jetson USB

开发 Jetson TX2/Xavier/Orin 的时候, 批量生成一般会用到USB来备份镜像或刷机, 那用WSL2到底支不支持呢?

支持, 不过需要加一个 -a 参数启用自动重连, 因为Jetson备份或者刷机的时候会有几次复位操作, USB会断开连接, 需要自动重连到WSL2.

> usbipd wsl attach --help
usbipd-win 2.3.0Description:Attaches a USB device to a WSL instance.The first time a device is attached this command will include a 'bind', for which administrator privileges are required. Subsequent attaches can bedone with standard user privileges.Exactly one of the options '--busid' or '--hardware-id' is required.Usage:usbipd wsl attach [options]Options:-a, --auto-attach            Automatically re-attach when the device is detached or unplugged-b, --busid <BUSID>          Attach device having <BUSID>-d, --distribution <NAME>    Name of the WSL distribution to attach to-i, --hardware-id <VID:PID>  Attach device having <VID>:<PID>-?, -h, --help               Show help and usage information

让Jetson进入Recovery模式:

  • 供电
  • 按住Recovery按键不松手
  • 按一下 Power / Reset 键
  • 松开Recovery按键

把Jetson备份用的USB连到WSL2上

# powershell(管理员)
> usbipd wsl list
BUSID  VID:PID    DEVICE                                                        STATE
6-4    0955:7c18  APX                                                           Not attached
# 加-a参数, 占用终端不会退出
> usbipd wsl attach -a -d Ubuntu-18.04 --busid 6-4

先来测试下Jetson的备份

BOARD=jetson-tx2-devkit
cd Linux_for_Tegra
sudo ./flash.sh -r -k APP -G bootloader/system_20220715.img $(BOARD) mmcblk0p1

中间的复位都能重连上, 看起来没有问题

最后也确实打包成功:

接着再把打包好的镜像刷回去测试一下

BOARD=jetson-tx2-devkit
cd Linux_for_Tegra/bootloader
mv system_20220711.img system.img
cd ..
sudo ./flash.sh -r ${BOARD} mmcblk0p1

刷机成功, 没有压力

那以后使用 Win11 + WSL2 开发Jetson岂不是原地飞升, 再也不用折腾 双电脑, 双系统 或 虚拟机了 !!!

WSL2使用USB串口

PL2303

这个更新到Win11后, 可能需要更换老驱动才行, 自行搜索, 这里不再赘述, 操作

# Win11图标右键 -> Windows终端(管理员)
$ usbipd wsl list
BUSID  VID:PID    DEVICE                                                        STATE
5-2    067b:2303  Prolific USB-to-Serial Comm Port (COM14)                      Not attached
5-4    067b:2303  Prolific USB-to-Serial Comm Port (COM3)                       Not attached# 把COM14附到Ubuntu(两个WSL2: Ubuntu和Ubuntu-18.04)
$ usbipd wsl attach -d Ubuntu-18.04 --busid 5-2###################################################### Ubuntu-18.04, VID_067B & PID_2303 就是指的 PL2303
$ lsusb
Bus 001 Device 005: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port$ uname -a
Linux DESKTOP-N0N0EQI 5.10.60.1-microsoft-standard-WSL2# WSL2需要从源码编译安装驱动
wget https://prolificusa.com/app/uploads/2019/06/PL2303G_Linux_Driver_v1.0.4.zip
unzip PL2303G_Linux_Driver_v1.0.4.zip
cd PL2303G_Linux_Driver_v1.0.4/5.2_ok# 改Makefile加上install
obj-m   += pl2303.o
all:make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
install:sudo insmod pl2303.ko;\sudo mkdir -p /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial;\sudo cp pl2303.ko /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial;\sudo sh -c 'echo "pl2303" >> /etc/modules-load.d/modules.conf'
clean:make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean# 编译安装
make all
make install# 检验
$ ls /dev/ttyUSB*
/dev/ttyUSB0

连接如图

WSL2里面使用Minicom测试, Windows使用SSCOM

# WSL2
sudo minicom -b 115200 -D /dev/ttyUSB0

测试如图

参考: Ubuntu18系统 PL2303GT驱动安装及绑定_家家的快乐空间的博客-CSDN博客

CH34x

常见的CH340, CH341等. 官网驱动下载:

  • CH341SER_LINUX.ZIP - 南京沁恒微电子股份有限公司 (wch.cn)

遗憾的是, 只适用于 Linux 内核 2.6.25 ~ 3.13.x. 对于WSL2的5.10.x并不能编译通过. 解决办法:

  • 仅参考使用里面的Makefile文件
  • 直接去Github内核源码下对应版本的源文件即可.
  • WSL2-Linux-Kernel/ch341.c at d489414c23af0cf54edd196b5400bb831fc35b02 · microsoft/WSL2-Linux-Kernel (github.com)
# 内核中USB串口芯片的源码都在 /drivers/usb/serial/ 目录
# ch341.c;   cp210x.c;   pl2303.c, pl2303.h
# https://github.com/microsoft/WSL2-Linux-Kernel/blob/d489414c23/drivers/usb/serial/ch341.c
# 复制源码, 保存为 ch34x.c# Makefile
ifeq ($(KERNELRELEASE), )
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD :=$(shell pwd)
default:$(MAKE) -C $(KERNELDIR)  M=$(PWD)
clean:rm -rf .tmp_versions Module.symvers *.mod.c *.o *.ko .*.cmd Module.markers modules.order
load:modprobe usbserialinsmod ch34x.ko
unload:rmmod ch34x
install:sudo insmod ch34x.ko;\sudo mkdir -p /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial;\sudo cp ch34x.ko /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial;\sudo sh -c 'echo "ch34x" >> /etc/modules-load.d/modules.conf';\sudo depmod
elseobj-m := ch34x.o
endif# 编译, 安装
make clean
sudo make
sudo make install# 测试
# powershell(管理员)
> usbipd wsl list
BUSID  VID:PID    DEVICE                                                        STATE
5-3    1a86:7523  USB-SERIAL CH340 (COM4)                                       Not attached
# 把 CH340 附到WSL2
> usbipd wsl attach -d Ubuntu-18.04 --busid 5-3
# 如果想重连到Win11, 用 usbipd wsl detach --busid 5-3
# WSL2
$ lsusb
Bus 001 Device 007: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
$ ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1
# 短接CH340的TX/RX, 用minicom测试
$ sudo minicom -b 115200 -D /dev/ttyUSB1# 重启测试
# powershell(管理员), wsl --shutdown 或者
> Get-Service LxssManager | Restart-Service
> usbipd wsl attach -d Ubuntu-18.04 --busid 5-3
# wsl, 发现/etc/modules-load.d/modules.conf没有生效, 还是得手动modprobe
$ sudo modprobe ch34x
$ ls /dev/ttyUSB*

CP210x

常用的CP2102, CP2104, CP2105等

# 内核中USB串口芯片的源码都在 /drivers/usb/serial/ 目录
# ch341.c;   cp210x.c;   pl2303.c, pl2303.h;    ftdi
# 下载cp210x.c
# https://github.com/microsoft/WSL2-Linux-Kernel/blob/d489414c23/drivers/usb/serial/cp210x.c# Makefile
ifeq ($(KERNELRELEASE), )
KERNELDIR := /lib/modules/$(shell uname -r)/build
PWD :=$(shell pwd)
default:$(MAKE) -C $(KERNELDIR)  M=$(PWD)
clean:rm -rf .tmp_versions Module.symvers *.mod.c *.o *.ko .*.cmd *.mod Module.markers modules.order
load:modprobe usbserialinsmod cp210x.ko
unload:rmmod cp210x
install:sudo insmod cp210x.ko;\sudo mkdir -p /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial;\sudo cp cp210x.ko /lib/modules/$(shell uname -r)/kernel/drivers/usb/serial;\sudo depmod
elseobj-m := cp210x.o
endif# 编译, 安装
make clean
sudo make
sudo make install# 测试# powershell(管理员)
> usbipd wsl list
BUSID  VID:PID    DEVICE                                                        STATE
6-4    10c4:ea60  Silicon Labs CP210x USB to UART Bridge (COM5)                 Not attached
# 把 cp2104 附到WSL2
> usbipd wsl attach -d Ubuntu-18.04 --busid 6-4
# 如果想从wsl2断开, 重连到Win11, 用 usbipd wsl detach --busid 6-4# WSL2
$ lsusb
Bus 001 Device 007: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light
$ ls /dev/ttyUSB*
/dev/ttyUSB0
# 短接cp2104的TX/RX, 用minicom测试
$ sudo minicom -b 115200 -D /dev/ttyUSB0# 重启测试
# powershell(管理员), wsl --shutdown 或者
> Get-Service LxssManager | Restart-Service
> usbipd wsl attach -d Ubuntu-18.04 --busid 6-4
# wsl
$ sudo modprobe cp210x
$ ls /dev/ttyUSB*

ST-Link V2

有一个虚拟串口, 可以支持到 2Mbps, 测试发现, 仅使用虚拟串口, 可以免驱, /dev/ttyACM*

# powershell 管理员
> usbipd wsl list
BUSID  VID:PID    DEVICE                                                        STATE
6-4    0483:374b  ST-Link Debug, USB 大容量存储设备, STMicroelectronics STL...  Not attached
> usbipd wsl attach -d Ubuntu-18.04 --busid 6-4
usbipd: warning: USB filter 'USBPcap' is known to be incompatible with this software; 'bind --force' will be required.# wsl2
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0483:374b STMicroelectronics ST-LINK/V2.1 (Nucleo-F103RB)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=vhci_hcd/8p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=vhci_hcd/8p, 480M|__ Port 1: Dev 3, If 0, Class=Vendor Specific Class, Driver=, 12M|__ Port 1: Dev 3, If 1, Class=Mass Storage, Driver=, 12M|__ Port 1: Dev 3, If 2, Class=Communications, Driver=cdc_acm, 12M|__ Port 1: Dev 3, If 3, Class=CDC Data, Driver=cdc_acm, 12M
$ ls /dev/ttyACM*
/dev/ttyACM0
# 短接RX/TX测试
$ sudo minicom -b 2000000 -D /dev/ttyACM0

给当前用户永久串口读写权限

一般操作 /dev 设备都需要 sudo, 如:

  • 串口设备 /dev/ttyUSB*, /dev/ttyS*, /dev/ttyACM* 等,
  • SPI设备: /dev/spidev*

如果不想用sudo

# 临时
sudo chmod 777 /dev/ttyUSB0# 永久
$ ls -l /dev/ttyUSB0
crwxrwxrwx 1 root root 188, 0 Jul 15 10:20 /dev/ttyUSB0
## 将当前用户加入188左边的root用户组, aG: append groups
$ sudo usermod -aG root $(whoami)
$ sudo reboot# 测试, 不需要sudo了
minicom -b 115200 -D /dev/ttyUSB0

直接编译进内核的方式

cd WSL2-Linux-Kernel-linux-msft-wsl-5.10.60.1
make menuconfig

按 / 搜索 ch34, cp210x, 2303 等, 直接编译进内核

编译内核

# make modules -j $(nproc)
# sudo make modules_install
make -j $(nproc)

关闭WSL2: wsl --shutdown, 把生成的 vmlinux 拷贝到 C:\Users\用户名\

配置 C:\Users\用户名\.wslconfig

[wsl2]
kernel=C:\\Users\\karoto\\vmlinux

重新打开WSL2, 把USB转串口附上去, 发现直接就识别了

# powershell(管理员)
> usbipd.exe wsl list
BUSID  VID:PID    DEVICE                                                        STATE
5-2    067b:2303  Prolific USB-to-Serial Comm Port (COM14)                      Not attached
> usbipd wsl attach -d Ubuntu-18.04 --busid 5-2# wsl2
$ ls /dev/ttyUSB*
/dev/ttyUSB0

Wireshark 抓USB/IP

抓一下 USB/IP 通信情况, 走的TCP, 用的是 3240 端口, 有ACK

dev 和 lsusb 的对应关系

区分实际设备, /dev/ttyUSB*, 和 lsusb 中的对应关系:

  • 同种设备, 两个PL2303, 这个确实不大好区分, 插拔等
  • 同类设备, PL2303 和 CH340, 这个好区分
$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 003: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 002: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub$ lsusb -t
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=vhci_hcd/8p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=vhci_hcd/8p, 480M|__ Port 1: Dev 2, If 0, Class=Vendor Specific Class, Driver=ch34x, 12M|__ Port 2: Dev 3, If 0, Class=Vendor Specific Class, Driver=pl2303, 12M|__ Port 3: Dev 4, If 0, Class=Vendor Specific Class, Driver=pl2303, 12M$ ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1  /dev/ttyUSB2# 如何确定哪个 /dev/ttyUSB* 是 CH340 呢 ?
$ find /sys/bus/usb/devices/usb*/ -name dev | grep ttyUSB
/sys/bus/usb/devices/usb1/1-3/1-3:1.0/ttyUSB2/tty/ttyUSB2/dev   # 1-3: |__ Port 3
/sys/bus/usb/devices/usb1/1-1/1-1:1.0/ttyUSB1/tty/ttyUSB1/dev   # 1-1: |__ Port 1
/sys/bus/usb/devices/usb1/1-2/1-2:1.0/ttyUSB0/tty/ttyUSB0/dev   # 1-2: |__ Port 2# ttyUSB1 是 CH340

参考:

  • Linux 绑定 ttyUSBn 串口方法。 - 九环 - 博客园 (cnblogs.com)
  • linux中tty和usb,ttyUSBn 与实际USB串口硬件的对应关系。_用户7430698457的博客-CSDN博客
  • 解决Linux下USB设备节点ttyUSB名不固定的问题,生成固定USB转串口设备节点_望天际的博客-CSDN博客_ttyusb

欢迎扫描二维码关注微信公众号, 及时获取最新文章:

WSL2 通过 USBIP 连接USB串口设备 JetsonUSB备份刷机相关推荐

  1. 【WSL2】配置连接 USB 设备并使用主机的 USB 摄像头

    [WSL2]配置连接 USB 设备并使用主机的 USB 摄像头 1 概述 2 安装 USBIPD-WIN 3 在 Linux 中安装 USBIP 工具和硬件数据库 4 附加 USB 设备 1 概述 先 ...

  2. i9300+imei丢失+三星原厂修复软件+连接三星认证服务器,I9300刷机后无信号 EFS错误等问题修复方法...

    我们在三星I9300刷机时由于错误的使用方法等等原因造成刷机之后各种故障问题,如:EFS 错误,无信号,IMEI改变等等!那么出现这些问题我们如何修复和解决了,下面就来为大家详细介绍! 三星I9300 ...

  3. 刷机显示服务器连接不上怎么办,完美刷机怎么连接不到云服务器

    完美刷机怎么连接不到云服务器 内容精选 换一换 对等连接创建完成后,两个VPC还是不能互通.以下排查思路根据原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因.如 ...

  4. 红米hm2a显示无法连接到服务器,红米HM2A刷机教程

    红米刷机教程 刷机教程 方法1:系统内升级 下载必要的文件,为刷机过程做准备. MIUI完整包跨版本升级.降级均需手动进入Recovery 清除全部数据. 下载 MIUI_ROM 最新安装包 立即下载 ...

  5. WSL2下的usb串口设备使用

    WSL2下的usb串口设备使用 最近在玩WSL2发现挺不错,于是就想把工作转移到里面来,可是,由于博主是做嵌入式的,而WSL2又不像WSL1支持串口,在这可能有人要问为什么不用WSL1,原因是WSL1 ...

  6. 【C#】Winform监听USB串口设备拔插

    [C#]Winform监听USB串口设备拔插 零.问题 最近在开发串口相关的软件,需要检测串口拔掉后主动关闭串口,因此需要检测到USB的拔插事件. 一.解决 在主窗口From类下覆盖WndProc方法 ...

  7. android连接usb后默认app,android – 记住USB连接,但不要启动应用程序

    我正在处理的应用程序通过USB连接成功连接设备. 但是,这会在连接USB设备时始终启动活动时产生不良影响.没有启动应用程序,我无法记住默认值.在连接上启动应用程序不是一个理想的效果.下面的小代码示例是 ...

  8. Parallels Desktop 16 网络初始化失败和不能连接USB设备解决方法

    Parallels Desktop 16 在最新的macOS Big Sur 11.0系统上无法联网,并且无法连接USB设备.之前解决联网的办法是在终端通过命令启动parallels desktop的 ...

  9. STM32单片机实现连接USB摄像头

    STM32单片机实现连接USB摄像头 如题,本人已经实现STM32连接基于Cypress CY7C68013A的摄像头电路板的方案,具体实现原理如下: 摄像头侧CY7C68013A硬件电路板连接被测试 ...

  10. 计算机usb无法识别网络连接,usb无法识别是什么原因 usb无法识别解决方法【详解】...

    导读:在这个信息十分发达的时代,几乎所有的人都拥有一个USB设备,USB设备是一种拥有USB接口的电子设备,我们可以通过USB数据线将USB设备和一些其他设备连接起来,然后再对其进行相应的操作,但是我 ...

最新文章

  1. 一句话就能让AI找到3A游戏Bug?准确率达86%,Demo在线可玩
  2. OpenNESS 的 5GC 融合实践
  3. 写了几天的软工课程设计,慢慢了解了点mvc
  4. mysql 多表查询实例讲解_mysql多表连接查询实例讲解
  5. ASP.NET Core 2.0 配置NLog日志组件
  6. c.语言 获取随机数,C 语言随机数获取
  7. 存储过程从入门到熟练(多个存储过程完整实例及调用方法)_AX
  8. 慕尼黑大学公开课 Competitive Strategy(竞争策略)总结
  9. 用cmd命令简单创建oracle 数据库、用户和表空间
  10. Watchman 的安装
  11. 极其艰难地下了决心建立博客虽然没有很好的理由或者仅仅是因为觉得自己的确要改变了......
  12. PLSQL Developer新手使用教程(图文教程)
  13. 卸载神器:geek(绝对好用,中国人不骗中国人)
  14. Python中用正则表达式搜索本地英汉词典,找到具有某种pattern的单词
  15. 三种迷宫算法(深度优先、随机Prim、递归分割)
  16. 物联网全栈教程(1)——总目录
  17. 视觉三维重建核心算法讲解和代码实现(sfm构建稀疏地图和mvs构建稠密地图)...
  18. MATLAB R2018b for Mac(数学分析软件)附matlab激活密钥
  19. Python案例1—人民币与美元的汇率兑换V_5.0
  20. 教学中常用的计算机软件及作用,信息技术教学中常用的教学方法有哪些

热门文章

  1. C++之父谈C++语言设计规则
  2. Panoramic Photography
  3. Unity 实现2D地面挖洞!涂抹地形
  4. photoshop涂抹工具
  5. ShareTechnote系列LTE(17):下行SCH/PCH/MCH信道编码
  6. 人体红外传感器HC-SR501使用指南
  7. kafka报错Error while fetching metadata with correlation
  8. JavaScript复习二
  9. 浅谈如何做好项目管理
  10. K8S Ingress的安装与使用