使用PCI配置空间识别PCIe设备

时间:2011-04-25 19:37:30

标签: hardware pci pci-bus

鉴于系统中安装的PCI设备列表,我需要识别PCIe设备。到目前为止,我一直在使用功能列表上的迭代来查看设备是否具有扩展的上限结构(这将对应于上限ID 0x10)。并且,如果设备具有扩展的帽结构,那么它肯定是PCIe设备。但是,似乎这种方法无法识别某些设备。我想知道是否有人知道更好的方法。

感谢。

2 个答案:

答案 0 :(得分:2)

我使用以下方式检索PCIe设备:

  1. 检查PCI设备配置寄存器0x6 bit4 = 1(能力列表存在状态)?
  2. 检查PCI设备配置寄存器0x34!= 0(能力指针有效)?
  3. 检查是否存在PCIe功能(ID = 0x10)?
  4. 如果以上都是真的那么这个设备就是PCIe设备!!!

    我很好奇“这种方法无法识别某些设备”的情况?

答案 1 :(得分:0)

PCI / PCIE设备扫描,可能在功能指针中有冗余地址(损坏的PCI配置空间)。

请检查所有B:D:F组合中的能力指针值是否有任何冗余, 如果您发现任何问题,可以直接与BIOS供应商联系以纠正错误。