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