0
点赞
收藏
分享

微信扫一扫

Linux应用 防止程序重复发起

阎小妍 03-09 06:30 阅读 2
架构

一、层式驱动的概念
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。如果要做类似这个功能的开发,理解以上内容很关键。

举报

相关推荐

0 条评论