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,还有一个好处:只要操作
相关文档:
总览
用iptables -ADC 来指定链的规
则
,-A添加 -D删除 -C 修改
iptables - [RI] chain rule num rule-specification[option]
用iptables - RI 通过规则的顺序指定
iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]
iptables -[NX] chain
用 -NX ......
很多LINUX初学者分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系.常常混淆概念,我想以比较易于理 解的方式说明一下X,X11,XFREE,WM,KDE,GNOME等之间的关系.由于本人水平有限可能存在错误,请高手指正.
一,linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的.
图 形界面并不是 ......
<1> 任务0的堆栈问题
一直不明白schedule.c里的task_union的stack和user_stack是什么关系,head.s里就设置了esp指向user_stack, 却一直没有用到task_union,直到看到INIT_TASK才明白,从进入保护模式到跳转进用户态都是用的user_stack这个栈,而任务0的tss中的esp0指向task_union的stack, 也就是当任务0再跳转进内核 ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
A:link { so-language: zxx }
-->
当今,
Linux
桌面到宣传与普及应该进入一个新时期。何故?
今年
4
月
29
日,
Ubuntu
10.04
发布是在
Linux
桌面发展历史上的一个 ......