Linux那些事儿 之 戏说USB(5)我是谁
生活随笔
收集整理的這篇文章主要介紹了
Linux那些事儿 之 戏说USB(5)我是谁
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
我是誰?USB一遍一遍問著自己,當然它不會真的是一顆樹。USB只是Linux龐大家族里的一個小部落,host controller是它們的族長,族里的每個USB設備都需要被系統識別,被我們識別。雖然清朝老爺子們不知道閉關鎖國沒前途,可USB是知道的,sysfs就是它對外的窗口,我們可以從sysfs里了解認識每一個USB設備。
這是遵照花小錢做大事的原則從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設備當然有不同的配置了,或者說需要配置哪些東西也會不一樣。好了,關于配置,就說這么多,更多的我們暫時也不需要了解了。
生活是簡單的,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(4)
- 下一篇: Linux那些事儿 之 戏说USB(6)