WinCE驱动程序模型分类
WinCE系统在驱动设计上有一个很方便的功能,就是原始设备制造商(OEMs)和独立硬件开发商(IHVs)可以自主开发设备驱动程序来支持他们的硬件。因此,在动手进行触摸屏驱动程序开发之前,深入了解WinCE系统驱动方式是非常有必要的。
(1)从驱动加载方式上的分类
要编写WinCE驱动程序首先要确定它是属于哪类驱动。一般来说,WinCE平台上使用的设备可分为两类:内建设备和可安装设备。因此,从驱动加载方式上WinCE可分为内建设备驱动(Built-In Driver)和可加载驱动(Loadable Driver)。
WinCE系统可直接使用内建设备,因为内建设备驱动程序是与WinCE的核心组件紧密相连的,也就是内建设备驱动程序是被静态地链接到GWES(Graphics Windowing and Events Subsystem)的。这些驱动对应的设备通常在系统启动时,在GWES的进程空间内被加载,主要是与显示和输入有关的驱动。
因为它们不是以独立的DLL形式存在,所以要求每一个内建驱动程序都必须与设备驱动程序接口(DDI)的特定接口保持一致。内建设备包括显示、触摸屏、音频、串行埠、LED、电池和PC卡插座等。内建驱动程序一般设计为动态链接库,但有两个例外:电池和LED驱动程序由于小而设计为静态库。它们一般储存在ROM或闪存内。
可加载设备是指可与平台连接和分离的第三方接口设备,可由用户随时安装和卸载。这种外围设备的驱动也被称为流驱动,这些驱动可以在系统启动时、或者启动后的任何时候由设备管理器动态加载。通常这类驱动是以DLL动态链接库的形式存在,加载后的这些驱动程序也只能以用户态的角色运行。在WinCE中典型的可加载驱动有:PCMCIA driver(PCMCIA.dll)、Serial driver(SERIAL.dll)、ATAFLASH driver(ATA.dll)、Ethernet driver(NE2000.dll,SMSC100FD.dll)。
与内建驱动程序不同的是,所有可加载流驱动程序都共享一个公用接口,而且功能也与应用程序所用的文件API中的功能匹配。因此,控制可加载设备的流接口驱动程序一般由应用程序存取。也就是说,流接口驱动程序是由一个特殊文件来将设备功能展现给应用程序的,该文件可被打开、读取、写入和关闭。通常只有OEMs才会对内建设备驱动程序进行修改,其它自由设备生产商由于只提供附加的硬件设备,对内建设备驱动程序不会有过多涉及。
(2)从驱动程序层次上分类
WinCE最大的好处是具有可定制性,当它自带的驱动程序不能满足用户的要求时,用户可以自己编写相应的驱动程序。因此按照结构分,WinCE驱动程序又可分为分层的驱动程序和不分层的驱动程序。分层的驱动程序由两个设置好的层组成:上层是模型设备驱动程序(Model Device Driver, MDD),下层是依赖平台的驱动程序(Platform Dependent Driver, PDD)。
分层的驱动程序中的MDD通常是无需修改可直接使用,MDD的作用是链接PDD层并定义它希望调用的函数接口:设备驱动程序提供器接口(Device Driver Service Provider Interface, DDSI)。同时MDD又把不同的函数集提供给WinCE内核,这些函数叫做设备驱动程序接口(Device Driver Interface, DDI)。不分层的驱动程序是把PDD与MDD写在一起,没有做严格的区分,通常这种驱动比较简单,比如ATADISK。简单的说,内建驱动和加载式流驱动是从驱动与系统其它模块(调用者)的接口形式上做的分类;而不分层和分层是从驱动实现方式上的分类。
在开发过程中,MDD层驱动是不需要被修改的。但和MDD层驱动不同的是,PDD层驱动必须被修改成和特定硬件相匹配的代码。程序员可以自己开发一个PDD程序,但多数情况下建议开发者在Platform Builder提供的样例驱动程序上进行修改。在Win CE系统中触摸屏驱动是一种分层驱动。
引用地址:WinCE驱动程序模型分类
WinCE系统在驱动设计上有一个很方便的功能,就是原始设备制造商(OEMs)和独立硬件开发商(IHVs)可以自主开发设备驱动程序来支持他们的硬件。因此,在动手进行触摸屏驱动程序开发之前,深入了解WinCE系统驱动方式是非常有必要的。
(1)从驱动加载方式上的分类
要编写WinCE驱动程序首先要确定它是属于哪类驱动。一般来说,WinCE平台上使用的设备可分为两类:内建设备和可安装设备。因此,从驱动加载方式上WinCE可分为内建设备驱动(Built-In Driver)和可加载驱动(Loadable Driver)。
WinCE系统可直接使用内建设备,因为内建设备驱动程序是与WinCE的核心组件紧密相连的,也就是内建设备驱动程序是被静态地链接到GWES(Graphics Windowing and Events Subsystem)的。这些驱动对应的设备通常在系统启动时,在GWES的进程空间内被加载,主要是与显示和输入有关的驱动。
因为它们不是以独立的DLL形式存在,所以要求每一个内建驱动程序都必须与设备驱动程序接口(DDI)的特定接口保持一致。内建设备包括显示、触摸屏、音频、串行埠、LED、电池和PC卡插座等。内建驱动程序一般设计为动态链接库,但有两个例外:电池和LED驱动程序由于小而设计为静态库。它们一般储存在ROM或闪存内。
可加载设备是指可与平台连接和分离的第三方接口设备,可由用户随时安装和卸载。这种外围设备的驱动也被称为流驱动,这些驱动可以在系统启动时、或者启动后的任何时候由设备管理器动态加载。通常这类驱动是以DLL动态链接库的形式存在,加载后的这些驱动程序也只能以用户态的角色运行。在WinCE中典型的可加载驱动有:PCMCIA driver(PCMCIA.dll)、Serial driver(SERIAL.dll)、ATAFLASH driver(ATA.dll)、Ethernet driver(NE2000.dll,SMSC100FD.dll)。
与内建驱动程序不同的是,所有可加载流驱动程序都共享一个公用接口,而且功能也与应用程序所用的文件API中的功能匹配。因此,控制可加载设备的流接口驱动程序一般由应用程序存取。也就是说,流接口驱动程序是由一个特殊文件来将设备功能展现给应用程序的,该文件可被打开、读取、写入和关闭。通常只有OEMs才会对内建设备驱动程序进行修改,其它自由设备生产商由于只提供附加的硬件设备,对内建设备驱动程序不会有过多涉及。
(2)从驱动程序层次上分类
WinCE最大的好处是具有可定制性,当它自带的驱动程序不能满足用户的要求时,用户可以自己编写相应的驱动程序。因此按照结构分,WinCE驱动程序又可分为分层的驱动程序和不分层的驱动程序。分层的驱动程序由两个设置好的层组成:上层是模型设备驱动程序(Model Device Driver, MDD),下层是依赖平台的驱动程序(Platform Dependent Driver, PDD)。
分层的驱动程序中的MDD通常是无需修改可直接使用,MDD的作用是链接PDD层并定义它希望调用的函数接口:设备驱动程序提供器接口(Device Driver Service Provider Interface, DDSI)。同时MDD又把不同的函数集提供给WinCE内核,这些函数叫做设备驱动程序接口(Device Driver Interface, DDI)。不分层的驱动程序是把PDD与MDD写在一起,没有做严格的区分,通常这种驱动比较简单,比如ATADISK。简单的说,内建驱动和加载式流驱动是从驱动与系统其它模块(调用者)的接口形式上做的分类;而不分层和分层是从驱动实现方式上的分类。
在开发过程中,MDD层驱动是不需要被修改的。但和MDD层驱动不同的是,PDD层驱动必须被修改成和特定硬件相匹配的代码。程序员可以自己开发一个PDD程序,但多数情况下建议开发者在Platform Builder提供的样例驱动程序上进行修改。在Win CE系统中触摸屏驱动是一种分层驱动。
上一篇:发展嵌入式系统,促进电子信息产业结构调整
下一篇:选择Windows CE 的十大理由
- 热门资源推荐
- 热门放大器推荐
小广播
热门活动
换一批
更多
最新嵌入式文章
更多精选电路图
更多热门文章
更多每日新闻
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况
更多往期活动
11月17日历史上的今天
厂商技术中心