在WinCE 6.0系统下实现USB功能定制

时间:2021-10-28 17:58:11

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 6.0系统下实现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”->”,如图:

在WinCE 6.0系统下实现USB功能定制

◆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”->” ,如图:

在WinCE 6.0系统下实现USB功能定制

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来说,根据组件的不同,还需要进行一些注册表的配置,我会在以后的blog中进行介绍。