USB裝置的一些概念

2021-04-16 23:07:47 字數 1533 閱讀 7670

每個usb裝置有乙個或多個配置來控制其行為;每個配置中都含有乙個或多個介面;裝置的介面具有乙個或多個端點,每個usb裝置在主機看來就是一些端點的結合,提取乙個端點的位址、緩衝區長度、資料傳輸方向、類別等資訊,就把乙個端點封裝成乙個管道,利用這個管道控制代碼就可以實現主機與乙個記憶體緩衝區和裝置多個端點之間的資料傳輸。

usb通訊模型,它表明了端點和管道所扮演的角色。整個模型分為

3級結構:在最低一級,

usb電纜把主控制器與裝置的匯流排介面連線起來;在第二級,乙個控制管道把系統軟體與邏輯裝置連線起來;在第**,一捆資料管道把客戶軟體與一組介面連線起來,這些介面組成裝置的功能.

descriptor

是描述符,並儲存在usb裝置中,用於描述乙個usb裝置的所有屬性,usb主機是通過一系列命令(即urb)要求裝置傳送這些資訊. 描述附共有如下:

1——裝置描述符

2——配置描述符

struct _configuration_descriptor_struct

3——字元描述符

4——介面描述符

struct _inte***ce_descriptor_struct

5——端點描述符;

struct _endpoin_descriptor_struct

描述符之間的關係,乙個裝置只有乙個裝置描述符,而乙個裝置描述符可以包含多個配置描述符,而乙個配置描述符可以包含多個介面描述符,乙個介面使用了幾個端點,就有幾個端點描述符。

wdm驅動程式模型中的每個硬體裝置都有兩個驅動:功能驅動和匯流排驅動。功能驅動了解使硬體工作的所有細節,負責初始化i/o操作,處理i/o操作完成時所帶來的中斷事件,為使用者提供一種裝置適合的控制方式; 匯流排驅動程式(usb driver,usbd)負責管理硬體與計算機的連線,實現繁瑣的底層通訊。匯流排驅動包括主控制器驅動程式(openhci.sys或者uhcd.sys),hub驅動程式(usbhub.sys),乙個由控制器驅動程式使用的類驅動程式(usbd.sys)和發現usb主控制器並會裝入相關功能驅動程式。

usb裝置驅動程式通過傳送urb(usb request block)和irp(i/o request packet)來使用匯流排驅動並完成對物理硬體的操作。裝置驅動會建立乙個urb並提交到匯流排驅動程式usbd.sys,這樣,向usbd的呼叫被轉化為帶有主功能**為irp_mj_internal_device_control的irp。然後usbd再排程匯流排時間,發出urb中指定的操作,完成收發資料報請求。

usb

驅動程式是繫結到

usb

介面上,而不是繫結到整個

usb裝置上。

驅動程式物件與裝置物件的關係

:一方面

, 驅動程式物件通常有多個與它相關的裝置物件,因此它利用

deviceobject

指標指向乙個裝置物件列表,該列表表示驅動程式可以控制的物理裝置

;另一方面

, 裝置物件反過來指向它自己的驅動程式物件

, 這樣

i/o管理器就知道在接收乙個

i/o請求時應該呼叫哪個驅動程式。每個功能碼都對應乙個驅動程式的入口點.

USB匯流排協議中的一些基本概念

usb匯流排協議中經常會遇到一些概念,自己總結了下,講基本的概念進行描述 1.usb系統模型 usb實際上是乙個資料通訊協議,由幾個大公司定義的。usb系統由兩部分組成,usb主機和usb裝置,平常看到的usb主機就是整合在pc上的usb口 usb裝置就是我們連線在pc上的裝置,如u盤。其中usb裝...

USB相關的一些術語

ohci open host controller inte ce 開放主機控制介面 uhci universal howt controller inte ce 通用主機控制介面 ehci enhanced host controller inte ce 增強型主機控制介面 xhci extens...

02 關於裝置號,裝置節點等一些簡單概念

1,裝置 linux檔案系統 dev 下通常存放了一系列裝置名稱。對裝置的訪問,即訪問這些檔案。ls l dev 能看到這些裝置的一些基本資訊。如下圖所示 了解過linux下檔案型別的小夥伴應該對哪些是字元裝置 塊裝置不會感到陌生了。bcd lsp分別是塊 字元 目錄 普通 鏈結 套接字 管道 ro...