USB驅動架構

2021-06-19 05:38:11 字數 1287 閱讀 9237

二、usb驅動架構

在wince中做usb相關的東西,首先要弄清一些概念,這非常關鍵。

1. host與function

首先要知道usb是主從結構的。拿pc和手機來說,pc端是主端,叫做host,手機是從端,通常叫做client。但是在wince中這個術語發生了變 化,主端還是叫host,而從端叫做function。因此對應的驅動分別叫做usb host driver及usb function driver。這裡要記住了host與function對應,而不是client,client在後面會提到。

2. controller與client

拿wince裝置來說,它不像u盤那樣功能單一,實質上就是乙個mass storage裝置,wince裝置跟pc用usb線連線時可以表現為多種形式,可以是一種大容量儲存器(mass storage),還可以表現為乙個網絡卡(rndis),還可以表現成乙個串列埠裝置(serial class),所以需要乙個控制系統,wince把這部分分離了出來,做成一層驅動,叫做controller(控制器),由該層驅動來控制wince設 備到底表現成一種什麼形態。

然後,在controller上層是client層,常用的三大類:mass storage、rndis、serial。當wince裝置需要表現成哪種形態,就由controller驅動轉換(解除安裝舊client、載入新client)。

前面說了裝置端叫做function,所以全稱分別是:usb function controller driver、usb function client driver。

實際上host端也是有controller層的,這裡沒研究,(因為host端驅動(pc端)微軟作業系統都寫好了),猜測當裝置端表現出不同形式時,pc端也要表現出不同的形式與之對應,所以也需要有控制器。

3. 由此一來,usb驅動架構就出來了,見下圖。

4. 前面說過有的wince驅動分為pdd、mdd兩部分,這裡usb function controller driver便是如此架構。mdd部分微軟已實現,拿windows mobile來說,原始碼e:/wm615/public/common/oak/drivers/usbfn/controller/mdd   一般硬體的bsp提供商負責提供pdd部分,controller驅動是針對裝置上usb匯流排的。

usb function client driver分為:mass storage、rndis、serial,微軟也已經實現。

原始碼在 e:/wm615/public/common/oak/drivers/usbfn/class下。

USB驅動 USB列舉

一 列舉詳細過程 usb主機在檢測到usb裝置插入後,就要對裝置進行列舉了。為什麼要列舉呢?列舉就是主機host從裝置讀取一些資訊,知道裝置是什麼樣的裝置,如何進行通訊,這樣主機就可以根據這些資訊來載入合適的驅動程式。除錯usb裝置,很重要的一點就是usb的列舉過程,只要列舉成功了,那麼就已經成功大...

USB驅動初探

調了n久68013,最後還是放棄了,使用stm32的usb 調到驅動,建立驅動環境,win7調驅動總感覺格格不入,在xp下建立開發環境 vc6,xpddk 2600,driverstudio 3.2 先安裝vc6,安裝ddk,最後安裝driverstudio 安裝完後,開啟vc6,設定ddk bui...

USB裝置驅動

1.linux usb架構 usb通訊都是由host端發起的。usb裝置驅動程式分配並初始化乙個urb發給usb core,usb core改一改,發給usb主機控制器驅動,usb主機控制器驅動把它解析成包,在匯流排上進行傳送。usb core是由核心實現的,其實也就是把host control d...