在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的驅動就可以了。先來看一下,如圖:
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 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”->” ,如圖:
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來說,根據元件的不同,還需要進行一些登錄檔的配置。