欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

USB驱动之USB网络共享

程序员文章站 2022-06-03 21:16:34
...

一 编译USB/IP组件

USB/IP组件包含两部分:USB/IP协议栈和USB/IP驱动模块

USB/IP协议栈源码位于linux_kernel/tools/usb/usbip

USB/IP驱动模块位于linux_kernel/drivers/usb/usbip

1.

  1. 1.1编译USB/IP协议栈

1 进入USB/IP协议栈目录

cd linux_kernel/tools/usb/usbip

2 执行如下命令,生成configure

./autogen.sh

打印信息如下图1所示:

                     图1

3 执行如下命令,生成Makefile

./configure --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf --prefix=/home/quan/Desktop/usbip

4 编译并且安装USB/IP协议栈

make; make install

USB/IP协议栈如下图2所示:

           图2

1.2 编译USB/IP驱动模块

1 执行如下命令,选择USB/IP驱动模块

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

依次选择Device Drivers -> USB support -> USB/IP support

2 执行如下命令,编译USB/IP驱动模块

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules

编译成功后生成3个驱动模块,如下所示:

drivers/usb/usbip/usbip-core.ko

drivers/usb/usbip/usbip-host.ko

drivers/usb/usbip/vhci-hcd.ko

二 测试USB/IP组件

服务器执行如下步骤,开启USB网络共享

1 加载服务器驱动

insmod usbip-core.ko

insmod usbip-host.ko

2 启动usbipd后台程序

usbipd –D

3 扫描连接的USB设备

usbip list -l

注意:

I 确保服务器端已连接USB设备

II 请忽略错误信息:failed to open /usr/share/hwdata//usb.ids

4 共享USB设备给客户端

usbip bind --busid 3-1

为了防止数据冲突,共享USB设备后,服务器会卸载该USB设备

5 关闭USB网络共享

usbip unbind --busid 3-1

客户端执行如下步骤,绑定USB设备

1 加载客户端驱动

insmod usbip-core.ko

insmod vhci-hcd.ko

2 扫描服务器USB设备

usbip list --remote 192.168.0.227

注意:

请忽略错误信息failed to open /usr/share/hwdata//usb.ids

3 绑定服务器USB设备

usbip attach --remote 192.168.0.227 --busid 3-1.1

4 列出当前绑定的USB设备,然后解除绑定

usbip port

usbip detach --port 0

转载于:https://blog.51cto.com/jiangniu/2084461