




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PCI设备Windows通用驱动程序设计摘要通用高速PCI总线目标模块全面地讨论了Windows 设备驱动程序编写时所面临的主要问题及解决方案关键词经常要在机的软件中访问和控制硬件设备包括Windows95/98Windows 2000为了保证系统的安全性对应用程序访问硬件资源加以限制Windows下的驱动程序不仅仅包括物理设备的驱动程序为了简化问题本文将以撏酶咚伲校茫勺芟吣勘昴探讨PCI设备的驱动程序设计方案它可以完成一般PCI设备驱动所需的功能Çý¶¯³ÌÐò²»»á
2、182;ÀÁ¢µØ´æÔÚͨ¹ýÉ豸Çý¶¯³ÌÐò´Ó¶ø¿ÉÒÔʵÏÖ¶à½ø³Ì²¢ÐÐÔË
3、208;н«µ÷ÓÃÉ豸Çý¶¯³ÌÐòµÄpc机程序称为用户程序所以大多数情况下驱动程序也不能通用一般至少要设计Windows 9X和Windows NT两个驱动程序版本同时它又推出一个新的Win32 Drivers Mode (WDM驱动类型如USB 设备这个新的类型实际是在Windows NT的驱动模型的基础上增加了即插即用等内容先前叫Windows NT5.0´&
4、#211;³¤Ô¶µÄ½Ç¶È¿´µ«´ÓĿǰµÄÊг¡Çé¿öÀ´¿´ËùÒÔWDM在近一两年还无法替代其它类型的设备驱动0级2级和3级而用户程序运行在3级上具体的限制在不同的操作系统中是不同的Windows 9
5、5支持的驱动类型很多 主要是VxD和打印机驱动两类VxD运行在Intel系统的0级上对任何I/O设备有全部访问权VxD驱动通常以放在WindowsSystem目录下也可以在程序运行时根据需要动态地载入但打印机驱动程序不是VxDͬWindows 95类似Kernel ModeUser Mode之分 PCI通用驱动程序要求对各种硬件资源访问开发设备驱动采用的主要开发工具是微软为设备开发者提供的软件包Device Driver Kit (DDK±àÒëÐèÒªµÄÍ
6、183;ÎļþºÍ¿âÎļþÔÚDDK中还定义了一些设备驱动可以调用的系统底层服务中断服务可安装文件系统服务等等但Windows 95的DDK由于主要使用汇编语言描述因此VtoolsD是基于C/C+的使用和维护都较Windows DDK容易PCI驱动程序的特点在设计驱动程序之前更需要详细了解硬件设备的特性需要了解的最主要的硬件特性包括设备的总线结构设备采用什么总线结构非常关键如ISA和PCI ËùÒÔÇ
7、ý¶¯³ÌÐòÉè¼ÆÒ²²»Í¬寄存器要了解设置的控制寄存器以及这些寄存器工作的特性设备错误和状态要了解如何判断设备的状态和错误信号 port也就是通过CPU的IN/OUT指令进行数据读写但PCI规范不包括从属DMA的说明设备内存许多设备自身带有内存有的设备还要通过驱动程序设置设备的接口寄存器在DDK文档中有规定这是根据设备的不同而不同的但基本功能就是完成设备的初始化中断的设置如前面所说但驱动程序所要完成的工作却是相同的仅在
8、需要的地方指出两个操作系统的不同 ѰַPCI器件的资源和对PCI器件中断的服务所有软件扩展ROM码PCI BIOS规范有完整的有关PCI BIOS功能的描述在PCI设备驱动程序的初始化过程中devicevendor indexͨ¹ýµ÷ÓÃPC IBIOS确认其存在总线号这是该器件利 用总线号功能的PCI配置空间设备驱动就需要从配置空间获得硬件的参数包括所用的中断号存储器的地址存储器映射方式等读写配置空间可以调用BIOS中断1AHÔÙ¶
9、212;ÅäÖÿռäÊý¾Ý¼Ä´æÆ÷(0CFCH进行读写最重要的是获得基址寄存器(BADRϵͳ¿ÉÄÜ»á¸ù¾ÝÓ²¼þÇé¿öΪPCI设备分配新的资源而基址4是按
10、内存方式映射的可以读对应端口的配置寄存器(Configuration RegisterÅÐ¶ÏÆä0位表示其是按内存方式设置的内存方式和I/O方式的配置寄存器的含义参见文献如果要获得基址的大小然后读基址寄存器从第4位开始的0的数目表示基址的大小则从第2位开始的0的数目表示基址的大小查找PCI设备的工作是由HalGteBusData完成的但DDK推荐使用HaiGetBusDataOffset函数端口操作在PC机上所以处理方法也不同它不象内存有实模式和保护模式之分在Windows 9X下而不一定非通过专门的驱动程序来完成甚至可以不用专门设
11、计驱动程序由于PCI总线是32位的总线标准而且以前大多数C/C+编译软件都没有提供双字的函数在Windows NT下级的用户程序和用户模式驱动程序直接使用I/O指令所以任何对I/O的操作都需要借助内核模式驱动来完成一是在驱动程序中使用IoReportResourceUsage报告资源占用PORT WRITE XXX函数读写另一种是驱动程序修改NT的I/OPermissions Map(IOPMÕâʱÓû§³ÌÐò²ÉÓÃÍ
12、¨³£µÄI/O指令进行操作用户程序设计简单程序不能移植到非Intel的系统中±£»¤Ä£Ê½ÓëʵģʽµÄ¸ù±¾Çø±ðÔÚÓÚCPU寻址方式上的不同Windows采用了分段分页机制如图这样使应用程序产生一种错觉这样做最大的好处就是一个程序
13、可以很容易地在物理内存容量不一样的编程人员使用虚拟存储器可以写出比任何实际配置的物理存储器都大得多的程序通过分段机制再通过分页机制线性地址被分割成页目录(Page Directoryµ±½¨Á¢Ò»¸öеÄWin32进程时并建立它自己的页目录页目录的地址也同时放入进程的现场信息中系统首先从CPU控制器CR3中读出页目录所在的地址再根据页表得到实际代码最后再根据页偏移访问特定的单元但应用程序读写的是虚拟地址从物理地址到线性地址的转换工作也是由驱动程序来完
14、成的使用DDK的VMMCallÇý¶¯³ÌÐòµÄÄÚ´æÓ³É䲿·ÖÖ÷ÒªÊǵ÷ÓÃVxD的系统服务MapPhysToLinearPVOID MapPhysToLineag(CONST VOID * PhysAddr,DWORD nBytes,DWORD Flags;其
15、中第一个参数PhysAddr就是要映射的内存的物理地址的起始位置Flags必须设置为0Èç¹ûÖ¸¶¨µÄÄÚ´æ²»ÄÜ´æÈ¡比如要映射物理内存ED000000H开始的4096个字节PCHAR *PointerToPage=(PCHARMapPhysToLinear(PVOIDOxED000000,4096,0;而将PointerToPage传递给调用驱动的用户程序而通过对
16、这个指针的操作就可以实现对物理内存ED000000H进行读写首先调用IoReportResourceUsage请求使用设备的内存再使用MmMapIoSpace把设备的内存映射到虚拟空间调用MmUnmapIoSpace 断开设备的内存和虚拟空间的连接中断的设置响应与调用应该在驱动程序中完成Int完成DDK还提供了响应中断事件的服务VPICD服务用来管理所有硬件中断事件对一个特定的IRQ中断源或者允许其它VxD重载中断处理函数要处理硬件中断应该从VHardwareInt继承一个类个类中在Windows NT中设备驱动首先使用HalGetInterrupuVector将与总线有关的中断向量转换为系统
17、的中断向量×ÜÊÇÐèÒªÓÉÓû§³ÌÐòÀ´µ÷ÓÃÇý¶¯²¢ÊµÏÖÒ»¶¨µÄ¹¦Äܵõ½Ò&
18、#187;¸öÎļþ¾ä±úʹÓÃÈçϵÄÓï¾ä¾Í¿ÉÒÔ´ò¿ªÎļþµ÷ÓÃDeviceIoControl函数就可以同设备驱动程序交换数据了可以调用CloseHandle(hVxD这种调用方式也是Windows NT调用设备驱动的标准方法如DPMI方式在两个操作系统下Íê³ÉÁ˶ÔÇý¶¯³ÌÐòµÄ³õ²½Éè¼Æ³ÌÐòÒ²²»Ì«ÈÝÒ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 演出经纪人之《演出经纪实务》能力测试B卷含答案详解【预热题】
- 2025年教师招聘之《幼儿教师招聘》检测卷包附参考答案详解(能力提升)
- 2025年教师招聘之《幼儿教师招聘》通关练习题和答案附参考答案详解【培优】
- 花烟草养护知识培训内容课件
- 教师招聘之《小学教师招聘》题库检测模拟题(必刷)附答案详解
- 2025年教师招聘之《小学教师招聘》通关试卷提供答案解析审定版附答案详解
- 教师招聘之《小学教师招聘》能力测试备考题含完整答案详解(网校专用)
- 教师招聘之《小学教师招聘》题库(得分题)打印附完整答案详解(易错题)
- 教师招聘之《幼儿教师招聘》复习提分资料及参考答案详解【b卷】
- 2025年教师招聘之《幼儿教师招聘》模拟考试题库B卷及答案详解(必刷)
- 无组织排放管理办法
- 2025年新爆破安全员模拟考试题及答案
- 护理实习生入科宣教课件
- 陕西省农村宅基地管理办法
- 防范毒品安全课件
- 核心素养背景下项目式学习在初中美术教学中的设计与应用
- 手术室VTE的预防和护理
- 易地移民搬迁政策课件
- 建筑施工现场管理人员配备标准
- 陕旅版小学六年级上册全册英语教案
- 海洋工程装备概述
评论
0/150
提交评论