PCI配置空间简介于(转贴).docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PCI配置空间简介?作者:/u/1197258360敏行PCI有三个相互独立的物理地址空间:设备存储器地址空间、I/O地址空间和配置空间。配置空间是PCI所特有的一个物理空间。由于PCI支持设备即插即用,所以PCI设备不占用固定的内存地址空间或I/O地址空间,而是由操作系统决定其映射的基址。系统加电时,BIOS检测PCI总线,确定所有连接在PCI总线上的设备以及它们的配置要求,并进行系统配置。所以,所有的PCI设备必须实现配置空间,从而能够实现参数的自动配置,实现真正的即插即用。PCI总线规范定义的配置空间总长度为256个字节,配置信息按一定的顺序和大小依次存放。前64个字节的配置空间称为配置头,对于所有的设备都一样,配置头的主要功能是用来识别设备、定义主机访问PCI卡的方式(I/O访问或者存储器访问,还有中断信息)。其余的192个字节称为本地配置空间,主要定义卡上局部总线的特性、本地空间基地址及范围等。?访问PCI配置空间方法一访问PCI配置空间可通过两个访问寄存器,CONFIG_ADDRESS寄存器和CONFIG_DATA寄存器。这两个寄存器在PC中分别对应着CF8h和CFCh端口,并且是32位端口,即读写要用的32为IN和OUT汇编指令。每个PCI设备可应用三个信息进行定位,即Bus Number、Device Number和Function Number。另外,PCI配置空间一共是256个字节,被分割成64个4字节的寄存器,从0-63编号。每次要访问PCI配置空间时,先设置CONFIG_ADDRESS寄存器,这时CONFIG_DATA存储器的内容就对应着该PCI配置空间中的相应的寄存器。?访问PCI配置空间方法二第二种访问配置空间的方法是通过HalGetBusData和HalSetBusData两个内核函数。这两个函数将方法进行了封装,不需要程序员对PCI空间进行直接读取。DDK提供了两个内核函数HalGetBusData和HalSetBusData,分别用于读取PCI设备的配置空间和设置PCI配置空间。ULONG HalGetBusData(IN BUS_DATA_TYPE BusDataType,IN ULONG BusNumber,IN ULONG SlotNumber,IN PVOID Buffer,IN ULONG Length);注解:*?BusDataType:该参数指定总线类型。HalGetBusData函数可以查询各个总线的情况,对于PCI总线,这里设置为PCIConfiguration。*?BusNumber:该参数指定Bus的总线号.*?SlotNumber:该参数由Device号和功能号共同组成。*?Buffer:该参数是得到的PCI配置空间的首地址。*?Length:该参数是PCI配置空间的大小。?访问PCI配置空间方法三(本例仅限于WDM驱动,比较广泛使用)方法二适用于NT式驱动,但并不适用于WDM驱动。WDM中使用IRP获得PCI配置空间。此方法不需要了解PCI具体的配置空间结构,WDM驱动程序已经帮助程序员从PCI配置空间中分析出有用信息,并通知给程序员。WDM会为不同总线上的设备提供一个PDO设备,当程序员所写的功能驱动挂接在PDO之上的时候,就可以将IRP_MN_START_DEVICE传递给底层的PDO去处理。PCI总线的PDO就会得到PCI配置空间,并从中得到有用信息,如中断号、设备物理内存及I/O端口等信息。在处理完IRP_MN_START_DEVICE后,驱动程序会将处理结果存储在IRP的设备堆栈中,从I/O堆栈可以取出CM_FULL_RESOURCE_DESCRIPTOR数据结构,从CM_FULL_RESOURCE_DESCRIPTOR中可以取出CM_PARTIAL_RESOURCE_LIST数据结构,而在CM_PARTIAL_RESOURCE_LIST中又可以取出CM_PARTIAL_RESOURCE_DESCRIPTOR数据结构。CM_FULL_RESOURCE_DESCRIPTOR数据结构就是PDO帮助程序员从256字节的PCI配置空间中获取的有用信息,这其中包括终端号、设备物理内存、I/O端口等信息。?访问PCI配置空间方法四(本例仅限于WDM驱动)方法三没有完整的的获取到256字节的PCI配置空间,需要自己创建IRP_MN_READ_CONFIG或者IRP_MN_WRITE_CONFIG,然后将创建好的即插即用IRP发送到底层的PDO,并等待PDO的处理。该方法获取完整的PCI配置空间。??配置空间 操作系统 PCI总线推出以来,以其独有的特性受到众多厂商的青睐,已经成为计算机扩展总线的主流。目前,国内的许多技术人员已经具备开发PCI总线接口设备的能力。但是PC

文档评论(0)

zzabc001 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档