PCI总线电机控制卡的WDM设备驱动程序设计.doc

PCI总线电机控制卡的WDM设备驱动程序设计.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PCI总线电机控制卡的WDM设备驱动程序设计

PCI总线电机控制卡的WDM设备驱动程序设计 [ 作者:王磊,朱齐丹,王亮???? 转贴自:INTERNET???? 点击数:288???? 更新时间:2005-8-8???? 文章录入:Admin ] 【字体: 】 摘? 要:结合基于PCI总线的精密电机运动控制卡,介绍了PCI设备的WDM设备驱动程序的设计过程,PCI设备的获得,I/O端口的读写,内存的读写以及中断的处理,和设备驱动程序的安装。 ??? 关键词:PCI总线;WDM  1引言 ??? 微型计算机界以INTEL公司为主推出了PCI总线规范。采用PCI总线设备所具有的配置空间以及PCI总线通过桥接电路与CPU相连的技术使PCI总线具有广泛的适应性,并且PCI总线采用宽字节和高达33Mb的时钟频率的猝发和主控方式传输能满足高速设备的要求。 ??? 在WINDOWS操作系统下,开发PCI设备的驱动程序最好的方案是WDM驱动程序。在一个系统中开发出WDM驱动程序,稍加修改即可在其他系统中编译运行。 2WINDOWS驱动程序模型WDM ??? WDM(WINDOWS Driver Program Model)是一个模块化的、分层次类型的微型驱动程序结构,它是编写设备驱动程序的主要模型。设备驱动程序是提供连接到计算机的硬件的软件接口,它是操作系统的一部分,用户应用程序以一种规范的方式访问硬件,而不必考虑必须如何控制硬件。在WINDOWS中,驱动程序总是使设备看起来像是一个文件,可以打开设备的一个句柄,然后应用程序可以在设备句柄最后关闭之前向驱动程序发出读写请求。WDM是在Windows?NT驱动程序体系的基础上发展而来的,修改或增加了即插即用、电源管理等功能,使之适应硬件和用户的要求。 ??? PCI总线是一种高性能、与CPU无关的32/64位地址数据复用的总线,它支持突发传输、即插即用、电源管理等功能,不但能满足现在的应用需要,而且能够适应未来的需求。PCI总线支持硬件资源动态自动配置,以支持即插即用。在PCI设备插入PCI插槽或上电后,PCI总线配置机构自动根据PCI设备的要求实现配置。PCI总线支持内存读写、I/O端口读写、中断机制和DMA功能。由于这些硬件特点使PCI设备的WDM驱动程序的设计变得很复杂。在开发WDM驱动程序之前,还有必须掌握PCI设备的需要分配的资源等配置信息以及PCI设备的功能和操作方法。 ??? 在WDM中,采用了分层的驱动程序体系结构,总线驱动程序或类驱动程序在最底层直接与设备打交道,设备功能驱动程序在上层通过与低层驱动程序打交道,实现设备的功能,中间还可以有类过滤驱动程序或设备过滤驱动程序用于数据的过滤或转换。在PCI总线的驱动程序层中,其层次图如图1所示: ??? 在PCI设备的WDM驱动程序中,一般是编写功能驱动程序。PCI总线驱动程序由操作系统实现,过滤驱动程序一般在特殊的情况下需要编写。因此本文只讨论PCI设备功能驱动程序的设计。在PCI设备功能驱动程序中,需要处理PCI设备的内存、端口的读写、中断处理和DMA数据传输,实现PCI设备的功能,因此,PCI设备功能驱动程序是很标准的WDM设备驱动程序。 3PCI设备资源的获得及内存、I/O读写 ??? PCI设备的硬件资源是由PCI配置机构动态分配的,由PCI设备实现PCI配置寄存器,提出需要分配的硬件资源,由PCI配置机构分配资源。驱动程序需要取得这些资源,才能操作硬件。因此,PCI设备的硬件资源分配与管理是驱动程序中很重要的部分。硬件资源主要包括映射内存空间、I/O空间、中断。当系统的PNP管理器在取得设备的资源后会自动向驱动程序发出IRP_MN_START_DEVICE的IRP,在该IRP栈中包含了设备的资源信息。好的驱动程序都应该使用这种方法,每个支持PNP功能的驱动程序,都应实现IRP_MN_START_DEVICE处理。在该IRP处理中应先交给低层驱动程序处理后,再根据IRP栈内内容进行资源分配。 ??? 在PCI设备的驱动程序中,获得的设备内存是一段映射物理内存,这是无法使用的,需要将其映射成系统可以访问的非分页内存。函数MmMapIoSpace完成该功能。该函数的原型为: ??? 参数PhysicalAddress为物理地址;NumberOfBytes为地址的数量;CacheEnable为内存是否可以隐藏,取值可为MmNonCached,MmCached,MmWriteCombined,这里必须取为MmNonCached。 ??? 在PC上,I/O空间是一个64K字节的寻址空间。I/O端口的寻址方式与内存是不一样的。但是在WDM驱动程序中,对其处理与内存是一样的,把其看作寄存器,映射为设备内存。其映射方法和访问函数的用法与

文档评论(0)

youshen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档