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时,驱动的结构如下图所示。

右侧是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有关的类图结构。 

 

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?待查。另外还需要阅读串口驱动代码。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值