usbser类图结构小结

虽然不知道最后的产品是否需要这一块实现,但先把最近代码阅读结果记录一下。

USB线的两端分别是USB host和USB device,前者识别后者及其配置信息,在需要时可以给后者提供电源。当winCE所在的嵌入式系统与PC连接时,系统作为device,对应的驱动在D:/WINCE600/PUBLIC/COMMON/OAK/DRIVERS/USBFN下,即usb function。当有其他外设如U盘接入该系统,则系统作为host,对应的驱动在D:/WINCE600/PUBLIC/COMMON/OAK/DRIVERS/USB。在系统作为host时,驱动的结构如下图所示。

usbser类图结构小结_第1张图片

右侧是USB文件夹中实现的代码。HCD: host control driverUSB控制器,微软已经写好。USBD使用HCD实现USB的基本功能,并向上提供接口。对于每个外设device,需要在winCE中编写的是最上层USB device driver,目录为D:/WINCE600/PUBLIC/COMMON/OAK/DRIVERS/USB/CLASS。看到一篇文章对USB驱动的基本结构讲解深入浅出,值得学习:http://blog.csdn.net/zhongnanjun_3/archive/2009/04/22/4101426.aspx。本文展示的是CLASS目录下的USBSER有关的类图结构。 

 usbser类图结构小结_第2张图片

USBFunction封装了D:/WINCE600/PUBLIC/COMMON/DDK/INC/usbdi.h下对USB操作的函数,向上层提供所有USB所需接口。中间层client common文件夹中,对接口进行分类封装,并向上扩展功能函数。分为对USB设备配置(管道0)的操作UsbClientDevice、数据传输USBTransfer、管道操作UsbClassPipe,并将后两者合并为UsbAsyncPipe。在USBSER文件夹中的usbser.h,调用上述类中的方法,实现对于设备配置的传输SerialUsbClientDevice和串行数据收发SerialDataIn/Out。基于以上三个类,在userdev.h实现USB转串口功能类UsbSerClientDriver,该类同时集成了串口类CSerialPDD。

对于USB转串口驱动的实现方法,有这篇文章供参考http://download.csdn.net/source/3503382。个人觉得他把结构说得比较明白,只是我还没照着他实现过。

在usbser.def文件中说明要析出COM_XXX接口,但我只在串口MDD中找到它们的实现,并不在usb中。这样不会导致生成lib错误吗?还是在usb代码的某处隐式包含了MDD?待查。另外还需要阅读串口驱动代码。

你可能感兴趣的:(usbser类图结构小结)