Linux那些事儿 之 戏说USB(5)我是谁
我是谁?USB一遍一遍问着自己,当然它不会真的是一颗树。USB只是Linux庞大家族里的一个小部落,host controller是它们的族长,族里的每个USB设备都需要被系统识别,被我们识别。虽然清朝老爷子们不知道闭关锁国没前途,可USB是知道的,sysfs就是它对外的窗口,我们可以从sysfs里了解认识每一个USB设备。
生活是简单的,USB是复杂的。USB设备在sysfs中的表示并不是那么明了,不过我们可以使用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找到,该文件系统被挂在到/sys/bus/usb目录,从/sys/bus/usb/devices 文件可以直到系统中存在的所有USB设备的可选配置。
这里说到了USB设备的配置,有必要先说一下,还是花小钱做大事,直接拿复旦人甲兄弟的描述了。一个设备可以有一种或者几种配置,这能理解吧?没见过具体的usb设备?那么好,手机见过吧,每个手机都会有多种配置,或者说“设定”,比如,我的这款,Nokia6300,手机语言,可以设定为English,繁体中文,简体中文,一旦选择了其中一种,那么手机里边所显示的所有的信息都是该种语言/字体。还有最简单的例子,操作模式也有好几种,标准,无声,会议,etc。基本上如果我设为“会议”,那么就是只振动不发声,要是设为无声,那么就啥动静也不会有,只能凭感觉了,以前去公司面试的话通常就是设为无声,因为觉得振动也不好,让人家面试官听到了还是不合适。那么usb设备的配置也是如此,不同的usb设备当然有不同的配置了,或者说需要配置哪些东西也会不一样。好了,关于配置,就说这么多,更多的我们暂时也不需要了解了。
Linux那些事儿 之 戏说USB(5)我是谁相关推荐
- Linux那些事儿 之 戏说USB(3)我是一棵树
从拓扑上来看,USB子系统并不以总线的方式来部署,它是一颗由几个点对点的连接构成的树. 它主要包括了USB连接.USB host controller和USB device三个部分.而USB devi ...
- Linux那些事儿 之 戏说USB(19)设备
转载地址:http://blog.csdn.net/fudan_abc/article/details/1807800 第一眼看到struct usb_device这个结构,我仿佛置身于衡山路的酒吧里 ...
- 【转】Linux那些事儿 之 戏说USB(19)设备
第一眼看到struct usb_device这个结构,我仿佛置身于衡山路的酒吧里,盯着舞池里扭动的符号,眼神迷离. 交大里苟了几年,毕业了又是住在学校附近的徐虹北路上,沿着虹桥路走过去,到徐家汇不过1 ...
- Linux那些事儿 之 戏说USB(33)字符串描述符
关于字符串描述符,前面的前面已经简单描述过了,地位仅次于设备/配置/接口/端点四大描述符,那四大设备必须得支持,而字符串描述符对设备来说则是可选的. 这并不是就说字符串描述符不重要,对咱们来说,字符串 ...
- Linux那些事儿 之 戏说USB(25)设备的生命线(八)
回到struct usb_hcd,继续努力的往下看. 7行,又见kref,usb主机控制器的引用计数.struct usb_hcd也有自己专用的引用计数函数,看drivers/usb/core/hcd ...
- Linux那些事儿 之 戏说USB(22)设备的生命线(五)
下面接着看那三个基本点. 第一个基本点,usb_alloc_urb函数,创建urb的专用函数,为一个urb申请内存并做初始化,在drviers/usb/core/urb.c里定义. struct ur ...
- Linux那些事儿 之 戏说USB(大结局)还是那个match
从上次在几米的向左走向右走遇到usb总线的那个match函数usb_device_match()开始到现在,遇到了设备,遇到了设备驱动,遇到了接口,也遇到了接口驱动,期间还多次遇到usb_device ...
- Linux那些事儿 之 戏说USB(28)设备的生命线(十一)
现在已经使用GET_DESCRIPTOR请求取到了包含一个配置里所有相关描述符内容的一堆数据,这些数据是raw的,即原始的,所有数据不管是配置描述符.接口描述符还是端点描述符都彼此的挤在一起,所以得想 ...
- Linux那些事儿 之 戏说USB(27)设备的生命线(十)
跟着设备的生命线走到现在,我算是明白了,什么东西的发展都是越往后越高级越复杂.再给张小表,看看现在和上次那张表出现的时候有什么变化. state USB_STATE_ADDRESS sp ...
最新文章
- 独家 | 教你用不到30行的Keras代码编写第一个神经网络(附代码教程)
- static在内存层面的作用_「C++ Primer plus 心得」9.内存模型和名称空间
- windows下 Qt 静态编译
- R语言应用实战-基于R浅谈SEIR传染病模型以以及马尔萨斯,logistic模型(推导过程和源代码)
- nebula注释符号
- mysql提取各种数据时间的各种方法
- jQuery——子元素筛选器
- 苹果CMS V10 播放记录_苹果cms采集后无法播放怎么解决?
- camelCase骆驼拼写法
- sniffer辅助功能详解
- 2009无线通信五大趋势 3G范围将覆盖全球
- Oracle安装详细教程
- office图标修复工具_超好用的流程图绘图工具你还没get吗?
- Day2-开发环境搭建——百问网7天物联网智能家居
- ubuntu服务器lxde桌面,LXDE桌面环境简介
- STM32单片机热敏打印自助排队叫号系统银行医院柜台DY-SV17F语音播报
- 电商设计的文字的选择与排版
- 深层学习:心智如何超越经验3.1 创造性问题
- iTextSharp 使用详解(转) 感谢原著作者
- 【工具】hadoop国内下载镜像
热门文章
- HarmonyOS 怎样打印log/日志的打印
- Java 打印数组的方法
- baseUrl must end in /: http://v.juhe.cn/toutiao/index
- pyhton re模块
- Pandas 基础 (4)—— 汇总和计算描述统计
- 解决xcode ***is missing from working copy
- CodeForces Round #287 Div.2
- 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...
- Expect 教程中文版
- Codeforces Beta Round #95 (Div. 2) 部分解题报告 (dp,组合数,)