




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WINCE6.0显示驱动模型介绍*LoongEmbedded*作者:LoongEmbedded(kandi)时间:2011.06.04类别:WINCE驱动开发*LoongEmbedded*关键字DDGPE的DD是指DirectDraw,Graphics Primitive Engine (GPE)GDI:Graphics Device InterfaceDDI:Display Device Interface在WinCE6.0中,Display驱动由GWES模块来管理(GWES.dll)。WinCE提供了两种架构的Display驱动模型,可以满足不同的硬件需求。一种是基于WinCE DDI的Display驱动模型,另一种是基于DirectDraw的Display驱动模型。1. WINCE6.0显示驱动模型图11.1 DDI显示驱动模型图2本文是基于DDI的模型来学习的,但此6410D的BSP是基于基类DDGPE来实现对目标硬件的控制的。1.2 DDRAW显示驱动模型图3DirectDraw提供了独立于硬件的直接访问显示设备的能力。它可以通过直接访问硬件抽象层(HAL)中的一些函数来达到直接操作显示设备的目的,在这个过程中,不再需要图形设备接口(GDI)的转换。这种直接的方法可以使图像更加连贯,也提高了显示的性能。为了实现这样的功能,需要在显示驱动上扩展能够直接访问相关硬件的函数。这些函数会被DirectDraw模块调用,并形成DirectDraw的硬件抽象层(DDHAL)。DirectDraw的真正实现代码都驻在gwes.dll模块中,应用程序只是连接了一个小的客户端,被称为DDRAW.dll代理,该代理主要负责用户进程与系统之间的远程DirectDraw COM接口连接。这样,用户请求会被传送到内核的GWES模块中。针对DirectDraw,WinCE提供了一个名为DirectDraw的GPE库(DDGPE),它是从GPE类上面继承而来的。实际上,DirectDraw显示驱动是由DDGPE和DDHAL组成,而DDGPE中已经包含了DDHAL的功能。用户需要从DDGPE类继承并实现相关函数即可。GWES.dll模块中包含GDI和DDRAW两个组件,这两个组件会调用驱动中的DDGPE的相关接口完成对硬件的操作。在上述两种架构中,用户可以根据自己的硬件情况选择相应的架构。第一种架构是基于GPE类继承来实现的,第二种架构是基于DDGPE类继承来实现的,而第二种架构的DDGPE类又是从第一种架构的GPE类继承而来。关于两种类的具体定义,可参见” WINCE600PUBLICCOMMONOAKINC”路径下的gpe.h和ddgpe.h文件。2. 显示驱动的文件结构图4我们先来看看DISPLAY_DRV目录下的sources文件的下面部分:图5从图3可知s3c6410_disp.dll要调用这两个dll提供的函数接口来实现自己的功能。接下来看看VIDEO_DRV目录下的sources文件的下面部分:图6从图3可知s3c6410_Video.dll要调用这些lib提供的函数接口来实现自己的功能。为了搞清楚s3c6410_disp.dll和s3c6410_Video.dll之间的关系,我们看DISPLAY_DRV目录下的display_main.cpp(也就是s3c6410_disp.cpp)下的函数调用:S3C6410Disp:S3C6410Disp()-S3C6410Disp:AllocResource(),就来看此函数的相关部分:图7从图5可以知道s3c6410_Video.dll还是为s3c6410_disp.dll提供服务的。总结这些dll和lib之间的关系如下面的逻辑框图所示:图83. 显示驱动的具体实现3.1显示驱动的加载在GWES.dl被加载后,在加载驱动的过程中,GWES将根据注册表键HKEY_LOCAL_MACHINESystemGDIDisplayCandidates下面的项来找显示驱动,如果找到,则正常加载显示驱动,见platform.reg中相关部分:图9根据图9的注册表信息,GWES找到s3c6410_disp.dll并且加载,并且把s3c6410_disp.dll作为一项写到HKEY_LOCAL_MACHINESystemGDIDrivers键下面:“MainDisplay”=“s3c6410_disp.dl”3.2 s3c6410_disp.dll的导出函数WINCE系统的设备驱动程序要实现自身的功能,不外乎导出函数和启动IST这两种办法来实现,而显示设备指示向显示屏输出显示的数据,不处理异步的输入数据,所以显示驱动不需要启动IST线程来实现,那么显示驱动就只能是以导出函数的方式来实现了,其导出文件的内容如下:LIBRARY DDIEXPORTS DrvEnableDriverHALInit3.2.1 DrvEnableDriver函数DrvEnableDriver函数向GWES.dll返回DDI函数指针并且借用GWES.dll的GDI的一些回调函数来简化自己的实现。见图3可知GDI是GWES的组成部分,它主要负责画简单的直线、矩形、圆等几何图像及实现矩形块传输和画线的硬件加速。DrvEnableDriver函数导出是DDI函数指针在PUBLICCOMMONOAKINCWinddi.h中定义,如下所示:图10那么DDI上面的函数指针是如何彻底给GDI呢?GWES加载显示驱动的时候,会调用DrvEnableDriver函数,下面来看其函数体:图11DrvEnableDriver函数只是直接将4个参数传递给GPEEnableDriver函数处理,下面来学习者几个参数:engineVersion:输入参数,是DDI的版本号,GWES提供的参数值为DDI_DRIVER_VERSION =0x00040001。Cj:输入参数,DRVENABLEDATA结构体的大小,以字节为单位,指示输出参数指针pded所指向存储区域的大小。Pded:输出参数,指向包含着DDI函数指针的DRVENABLEDATA结构体的数据。engineCallbacks:输入参数,GWES使用PENGCALLBACKS结构体类型指针数据向显示驱动传递可用的GDI回调函数以便于帮助用户实现DDI函数。接着看GPEEnableDriver()的实现,在PUBLICCOMMONOAKDRIVERSDISPLAYGPEddi_if.cpp下定义:图12DRVENABLEDATA 结构体在PUBLICCOMMONOAKINCWinddi.h中定义:图13GWES.dll的GDI获取到DDI函数指针后,应用程序就可以通过GDI来调用DDI函数来对显示设备进行操作了。3.2.2 HALInit函数HAL单元的导出函数是HALInit函数,根据图1可知HAL单元及WINCE自带的以软件模拟的方式提供对DirectDraw功能支持的HEL单元为DirectDraw服务。GDI和DirectDraw都是WINCE的GWES.dll的组成部分,后者可以画复杂的二维图案和更高级的硬件加速。该函数没有直接被显示驱动调用,而是在显
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年烟草四川公司招聘考试真题及答案
- 中级计量经济学知到智慧树答案
- 计算机三级(信息安全技术)考试题(含答案)
- 中外名建筑赏析知到智慧树答案
- 中西方文化比较知到智慧树答案
- 中西医结合基础思路研究与方法知到智慧树答案
- 中学生物实验教学知到智慧树答案
- 2025版水电安装工程合同履行与维护合同
- 2025年仓储配送一体化大数据分析服务合同
- 2025版土地储备项目合作开发中介服务合同
- 勉县一中小升初数学试卷
- 2025一建《建设工程经济》计算、时间、数字考点笔记
- 校园基孔肯雅热防控措施课件
- 第1课 中国古代政治制度的形成与发展 课件 统编版高中历史选择性必修1
- 药师考试历年真题综合测试试卷(含答案)
- 2025年村级防疫员考试模拟试题及答案
- 快餐公司门店设备夜间关闭管理制度
- 以童心为笔:基于儿童心理发展需求的小学校园公共活动空间设计
- 2025年度日语能力测试N4级试卷含答案与解析
- 生猪屠宰兽医卫生检验人员理论考试题库及答案
- 板带轧机刚度对热轧板形的影响
评论
0/150
提交评论