WinCE USB驱动架构及术语明析

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

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

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

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

2. ControllerClient
拿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。如果要做类似这个功能的开发,理解以上内容很关键。

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智光工作室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值