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