1. 程式人生 > >在WinCE 6.0系統下實現USB功能定製

在WinCE 6.0系統下實現USB功能定製

USB的廣泛應用就不用多說了,相信目前的各個領域的嵌入式產品中,很少有不用USB的。USB是主從結構的,分為USB Host和USB Slave,從USB1.0,USB1.1到現在的USB2.0,基於USB2.0還有USB OTG,也就是同時支援Host和Slave裝置。目前最新的好像是USB3.0,剛開始普及吧。

在WinCE6.0中,對USB是有很好的支援。一般來說,如果USB的裝置驅動做好了,USB的協議層以及上層的應用都是現成的,而且還有原始碼。也就是說,我們只需要在BSP中完成USB的驅動就可以了。先來看一下,如圖:

WinCE中USB的架構

USB Host

最底層就是USB Host控制器了,上層是USB Host Controller Driver,該驅動負責和硬體通訊來傳輸資料,在WinCE中支援UHCI,OHCI和EHCI。Host Core Driver & Hub Driver是獨立於硬體的USB協議棧,支援USB Host協議及USB Hub功能。最上層就是USB Host Class driver是USB Host的應用協議,目前在WinCE中,支援RNDIS,Print,Mass Storage和HID四種應用。

USB Device

最底層是USB Device控制器,上層是USB Device Driver負責和硬體通訊。Device Core Driver是USB Device的協議棧。最上層是USB Device的應用層,目前在WinCE中支援RNDIS,Serial和Mass Storage三種應用。

USB OTG

USB OTG控制器上層是USB OTG控制器的驅動,USB OTG Core Driver是協議層,如果做Host,它會使用USB Host協議棧,如果做Device,它會使用USB Device協議棧。

在WinCE中,根據需要來選擇所需的USB功能,建立WinCE工程,然後在Catalog Items View中選擇”Core OS”->”CEBASE”->”Core OS Services”->”,如圖:

USB Host Support

◆USB Function Driver:用於支援USB Device驅動。

◆USB Host Support:用於支援USB Host控制器驅動。

◆USB Human Input Device (HID) Class Driver:用於支援USB Host外接HID裝置,可選擇同時支援USB滑鼠鍵盤,也可以分開選擇。

◆USB Printer Class Driver:用於支援USB Host列印功能。

◆USB Remote NDIS Class Driver:用於支援USB Host連線RNDIS裝置。

◆USB Storage Class Driver:用於支援USB Host外接U盤的功能。

上面的選項除了USB Function Driver以外,都是用於支援USB Host應用的,可以根據自己平臺的需要,選擇相應的USB應用,也可以都選擇。如果是USB Device裝置,那麼首先要選擇上面提到的USB Function Driver,然後在Catalog Items View中選擇”Device Drivers”->”USB Function”->” ,如圖:

USB Function Clients

Mass Storage:用於支援USB Device作為U盤功能。

RNDIS Client:用於支援USB Device作為RNDIS裝置。

Serial:用於支援USB Device作為串列埠裝置。

對於USB Device裝置,可以支援Mass Storage,RNDIS和Serial功能,不過同一個USB Device在系統啟動以後只能支援某一個功能。

總結一下,無論是USB Host還是USB Device,只要驅動做好了,上層的應用在WinCE系統定製的時候,選擇相應的元件就可以了。對於USB Device來說,根據元件的不同,還需要進行一些登錄檔的配置。