第十三讲-驱动程序概述及模型课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第十三讲-驱动程序概述及模型课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第十 三讲 驱动程序 概述 模型 课件
- 资源描述:
-
1、2023-5-22北京理工大学珠海学院 计算机教研室1第五章 驱动程序设计北京理工大学珠海学院 计算机教研室22023-5-22教学目的教学目的 nWindows CE5.0驱动程序设计的基本概念;掌握Windows CE5.0动态链接库的编制方法;掌握Windows CE5.0动态链接库的静态加载方法 北京理工大学珠海学院 计算机教研室32023-5-22项目项目9:驱动程序的编制驱动程序的编制本节课程主要知识点n驱动程序模型n动态链接库n动态链接库的特点与实现(重点)n动态链接库的加载n动态链接库的静态加载(难点)北京理工大学珠海学院 计算机教研室42023-5-22n教学重点驱动程序的基
2、本概念动态链接库n教学难点动态链接库的编制及静态加载方法 北京理工大学珠海学院 计算机教研室52023-5-225.1驱动程序基本知识n5.1.1 驱动程序的功能驱动程序是操作系统与硬件交互的方式,是连接硬件与操作系统之间的桥梁;独立的“黑盒子”,定义好的编程接口,隐藏设备工作的细节;驱动程序的作用是实现这组接口,并映射到具体的对硬件的某项操作上。驱动程序接口北京理工大学珠海学院 计算机教研室62023-5-22应用程序操作系统网卡驱动程序1网卡驱动程序2网卡1网卡2Send()SendPackage()MySendPackage1()MySendPackage2()系统调用驱动程序接口硬件操
3、作图5.1 驱动程序模型北京理工大学珠海学院 计算机教研室72023-5-22n5.1.2 何时编写驱动程序操作系统没有内置支持的硬件扩展已有驱动的功能提供软件层面的服务n伪驱动(Pseudo Driver):所谓的伪驱动,就是不是真正意义上的驱动;而挂着驱动的名号,却又是因为和底层驱动有着千丝万缕的联系.n5.1.3 驱动程序模型为简化驱动程序的编写,把驱动程序分层提取某一类外设的共性,作为独立的一层,并提供通用的代码和库北京理工大学珠海学院 计算机教研室82023-5-22n5.1.4 编写驱动程序的几个要素了解驱动程序所针对的硬件(Datasheet)了解目标操作系统下驱动的工作机制n驱
4、动程序的加载和卸载;n驱动程序的初始化工作;n外设I/O的访问;n中断的处理;nDMA的处理;n内存的使用以及异步操作的进行方式等。了解驱动程序的模型n不同的操作系统会提供不同的驱动模型北京理工大学珠海学院 计算机教研室92023-5-225.2 Windows CE驱动程序n5.2.1 Windows CE驱动程序开发简介驱动程序的两种形式n.LIB库文件,随操作系统的启动和关闭进行加载和卸载;n操作系统启动后对硬件进行延迟加载。Windows CE的所有驱动程序都以用户态下的DLL文件形式存在,运行在用户态。北京理工大学珠海学院 计算机教研室102023-5-22驱动程序作为用户态DLL的
5、优点:n给操作系统和驱动程序带来了很大的灵活性,动态加载所需的驱动程序,可实现外设的即插即用;n增强系统的稳定性;n给驱动开发人员提供便利。n5.2.2 Windows CE驱动程序的宿主DLL无法单独被加载和运行,必须先有一个EXE进程将DLL加载到自己的地址空间Windows CE中有3个系统进程会加载和执行驱动程序的DLL,分别是Device.exe,GWES.exe,FileSys.exe北京理工大学珠海学院 计算机教研室112023-5-22Device.exe网卡电池声卡串口NLEDUSB HOSTHIDPrinterrNDISMass StoragePCMCIAHostATADi
6、skSerCardGWES.exe鼠标驱动键盘驱动触摸屏驱动打印机驱动显示驱动FileSys.exe文件系统驱动图5.2 系统进程与其加载的驱动程序北京理工大学珠海学院 计算机教研室122023-5-22Device.exe在Windows CE中称做设备管理器。负责加载和管理Windows CE下绝大多数的设备驱动程序,包括网卡驱动、电池驱动、声卡驱动、串口驱动、USB设备驱动及PCMCIA驱动等;GWES.exe通常是一些与图形界面相关的I/O设备驱动。例如鼠标键盘驱动、显卡的驱动及触摸屏驱动等。FileSys.exe在系统中负责管理Windows CE中的对象存储和文件系统。故FileS
7、ys.exe须负责加载所有的文件系统驱动程序。如FAT文件系统驱动和CDFS文件系统驱动等。北京理工大学珠海学院 计算机教研室132023-5-22n5.2.3 分层驱动程序与单体驱动程序GWESDDI函数DDI函数分层驱动程序MDDDDSI函数PDD单体驱动程序硬件图5.3 单体驱动程序与分层驱动程序北京理工大学珠海学院 计算机教研室142023-5-225.2.3.1 单体驱动程序n即所有的驱动程序代码(包括中断处理、I/O操作及硬件控制等)都被放在一起。n会暴露DDI接口(Device Driver Interface)给操作系统。DDI函数是操作系统与驱动程序交互的接口协议。5.2.3
8、.2 分层驱动程序n分两层:上面一层是模型设备驱动(Model Device Driver,MDD),下面一层是平台相关驱动(Platform Dependence Driver,PDD)nMDD层包含某一类型的驱动程序所通用的代码;PDD层包含特定的硬件或平台专用的代码。n操作系统访问硬件时,MDD层会调用特定的PDD函数nPB会自带某类型驱动的MDD代码,无须修改;只须修改PDD层的代码。驱动程序代码相对紧凑,对于效率要求较高的场合,可以选择。同时此模型相对清晰北京理工大学珠海学院 计算机教研室152023-5-22n给驱动程序分层后,MDD和PDD之间还需要一个接口协议。故分层驱动中有两
9、类接口函数:操作系统与MDD之间的DDI与MDD和PDD之间的DDSI(Device Driver Service provider Interface)n通常,MDD层的代码与PDD层的代码被编译成独立的静态LIB库,然后进行链接,形成可执行的驱动程序。MDD与PDD的划分只是在源代码逻辑层面,在驱动程序的二进制可执行代码中不存在分层概念nMDD的特性:包含某一类驱动程序所通用的代码;调用PDD层访问硬件设备;与PDD层代码进行链接,定义PDD层必须实现的DDSI函数,并在代码中使用这些函数;对于操作系统实现DDI函数,供操作系统与驱动程序交互;北京理工大学珠海学院 计算机教研室162023
10、-5-22nMDD的特性:进行中断处理;对于同一类型的驱动程序,代码可重用;编译后生成的lib库可与不同的PDD库进行链接;通常无须改动;中断处理线程IST通常位于这一层。nPDD层的特性:包含与某款硬件相关的代码;对于不同的硬件产品或标准有不同的实现;只能与某一类MDD协同工作;实现MDD所需要的DDSI函数。在PB中自带的驱动程序中,声卡驱动程序的代码是典型的分层驱动程序例子。%_WINCEROOT%PUBLICCOMMONOAKDRIVERSWAVEDEV目录下北京理工大学珠海学院 计算机教研室172023-5-22n5.2.4 Windows CE驱动程序的分类(P202)n5.2.5
11、 示例驱动程序代码PB自带了大量的驱动程序代码Production-Quality Device Driver(P205)特性n不经修改就可在总线工作;n尽量减少驱动程序在不同的硬件平台上移植所作的改动n对于特定的驱动技术,实现尽量多的功能;n在PB IDE的Catalog View中要有对应的可选项;n对硬件设备所依赖的总线不作任何假设;n对源代码有充分的注释;n尽量使用Windows CE5.0的特性;n尽量减少PDD的代码,使驱动程序更加方便移植;n对于资源的分配,尽量使用注册表进行配置;n提供可重用平台无关的库。北京理工大学珠海学院 计算机教研室182023-5-22大部分驱动程序的代
12、码放在目录%_WINCEROOT%PUBLICCOMMONOAKDRIVERS下,这些驱动程序都是与平台无关的。在BSP目录中也有一些驱动程序的代码,在目录%_WINCEROOT%PLATFORMSRCDRIVERS中,这些驱动都是与平台相关的。北京理工大学珠海学院 计算机教研室192023-5-22EXE文件n比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。n可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。n在构造软件系统时,常常将所有模块的源代码都静态编译到整个应用程序EXE文件中。北京理工大学珠海学院 计算机教研室2
13、02023-5-22EXE文件的软肋n源代码都静态编译到整个应用程序EXE文件中,会产生一些问题。一是增加了应用程序的大小,占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费。另一个缺点是,在编写大的EXE程序时,在每次修改重建时都必须调整编译所有源代码,增加了编译过程的复杂性,也不利于阶段性的单元测试。北京理工大学珠海学院 计算机教研室212023-5-22Windows CE中如何解决问题?nWindows CE中内存资源更少,甚至都没有硬盘,资源问题更为突出。nWindows系统平台上提供了一种有效的编程和运行环境,你可以将独立的程序模块创建为较小的文件,并可对它们
14、单独编译和测试。n这些较小的模块就是动态链接库DLL。北京理工大学珠海学院 计算机教研室222023-5-22Windows CE中的DLLn在运行时,只有当EXE程序确实要调用这些DLL模块的情况下,系统才会将它们装载到内存空间中。nWindows自己就将一些主要的系统功能以DLL模块的形式实现。北京理工大学珠海学院 计算机教研室232023-5-22动态链接库(Dynamic Link Library)n动态链接库缩写为DLL。nDLL是一些编译过的可执行程序模块、数据或其他资源,可以被应用程序或其他DLL调用。nDLL的应用非常广泛,可以实现多个应用程序的代码和资源共享。北京理工大学珠海
展开阅读全文