linux usb应用程序开发,linux 平台应用程序怎么样通过USB控制

(1)用户模式USB

usbfs虚拟文件系统允许从用户空间以原始方式访问USB设备。usbfs通常挂载在/proc/bus/usb/上,usbfs树包含了系统中与每个USB控制器(或总线)对应的目录,每个目录依次包含了与该总线上的USB设备相对应的结点。

为了更好地理解usbfs,我们看一下包含英特尔ICH4南桥芯片组的系统。USB控制器是PC系统中南桥芯片组的1部分。ICH4支持1个USB EHCI(高速USB 2.0)控制器和3个USB UHCI控制器,我们称EHCI控制器为bus1,3个UHCI控制器分别为bus2、bus3和bus4。现在假设系统只有2个物理USB端口,它们与bus3 相应的UHCI控制器连接。

我们将一个全速尼康数码相机和高速希捷USB 2.0硬盘连接到系统上的2个USB。先看一下/proc/bus/usb/devices,找到相关入口:

bash> ls –lR /proc/bus/usb/devices

T: Bus=03 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 5 Spd=12 MxCh= 0

D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=04b0 ProdID=0205 Rev= 1.00

S: Manufacturer=NIKON

S: Product=NIKON DSC E5200

S: SerialNumber=2507597

C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA

I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50

Driver=usb-storage

E: Ad=01(O) Atr=02(Bulk) MxPS= 64 Ivl=0ms

E: Ad=82(I) Atr=02(Bulk) MxPS= 64 Ivl=0ms

T: Bus=01 Lev=01 Prnt=01 Port=02 Cnt=01 Dev#= 12 Spd=480 MxCh= 0

D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1

P: Vendor=0bc2 ProdID=0501 Rev= 0.01

S: Manufacturer=Seagate

S: Product=USB Mass Storage

S: SerialNumber=000000062459

C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 0mA

I: If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50

Driver=usb-storage

E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms

E: Ad=88(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms

(2)libusb。与插入设备相应的usbfs文件包含了相关的USB设备及配置描述符。在前面的例子中,读取/proc/bus/usb/003/003

可获得相机的描述符信息,读取/proc/bus/usb/001/007可获得硬盘描述符信息。但管理usbfs文件并不是那么简单的,因为设备文件名在设备拔出后需要重新使用。解决办法是用libusb库,它封装使用usbfs。使用libusb而不直接操作usbfs,还有一个好处:只要操作

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值