WinCE驱动入门

      任何硬件都离不开驱动,离开驱动的硬件好比是一个没有灵魂的“行尸走肉”。WinCE也有很多驱动,不过它的驱动类似于应用程序,除了有特定的接口以外,其余并没有太大的差异。那么我们就来大体聊聊WinCE驱动的概况。

      先从WinCE的驱动分类说起,通常有两种分类方法,一种是把WinCE的驱动分为单体驱动和分层驱动,所谓的分层驱动是把驱动分为PDD层和MDD层,其中PDD层是系统做好的,开发人员只需要根据硬件的不同修改相应的MDD层就可以了,而单体驱动就是PDD和MDD没有明显的区分,所有的驱动都需要开发者来完成。另一种分类方法是把WinCE的驱动分为本地驱动和流式驱动,所谓的流式驱动顾名思义,就是应用程序与驱动程序之间是以数据流的形式进行交互的。在流式驱动中,驱动一般会给操作系统一个流式接口,无论硬件是何种架构,都有相同的函数入口,流式驱动最明显的标志是,应用程序能够通过DeviceIoControl来和驱动打交道。而本地驱动就就不遵循该定义,而是有自己特定的接口与操作系统打交道。典型的本地驱动如:显示,键盘等。本人比较倾向于第二种分类方法,比较清晰、明朗。

     再来说说WinCE驱动调用的方式,应用程序(APP)--->调用OS函数--->操作系统---->驱动接口----->硬件操作函数------->硬件(箭头所指方向是控制信息的流向),WinCE的驱动都是以DLL的形式存在,需要通过进程加载到SLOT里,系统中负责驱动加载的进程主要是:Device.exe、GWES.exe、Filesys.exe。WinCE下设备的初始化,主要分为两个阶段:1.Device.exe的初始化。2.外设的枚举和加载。初始化的流程:上电-----启动Bootloarder-----启动NK------启动注册表init键(Device.exe)------初始化数据结构、I/O、电源管理等-------加载BusEnum.dll(总线枚举器)-------枚举注册表下Driver/Buildin的所有子健。这里的枚举过程就是就是循环调用,ActiveDeviceEX()函数加载驱动的过程,在OS启动完就可以用PB的Remote Registery Tool查看H_L_M/deivers/active 包含的子键,看那些驱动随启动被加载了。暴露流式接口函数的驱动,即流驱动,它把外设抽象成一个文件,过程:应用程序API对设备进行访问------OS接受API调用Filesys.exe-------转到devic.exe------调用流接口(包括10个)------硬件交互,其中,应用程序API包括:CreateFile

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值