日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux查看并口设备,如何在LINUX下实现硬件的自动检测(下)

發布時間:2025/3/15 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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下实现硬件的自动检测(下)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。