WinCE设备驱动程序分类

从驱动加载方式来区分
      在深入探讨Windows CE所支持的外围设备驱动程序之前,先了解在WinCE平台上使用的两种设备:内建设备和可安装设备。因此,从驱动加载方式来看WinCE可分为本机设备驱动(Built-In Driver)、可加载驱动(Loadable Driver)以及混合型驱动。

  ①本机设备驱动
      本机设备驱动即Native Device Drivers。WinCE设计成可直接使用内建设备,这些设备由本机驱动过程控制,而本机驱动程序又与WinCE的核心组件紧密相连。这些驱动对应的设备通常在系统启动时,在GWES的进程空间内被加载,因此它们不是以独立的DLL形式存在,也因此要求每一个本机驱动程序都必须与称为设备驱动程序接口(DDI)的特定接口一致。

      本机设备是指整合进平台的设备,其中包括显示、触摸面板、音频、串行埠、LED、电池和PC卡插座等。如果没有这些本机设备整个系统就不能和用户信息交流,例如触摸面板和显示等。本机驱动程序一般设计为动态链接库,但有两个例外:电池和LED驱动程序由于小而设计为静态库(当建立CE图像时与GWES模块链接)。这些设备相应的驱动程序是在WinCE平台开发过程中由OEM开发的,它们储存在ROM或闪存内。通常只有OEM才会对本机设备驱动程序进行修改,其它自由设备生产商只提供附加的硬件设备,对本机设备驱动程序不会有过多涉及。

  ②可加载设备驱动
      可加载设备是指可与平台连接和分离的第三方接口设备,可由用户随时安装和卸载。这种外围设备的驱动也被称为流驱动,这些驱动可以在系统启动时或者和启动后的任何时候由设备管理器动态加载。通常这类驱动是以DLL动态链接库的形式存在,系统加载后这些驱动程序也只是以用户态的角色运行。可加载驱动程序是通过文件操作API来从设备管理器和应用程序获得命令。在WinCE典型的可加载驱动有:PCMCIA driver(PCMCIA.dll)、Serial driver(SERIAL.dll)、ATAFLASH driver(ATA.dll)、Ethernet driver(NE2000.dll,SMSC100FD.dll)。

      与本机驱动程序不同的是,所有可加载流驱动程序都共享一个公用接口。该接口由每个驱动程序内的10个功能或记录点组成,这些功能与应用程序所用的文件API中的功能匹配。因此,控制可加载设备的流接口驱动程序一般由应用程序存取,流接口驱动程序由一个特殊文件来将设备功能展现给应用程序的,该文件可被打开、读取、写入和关闭。例如,用户将一个GPS设备与平台相连后,就可启动有GPS功能的应用程序来存取并使用该设备。WinCE是使用已有的API来让应用程序存取这些驱动程序,而不是建立新的API。

 

从驱动程序层次上分类
      一般可以分为独立驱动和层次型驱动两类。独立驱动程序是指将驱动程序编写成同时包含Model Device Driver(MDD)和Platform Dependent Driver(PDD)层的独立驱动。使用独立驱动的好处在于可以省去MDD和PDD层驱动之间的信息传递,这一点在实时处理中非常重要。独立驱动的代码包括中断服务例程和平台相关处理函数。另外,如果设备的操作和MDD驱动层的接口描述相吻合,用独立驱动程序可以提高处理性能。

      层次型驱动是指分为两层,较上层的MDD和比较下层的PDD。MDD实现的是和平台无关的功能,它描述了一个通用的驱动程序框架;而PDD是和硬件以及平台相关的代码组成。MDD调用PDD中特定的接口来获取硬件相关的信息。当使用层次型驱动的时候,一般只需要基于相近的样列驱动程序,针对特定的硬件只修改PDD程序,MDD建立的框架可继续使用。但由于层次间接口的层层调用以及消息的传递,使得处理速度相对于独立驱动程序要慢。因此,在嵌入式实时要求苛刻的环境下,层次型驱动显得不是很适合。

      简单的说,独立驱动是把PDD与MDD写在一起,没有做严格的区分,通常这种驱动比较简单,比如ATADISK。至于本机驱动和加载式流驱动是从驱动与系统其它模块(调用者)的接口形式上做的分类。所以,一个加载式驱动程序可以是独立的流式驱动,例如ATADISK;也可以是分层的流式驱动,例如OHCI。也就是说,独立和分层是驱动实现方式上的分类,而本机和加载流式则是驱动模型上的分类。所谓本机驱动就是操作系统有保留专门的接口,而加载流式驱动是指编写DLL文件导出各种流式接口函数的接口。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值