WinCE6.0+S3C6410 USB驱动架构分析

WinCE6.0+S3C6410 USB驱动架构分析 
2011-12-08 19:08:24
标签:S3C6410 架构分析 WinCE6.0 USB驱动
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://jazka.blog.51cto.com/809003/737486
学习WinCE下的USB驱动几天了,有了一个整体的了解,这里对网上的资料和个人的理解做一个总结。软件平台是WinCE6.0,硬件平台是S3C6410。
1、WinCE设备的三种角色
USB是主从结构,分为主端和从端。一般主端称为Host,从端称为Client,但是在WinCE系统中有些不同,主端称为Host,从端称为Function。
对于USB而言,搭载WinCE系统的嵌入式设备可以扮演三种不同的角色,即三种不同的功能:Host、Function以及OTG。
WinCE设备经常会外接各种USB设备,如RNDIS、Print、Mass Storage和HID设备等,此时作为主端使用,实现的是Host功能。
当WinCE设备连接PC机时,便是作为从端使用,实现的是Function的功能。但此时WinCE设备可以表现为多种形式,有Mass Storage、RNDIS或者串口设备。比如WinCE设备连接PC进行同步时表现为串口设备。
当WinCE设备实现OTG功能时,既可以作为主端使用,也可以做为从端使用。
2、WinCE6.0中的USB驱动框架
USB的驱动架构如下图所示,包含了它的三种角色。

3、WinCE6.0中的USB目录结构
WinCE6.0中对USB已经有了很好的支持,下面看看微软已经做了哪些工作。
 
从上面的目录结构可以看出,微软提供的USB驱动是根据三种不同角色来划分的。USB对应着USB Host的功能,USBFN对应着USB Function功能,USBOTG对应着USB OTG功能。
(1)WINCE600\PUBLIC\COMMON\OAK\DRIVERS\USB的下层目录如下:
 
结合架构图理解,CLASS文件夹对应USB Host Client Driver部分,是上层的应用协议,各个文件夹对应有HID设备、打印机、大容量存储器、USB串口等应用。CLIENTCMN和COMMON两个文件夹是各种应用的公用代码。
HCD文件夹实现的是控制器驱动程序模块,为USBD模块提供底层支持。HCD模块主要提供对各个协议的支持,包括OHCI(open host controller inferface)、UHCI (universal host controller interface)以及EHCI (enhanced host controller interface)。具体的关于这几个协议的介绍请查看后面的链接资料。
USBD文件夹是通用串行总线驱动程序模块,利用HCD模块的支持,实现各种接口函数提供给上层,使得上层能够与外围设备进行通信。
COMMON和INC文件夹实现的是锁功能,包含lock.h和lock.cpp。
(2)WINCE600\PUBLIC\COMMON\OAK\DRIVERS\USBFN的下层目录如下:
 
结合架构图,CLASS文件夹对应USB Function Client Driver部分,下面的各个文件夹对应着WinCE设备的表现形态,常用的有三大类:RNDIS、SERIAL、STORAGE。这些和USB Host驱动中的不同,那些指的是外围设备,这里指的是WinCE设备本身。文件夹COMPOSITEFN和UFNPRN是共用的代码。
CONSTROLLER文件夹实现了底层控制器的驱动。当WinCE设备跟PC用USB线连接时,表现为多种形式:大容量存储器(Mass Storage)、一个网卡(RNDIS)或者一个串口设备(Serial Class)等,所以需要一个控制系统,把这部分分离了出来做成一层驱动,叫做Controller(控制器),由该层驱动来控制WinCE设备到底表现成一种什么形式,包括卸载旧的Client,加载新的Client。MDD文件夹实现的是该部分驱动的MDD部分,PDD部分的硬件是NET2280控制器,在文件夹NET2280中实现。
UFNCLIENTLIB是该驱动的基础公共代码。
(3)WINCE600\PUBLIC\COMMON\OAK\DRIVERS\USBOTG的下层目录如下:
 
USB OTG结构比较简单,驱动实现按照标准的流接口形式,分为MDD和PDD两部分,MDD部分对应上面的文件夹,PDD部分的硬件采用的是ISP1301收发器,在TRANS文件夹中实现。
4、WinCE6.0系统的USB功能定制
WinCE6.0下USB相关的定制包含两部分:内核服务层和设备驱动层。
内核服务层的定制在Catalog Items View中的”Core OS”->”CEBASE”->”Core OS Services”->”USB Host Support”,如图:
 
设备驱动层的定制在Catalog Items View中的”Device Drivers”->”USB Function”->”USB Function Clients”,如图:
 

参考资料:
http://hi.baidu.com/donghaozheng/blog/item/3b2806faf2afc99058ee903b.htm
有关OHCI、UHCI、EHCI的知识
http://zhuairlunjj.blog.163.com/blog/static/8005094520107203058470/
WinCE系统USB功能定制
http://blog.csdn.net/nanjianhui/article/details/4438599

本文出自 “飞雪待剑” 博客,请务必保留此出处http://jazka.blog.51cto.com/809003/737486
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值