标题:
Linux那些事儿 之 戏说USB(9)我是谁
[打印本页]
作者:
bingchentiao
时间:
2013-5-21 20:06
标题:
Linux那些事儿 之 戏说USB(9)我是谁
我是谁?尼采一遍一遍的问着自己当了哲学家。
我是谁?很多人一遍一遍的问着自己做了精神病人。
我是谁?USB也一遍一遍问着自己,当然它不会真的是一颗树,它也不会是太阳,Linux里没有太阳,真要有的话也只能是Linus。USB只是Linux庞大家族里的一个小部落,host controller是它们的族长,族里的每个USB设备都需要被系统识别,被我们识别。虽然清朝老爷子们不知道闭关锁国没前途,可USB是知道的,sysfs就是它对外的窗口,我们可以从sysfs里了解认识每一个USB设备。
生活是简单的,USB是复杂的。USB设备在sysfs中的表示并不是那么明了,它不叫张三也不叫李四,因为它姓USB,不过我们可以使用tree命令查看一下
这是遵照花小钱做大事的原则从
ldd3
里拿出来的,懒得再去查了,毕竟结果都差不多。上面显示的是包含一个
USB
接口的
USB
鼠标导出的结果。目录树里的
/sys/devices/pci0000:00/0000:00:09.0/usb2/2-1
表示的是鼠标,下层目录
/sys/devices/pci0000:00/0000:00:09.0/usb2/2-1/2-1:1.0
表示了鼠标的
USB
接口。
Sysfs
里的
usb
设备都是类似的表示,设备的目录下包括了表示设备接口的目录。目录里的各个文件表示的设备或接口的描述,大都对应了设备描述符、接口描述符等的相应值,可以通过这些值获得感兴趣的信息。新名词就像任小强的理论一样层出不穷,什么是设备描述符还有接口描述符?不过我们这里要暂时忽略它的存在,先关心关心
USB
设备在
sysfs
里是如何命名的,弄清它是谁,也就是说上面路径的含义。
USB
系统中的第一个
USB
设备是
root hub
,前面已经说了它是和
host controller
绑定在一起的。这个
root hub
通常包含在
PCI
设备中,是连接
PCI
总线和
USB
总线的
bridge
,控制着连接到其上的整个
USB
总线。所有的
root hub
,内核的
usb core
都分配有独特的编号,上面贴出来的例子里,就是
usb2
,因为它注册在第二个
hub
。
USB
总线上的每个设备都以
root hub
的编号作为其名字的第一个号码。这个号码后跟着一个“
-
”字符还有设备所插入的端口号。因此,上面例子中的
USB
鼠标的设备名就是
2-1
。因为该
USB
鼠标具有一个接口,导致了另外一个
USB
设备被添加到
sysfs
路径中。因为物理
USB
设备和单独的
USB
接口在
sysfs
中都将表示为单独的设备。
USB
接口的命名是设备名直到该接口,上面就是
2-1
后面跟一个“
:
”和
USB
配置(
Configuration
)的编号,然后是一个“
.
”和该接口的编号。因此上面的鼠标
USB
接口就是
2-1:1.0
,表示使用第一个配置,接口编号为
0
。
不过,
sysfs
并没有展示
USB
设备的所有部分,设备可能包含的可选配置都没有显示,不过这些可以通过
usbfs
找到,该文件系统被挂在到
/proc/bus/usb
目录,从
/proc/bus/usb/device
文件可以直到系统中存在的所有
USB
设备的可选配置。
这里说到了
USB
设备的配置,有必要先说一下,还是花小钱做大事,直接拿复旦人甲兄弟的描述了。一个设备可以有一种或者几种配置,这能理解吧?没见过具体的
usb
设备?那么好,手机见过吧,每个手机都会有多种配置,或者说“设定”,比如,我的这款,
Nokia6300
,手机语言,可以设定为
English
,繁体中文,简体中文,一旦选择了其中一种,那么手机里边所显示的所有的信息都是该种语言
/
字体。还有最简单的例子,操作模式也有好几种,标准,无声,会议,
etc
。基本上如果我设为“会议”,那么就是只振动不发声,要是设为无声,那么就啥动静也不会有,只能凭感觉了,以前去公司面试的话通常就是设为无声,因为觉得振动也不好,让人家面试官听到了还是不合适。那么
usb
设备的配置也是如此,不同的
usb
设备当然有不同的配置了,或者说需要配置哪些东西也会不一样。好了,关于配置,就说这么多,更多的我们暂时也不需要了解了。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0