分享

WinCE USB驱动架构及术语明析

 蜗牛an 2012-03-08
WinCE USB驱动架构及术语明析
2009-02-20 15:23
以下根据个人理解总结,若有不对的地方,请大家指出并多多包涵。

一、层式驱动的概念
WinCE驱动多为层式驱动,分为MDD和PDD两层。
MDD包含通用的驱动代码,向操作系统提供了驱动接口,该层代码调用PDD功能访问硬件。
PDD部分包含与硬件平台相关的特殊代码,不具有通用性。

之所以要分层,是为了简化驱动的开发,并提高代码的移植性。举个例子,当我们需要移植到另一个硬件平台的时候,驱动不需要全部重写,MDD部分不需要改变,只需要根据硬件的特点修改PDD部分即可。

二、USB驱动架构
在WinCE中做USB相关的东西,首先要弄清一些概念,这非常关键。

1. Host与Function
首先要知道USB是主从结构的。拿PC和手机来说,PC端是主端,叫做Host,手机是从端,通常叫做Client。但是在WinCE中这个术语发生了变化,主端还是叫Host,而从端叫做Function。因此对应的驱动分别叫做USB Host Driver及USB Function Driver。这里要记住了Host与Function对应,而不是Client,Client在后面会提到。

2. Controller与Client
拿WinCE设备来说,它不像U盘那样功能单一,实质上就是一个Mass Storage设备,WinCE设备跟PC用USB线连接时可以表现为多种形式,可以是一种大容量存储器(Mass Storage),还可以表现为一个网卡(RNDIS),还可以表现成一个串口设备(Serial Class),所以需要一个控制系统,WinCE把这部分分离了出来,做成一层驱动,叫做Controller(控制器),由该层驱动来控制WinCE设备到底表现成一种什么形态。

然后,在Controller上层是Client层,常用的三大类:Mass Storage、RNDIS、Serial。当WinCE设备需要表现成哪种形态,就由Controller驱动转换(卸载旧Client、加载新Client)。

前面说了设备端叫做Function,所以全称分别是:USB Function Controller Driver、USB Function Client Driver。

实际上Host端也是有Controller层的,这里没研究,(因为Host端驱动(PC端)微软操作系统都写好了),猜测当设备端表现出不同形式时,PC端也要表现出不同的形式与之对应,所以也需要有控制器。

3. 由此一来,USB驱动架构就出来了,见下图。

4. 前面说过有的WinCE驱动分为PDD、MDD两部分,这里USB Function Controller Driver便是如此架构。MDD部分微软已实现,拿windows mobile来说,源码E:\wm615\PUBLIC\COMMON\OAK\DRIVERS\USBFN\CONTROLLER\MDD   一般硬件的BSP提供商负责提供PDD部分,Controller驱动是针对设备上USB总线的。

USB Function Client Driver分为:Mass Storage、RNDIS、Serial,微软也已经实现。
源码在 E:\wm615\PUBLIC\COMMON\OAK\DRIVERS\USBFN\CLASS下。

5. WinCE 5.0及对应的windows mobile上都没有提供将USB Client加载成Mass Storage形式(可以把外存卡比如TF卡在PC上加载成一个移动磁盘,就像U盘一样)的功能,而只在windows mobile 上提供了一个” USB 连接到PC“的设置,用于RNDIS与Serial切换。因此市面上有专门针对这个功能的软件,比如WM5Storage、Resco公司的CardExport。如果要做类似这个功能的开发,理解以上内容很关键。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多