USB驅動程式的載入 二

2021-06-14 01:11:23 字數 908 閱讀 8996

**:

---------------------

|       應用程式      |

---------------------

|usb client driver  |    (層一)

---------------------

|        usbd.dll     |    (層二)

---------------------

|        ohci.dll       |    (層三)

---------------------

wince的usb驅動分為三層,如上圖所示.從上到下,姑且將其稱為層一,層二,層三。層一通過gc_usbfuncs來呼叫層二所提供的功能,而層二通過gc_hcdfuncs來呼叫層三實現的功能,而應用程式則與層一打交道。

hcd初始化時,會建立乙個執行緒,chub::hubstatuschangethead().在此執行緒中,會監視usb口的狀態,如果有裝置插入,則有如下的呼叫步驟:

attachdevice()->cfunction::enteroperationalstate()->hcddeviceattached()->loaddevicedrivers()->loadusbclientdriver()->loadgroupdriver()->loadregisteredclientdriver().

cdevice::attachdevie()處理裝置的初始化,如讀裝置描述符,配置位址,載入client driver等。

在loadregisteredclientdriver()內,會根據不同的class,來呼叫相應的usbdeviceattach().而它的第乙個引數就是gc_usbfuncs.在issuevendortransfer()之類的函式中,有一引數lpcusb_funcs,該指標就是指向gc_usbfuncs.

USB裝置驅動程式載入流程

使用者插入usb裝置 usb匯流排 或者是pci匯流排,這個不太清楚,反正就是匯流排來著 識別到插入了usb裝置。匯流排和usb裝置進行通訊,獲取usb的硬體id 產品id,以及bcdversion。根據這些資訊組成裝置硬體id號 vid x pid x rev x。匯流排根據usb裝置的插槽位置,...

USB裝置驅動程式(二)

首先我們來看usb裝置描述符的結構 在usb匯流排識別裝置階段就將usb描述符傳送給了usb匯流排驅動程式,裝置的資料傳輸物件是端點,端點0是特殊端點,在usb匯流排驅動程式識別階段,本次通過usb滑鼠點選事件編寫乙個input子系統,從上一章主要實現了如何識別到有個usb裝置的驅動程式,本次,主要...

USB學習之二 USB匯流排驅動程式

usb匯流排驅動程式的作用 1.識別usb裝置 1.1 分配位址 1.2 並告訴usb裝置 set address 1.3 發出命令獲取描述符 描述符的資訊可以在include linux usb ch9.h看到 2.查詢並安裝對應的裝置驅動程式 3.提供usb讀寫函式 將乙個usb裝置接到開發板上...