學習
WinCE
下的
USB
驅動幾天了,有了一個總體的瞭解,這裏對網上的資料和我的的理解作一個總結。軟件平臺是
WinCE6.0
,硬件平臺是
S
3C
6410
。
1
、
WinCE
設備的三種角色
USB
是主從結構,分爲主端和從端。通常主端稱爲
Host
,從端稱爲
Client
,可是在
WinCE
系統中有些不一樣,主端稱爲
Host
,從端稱爲
Function
。
對於
USB
而言,搭載
WinCE
系統的嵌入式設備能夠扮演三種不一樣的角色,即三種不一樣的功能:
Host
、
Function
以及
OTG
。
WinCE
設備常常會外接各類
USB
設備,如
RNDIS
、
Print
、
Mass Storage
和
HID
設備等,此時做爲主端使用,實現的是
Host
功能。
當
WinCE
設備鏈接
PC
機時,即是做爲從端使用,實現的是
Function
的功能。但此時
WinCE
設備能夠表現爲多種形式,有
Mass Storage
、
RNDIS
或者串口設備。好比
WinCE
設備鏈接
PC
進行同步時表現爲串口設備。
當
WinCE
設備實現
OTG
功能時,既能夠做爲主端使用,也能夠作爲從端使用。
2
、
WinCE6.0
中的
USB
驅動框架
USB
的驅動架構以下圖所示,包含了它的三種角色。
3
、
WinCE6.0
中的
USB
目錄結構
WinCE6.0
中對
USB
已經有了很好的支持,下面看看微軟已經作了哪些工做。
從上面的目錄結構能夠看出,微軟提供的
USB
驅動是根據三種不一樣角色來劃分的。
USB
對應着
USB Host
的功能,
USBFN
對應着
USB Function
功能,
USBOTG
對應着
USB OTG
功能。
(
1
)
WINCE600\PUBLIC\COMMON\OAK\DRIVERS\USB
的下層目錄以下:
結合架構圖理解,
CLASS
文件夾對應
USB Host Client Driver
部分,是上層的應用協議,各個文件夾對應有
HID
設備、打印機、大容量存儲器、
USB
串口等應用。
CLIENTCMN
和
COMMON
兩個文件夾是各類應用的公用代碼。
HCD
文件夾實現的是控制器驅動程序模塊,爲
USBD
模塊提供底層支持。
HCD
模塊主要提供對各個協議的支持,包括
OHCI(open host controller inferface)
、
UHCI
(universal host controller interface)
以及
EHCI
(enhanced host controller interface)
。具體的關於這幾個協議的介紹請查看後面的連接資料。
USBD
文件夾是通用串行總線驅動程序模塊,利用
HCD
模塊的支持,實現各類接口函數提供給上層,使得上層可以與外圍設備進行通訊。
COMMON
和
INC
文件夾實現的是鎖功能,包含
lock.h
和
lock.cpp
。
(
2
)
WINCE600\PUBLIC\COMMON\OAK\DRIVERS\USBFN
的下層目錄以下:
結合架構圖,
CLASS
文件夾對應
USB Function Client Driver
部分,下面的各個文件夾對應着
WinCE
設備的表現形態,經常使用的有三大類:
RNDIS
、
SERIAL
、
STORAGE
。這些和
USB Host
驅動中的不一樣,那些指的是外圍設備,這裏指的是
WinCE
設備自己。文件夾
COMPOSITEFN
和
UFNPRN
是共用的代碼。
CONSTROLLER
文件夾實現了底層控制器的驅動。當
WinCE
設備跟
PC
用
USB
線鏈接時,表現爲多種形式:大容量存儲器(
Mass Storage
)、一個網卡(
RNDIS
)或者一個串口設備(
Serial Class)
等,因此須要一個控制系統,把這部分分離了出來作成一層驅動,叫作
Controller
(控制器),由該層驅動來控制
WinCE
設備到底表現成一種什麼形式,包括卸載舊的
Client
,加載新的
Client
。
MDD
文件夾實現的是該部分驅動的
MDD
部分,
PDD
部分的硬件是
NET2280
控制器,在文件夾
NET2280
中實現。
UFNCLIENTLIB
是該驅動的基礎公共代碼。
(
3
)
WINCE600\PUBLIC\COMMON\OAK\DRIVERS\USBOTG
的下層目錄以下:
USB OTG
結構比較簡單,驅動實現按照標準的流接口形式,分爲
MDD
和
PDD
兩部分,
MDD
部分對應上面的文件夾,
PDD
部分的硬件採用的是
ISP1301
收發器,在
TRANS
文件夾中實現。
4
、
WinCE6.0
系統的
USB
功能定製
WinCE6.0
下
USB
相關的定製包含兩部分:內核服務層和設備驅動層。
內核服務層的定製在
Catalog Items View
中的」
Core OS
」
->
」
CEBASE
」
->
」
Core OS Services
」
->
」
USB Host Support
」,如圖:
設備驅動層的定製在
Catalog Items View
中的」
Device Drivers
」
->
」
USB Function
」
->
」
USB Function Clients
」,如圖:
參考資料:
有關
OHCI
、
UHCI
、
EHCI
的知識
WinCE
系統
USB
功能定製