在WinCE 6.0系統下實(shí)現USB功能定制
USB的廣泛應用就不用多說(shuō)了,相信目前的各個(gè)領(lǐng)域的嵌入式產(chǎn)品中,很少有不用USB的。USB是主從結構的,分為USB HoST和USB Slave,從USB1.0,USB1.1到現在的USB2.0,基于USB2.0還有USB OTG,也就是同時(shí)支持Host和Slave設備。目前最新的好像是USB3.0,剛開(kāi)始普及吧。
在WinCE6.0中,對USB是有很好的支持。一般來(lái)說(shuō),如果USB的設備驅動(dòng)做好了,USB的協(xié)議層以及上層的應用都是現成的,而且還有源碼。也就是說(shuō),我們只需要在BSP中完成USB的驅動(dòng)就可以了。先來(lái)看一下,如圖:
USB Host:
最底層就是USB Host控制器了,上層是USB Host CONtroller Driver,該驅動(dòng)負責和硬件通訊來(lái)傳輸數據,在WinCE中支持UHCI,OHCI和EHCI。Host Core Driver Hub Driver是獨立于硬件的USB協(xié)議棧,支持USB Host協(xié)議及USB Hub功能。最上層就是USB Host Class driver是USB Host的應用協(xié)議,目前在WinCE中,支持RNDIS,Print,Mass Storage和HID四種應用。
USB Device:
最底層是USB Device控制器,上層是USB Device Driver負責和硬件通訊。Device Core Driver是USB Device的協(xié)議棧。最上層是USB Device的應用層,目前在WinCE中支持RNDIS,Serial和Mass Storage三種應用。
USB OTG:
USB OTG控制器上層是USB OTG控制器的驅動(dòng),USB OTG Core Driver是協(xié)議層,如果做Host,它會(huì )使用USB Host協(xié)議棧,如果做Device,它會(huì )使用USB Device協(xié)議棧。
在WinCE中,根據需要來(lái)選擇所需的USB功能,創(chuàng )建WinCE工程,然后在Catalog Items View中選擇”Core OS”-》”CEBASE”-》”Core OS Services”-》”,如圖:
◆USB Function Driver:用于支持USB Device驅動(dòng)。
◆USB Host Support:用于支持USB Host控制器驅動(dòng)。
◆USB Human Input Device (HID) Class Driver:用于支持USB Host外接HID設備,可選擇同時(shí)支持USB鼠標鍵盤(pán),也可以分開(kāi)選擇。
◆USB Printer Class Driver:用于支持USB Host打印功能。
◆USB Remote NDIS Class Driver:用于支持USB Host連接RNDIS設備。
◆USB Storage Class Driver:用于支持USB Host外接U盤(pán)的功能。
上面的選項除了USB Function Driver以外,都是用于支持USB Host應用的,可以根據自己平臺的需要,選擇相應的USB應用,也可以都選擇。如果是USB Device設備,那么首先要選擇上面提到的USB Function Driver,然后在Catalog Items View中選擇”Device Drivers”-》”USB Function”-》” ,如圖:
Mass Storage:用于支持USB Device作為U盤(pán)功能。
RNDIS Client:用于支持USB Device作為RNDIS設備。
Serial:用于支持USB Device作為串口設備。
對于USB Device設備,可以支持Mass Storage,RNDIS和Serial功能,不過(guò)同一個(gè)USB Device在系統啟動(dòng)以后只能支持某一個(gè)功能。
總結一下,無(wú)論是USB Host還是USB Device,只要驅動(dòng)做好了,上層的應用在WinCE系統定制的時(shí)候,選擇相應的組件就可以了。對于USB Device來(lái)說(shuō),根據組件的不同,還需要進(jìn)行一些注冊表的配置,我會(huì )在以后的blog中進(jìn)行介紹。
評論