linux查看并口设备,如何在LINUX下实现硬件的自动检测(下)
本文是《如何在LINUX下實現硬件的自動檢測》一文的下部分,作者將繼續向我們講述如何自動檢測另外幾種總線類型硬件設備。
5 .USB設備的自動檢測
5.1 USB設備檢測的一般過程
USB設備檢測也是通過/proc目錄下的USB文件系統進行的。為了使一個USB設備能夠正常工作,必須要現在系統中插入USB橋接器模塊。在檢測開始時,一般要先檢測是否存在/proc/bus/usb目錄,若不存在則嘗試插入USB橋接模塊。
現在一般的USB橋接器模塊有兩種類型,UHCI和OHCI。在決定插入那一個橋接器模塊時,可以察看/proc/pci文件來決定。打開此文件,您若發現USB節為 I/O at 0xHHHH格式(例如出現 I/O at 0xe000 [0xe01f]),HHHH為16進制數,則橋接器類型為UHCI。若是它為32 bit memory at 0xHH000000形式(例如出現32 bit memory at 0xee000000),HH為16進制數,則橋接器類型為OHCI。但是若您的橋接器類型不滿足上述任何一種情況,唯一的解決辦法就是您嘗試插入這兩種模塊,直到成功為止。一般而言,UHCI類型的橋接器它的插入模塊是uhci或usb-uhci(由內核版本決定);而對于OHCI類型的橋接器它的插入模塊是ohci或usb-ohci。
您在正確的插入了橋接器模塊之后,這時/proc文件系統下就會出現USB設備目錄,不過這時這個目錄是空的,沒有任何文件。這時您就必須掛接usbdevfs文件系統,然后通過此文件系統檢測連接的設備。在成功掛接usb文件系統之后,就會生成文件/proc/bus/usb/devices,/proc/bus/usb/drivers和目錄/proc/bus/usb/busNo。掛接usbdevfs文件您可以通過如下操作實現:
mount -t usbdevfs none /proc/bus/usb
或在/etc/fstab上加入
none /proc/bus/usb usbdevfs defaults 0 0
然后通過/proc/bus/usb/devices文件的內容,您就可以獲得連接的設備信息,包括設備標識和制造商標是等信息。
usb設備類型描述:
設備規范 設備類碼 接口類碼
應用程序特定 - 0xFE
聲音接口 0x00 0x01
通信設備 0x02 -
CDC控制接口e - 0x02
CDC數據接口 - 0x0A
HID 0x00 0x03
HUB 0x09 0x09
批量設備 0x00 0x08
監視器 same as HID same as HID
電源設備 same as HID same as HID
物理設備 - 0x05
打印機 - 0x07
供應商特定 - 0xFF
表5-1 usb設備類碼
5.2 usb文件系統簡介
T = 總線拓撲結構(Lev, Prnt, Port, Cnt, 等),是指USB設備和主機之間的連接方式
B = 帶寬 (僅用于USB主控制器)
D = 設備描述信息
P = 產品標識信息
S = 串描述符
C = 配置描述信息 (* 表示活動配置)
I = 接口描述信息
E = 終端點描述信息
一般格式:
d = 十進制數
x = 十六進制數
s = 字符串
拓撲信息
T: Bus=dd Lev=dd Prnt=dd Port=dd Cnt=dd Dev#=ddd Spd=ddd MxCh=dd
| | | | | | | | |__最大子設備
| | | | | | | |__設備速度(Mbps)
| | | | | | |__設備編號
| | | | | |__這層的設備數
| | | | |__此設備的父連接器/端口
| | | |__父設備號
| | |__此總線在拓撲結構中的層次
| |__總線編號
|__拓撲信息標志
帶寬信息
B: Alloc=ddd/ddd us (xx%), #Int=ddd, #Iso=ddd
| | | |__同步請求編號
| | |__中斷請求號
| |__分配給此總線的總帶寬
|__帶寬信息標志
設備描述信息和產品標識信息
D: Ver=x.xx Cls=xx(s) Sub=xx Prot=xx MxPS=dd #Cfgs=dd
P: Vendor=xxxx ProdID=xxxx Rev=xx.xx
D: Ver=x.xx Cls=xx(sssss) Sub=xx Prot=xx MxPS=dd #Cfgs=dd
| | | | | | |__配置編號
| | | | | |______缺省終端點的最大包尺寸
| | | | |
| | | | |__設備
| | | |__設備子類型
| | |__設備類型
| |__設備USB版本
|__設備信息標志編號#1
P: Vendor=xxxx ProdID=xxxx Rev=xx.xx
| | | |__產品修訂號
| | |__產品標識編碼
| |__制造商標識編碼
|__設備信息標志編號#2
串描述信息
S: Manufacturer=ssss
| |__設備上讀出的制造商信息
|__串描述信息
S: Product=ssss
| |__設備上讀出的產品描述信息,對于USB主控制器此字段為"USB *HCI Root Hub"
|__串描述信息
S: SerialNumber=ssss
| |__設備上讀出的序列號,對于USB主控制器它是一個生成的字符串,表示設備標識
|__串描述信息
配置描述信息
C: #Ifs=dd Cfg#=dd Atr=xx MPwr=dddmA
| | | | |__最大電流(mA)
| | | |__屬性
| | |__配置編號
| |__接口數
|__配置信息標志
接口描述信息(可為多個)
I: If#=dd Alt=dd #EPs=dd Cls=xx(sssss) Sub=xx Prot=xx Driver=ssss
| | | | | | | |__驅動名
| | | | | | |__接口
| | | | | |__接口子類
| | | | |__接口類
| | | |__中斷點數
| | |__可變設置編號
| |__接口編號
|__接口信息標志
終端點描述信息
E: Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms
E: Ad=xx(s) Atr=xx(ssss) MxPS=dddd Ivl=dddms
| | | | |__間隔
| | | |__終端點最大包尺寸
| | |__屬性(終端點類型)
| |__終端點地址(I=In,O=Out)
|__終端點信息標志
舉個例子,這是在連接了一個USB鍵盤時的配置情況。
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2
B: Alloc= 41/900 us ( 5%), #Int= 3, #Iso= 0
D: Ver= 1.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=0000 ProdID=0000 Rev= 0.00
S: Product=USB UHCI Root Hub
S: SerialNumber=e000
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=255ms
T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=12 MxCh= 3
D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=07e4 ProdID=a961 Rev= 0.01
S: Manufacturer=ALCOR
S: Product=Movado USB Keyboard
C:* #Ifs= 1 Cfg#= 1 Atr=e0 MxPwr=100mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub
E: Ad=81(I) Atr=03(Int.) MxPS= 1 Ivl=255ms
T: Bus=01 Lev=02 Prnt=02 Port=00 Cnt=01 Dev#= 3 Spd=12 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=07e4 ProdID=a961 Rev= 0.01
S: Manufacturer=ALCOR
S: Product=Movado USB Keyboard
C:* #Ifs= 2 Cfg#= 1 Atr=e0 MxPwr= 0mA
I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=01 Driver=hid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl= 10ms
I: If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=hid
E: Ad=82(I) Atr=03(Int.) MxPS= 4 Ivl=255ms
它的物理拓撲可用下圖來表示:
對于Linux下的usb設備而言,T:(總線拓撲)行用于生成連接在hub上的設備的描述信息,I:(接口信息)行可用于決定每個設備所用的驅動程序,C:(配置信息)可用于列出設備使用最大電流。
對于Linux下的usb設備,您可以訪問獲取更詳細的信息。
6 并行設備的自動檢測
6.1 并行設備檢測的一般過程
在Linux下要實現連接在并口上的設備檢測,要求設備必須是支持IEEE 1284的。對于不支持IEEE 1284通訊協議的并行設備,是無法完成自動檢測的。同樣在定制系統內核時,也必須在并行端
【責編:admin】
--------------------next---------------------
總結
以上是生活随笔為你收集整理的linux查看并口设备,如何在LINUX下实现硬件的自动检测(下)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 修改linux下全局数据库名,linux
- 下一篇: linux 没有线程的,,Linux 到