USB裝置驅動程式導讀 1

2021-08-22 13:58:32 字數 1157 閱讀 4566

隨著usb裝置的不斷增加,我們這些開發人員也就多了對usb裝置進行驅動程式開發的工作。但是對於很多初學者來說,存在以下三個困難:

一是對wince的驅動程式結構了解得太少,沒辦法得心應手的專注於驅動程式的開發工作;

二是對wince自帶的usb驅動程式的例子沒有弄懂,看到一大堆資料夾結構和源程式思維混亂;

三是幾乎沒有什麼中文的參考資料,不知如何下手。

第三條是很多開發人員都遇到的,我也一樣,很多朋友問我有沒有什麼資料,我也只能說抱歉,因為我也同樣有這個問題,一切都靠自己的黑暗中摸索,因此本文不談第三條。

第一條是可以找到資料的,如《windows ce .net系統分析及實驗教程》,因此本文也不打算在此花費大量筆墨。

這樣,本文的著重點就在第二條上面了,通過本文,我希望能讓更多的朋友理解windows ce下對usb裝置的驅動模型及樣例程式中的實現過程,以樣例**為基礎理順usb裝置驅動程式的開發思路。同樣,本文的讀者物件預期是入門者和準備著手usb驅動開發的人員,驅動開發高手自然就當一笑吧。同時寫本文的目的也是履行我半年前答應很多朋友的諾言,並向我的慵懶致歉。

好了,在看樣例程式之前,我們還有些東西需要了解,我們就先來看下圖:

在此圖中,我們可以非常清晰的看到主機和物理外設之間的結構方式,在主機端,通過usbd模組和hcd模組使用預設的pipe訪問乙個通用的邏輯裝置,實際上就是說usbd和hcd是一組抽象出來的訪問所有usb裝置的邏輯介面,它們負責管理所有usb裝置的連線、載入、移除、資料傳輸和通用的配置。其中hcd是主機控制驅動,是為usbd提供底層的功能訪問服務,usbd是usb匯流排驅動,位於hcd的上層,利用hcd的服務提供較高層次抽象的功能。

由於hcd和usbd都是面向的一致的邏輯裝置介面,那麼對於各種各樣的物理裝置,就需要有唯一對應的裝置驅動程式,這就是上圖中最上層的特殊的pipe所連線的物理裝置和usb裝置驅動程式。

有了對這個結構的認識,我們可以明確的是我們要寫的就是最上端的usb裝置驅動程式,在wince的樣例程式中也稱為usb client driver,它是工作於usbd之上,所以實際上我們的工作就變成了利用usbd提供的介面針對特定的物理裝置來完成usb裝置驅動程式,而暫時與其他的部分無關。

好了,先到這,接下來就準備看一些具體的東西吧!

USB裝置驅動程式導讀

隨著 usb裝置的不斷增加,我們這些開發人員也就多了對 usb裝置進行驅動程式開發的工作。但是對於很多初學者來說,存在以下三個困難 一是對wince 的驅動程式結構了解得太少,沒辦法得心應手的專注於驅動程式的開發工作 二是對wince 自帶的usb 驅動程式的例子沒有弄懂,看到一大堆資料夾結構和源程...

USB裝置驅動程式導讀 2

接下來,我們就來分析一下ce中的樣例程式,我用的是4.2版本的,所以下面的內容是4.2版本中的程式。這裡的程式是通過資料夾的形式組織在一起的,所以我們還是像以前學習ce的時候那樣,先來了解與此相關的資料夾結構,如下圖。在usb資料夾下,分成了class,clients,common,hcd,inc,...

USB裝置驅動程式導讀 8

帶著上次留下的疑問,我們繼續來學習作業系統如何通過usbdisk讀寫usb裝置的。我們先看usb class storage disk scsi2 usbdisk6.def檔案。在這個檔案中可以看到,該dll一共匯出了14個函式,其中兩個是上次內容當中被裝置驅動程式呼叫的usbdiskattach和...