Определение того, является ли устройство PCI PCI или PCIe

#c #pci #pci-e

Вопрос:

Мне нужно иметь возможность определить, является ли данное устройство PCI экспресс-или неэкспрессным во время выполнения. Один из возможных способов идентифицировать это-получить пространство конфигурации и проверить наличие расширенного раздела. Если расширенный раздел существует, то это карта PCIe. В частности, я бы проверил первые четыре байта, чтобы убедиться, что они 0x100 соответствуют требованиям спецификации.

Является ли это лучшим способом проверить, какой тип карты используется? Верны ли мои предположения?

Ответ №1:

Я думаю, что лучший способ-это поиск возможностей PCI Express, которые находятся в обычном пространстве возможностей, а не в расширенном пространстве. Наличие этой возможности указывает на устройство PCIe. Идентификатор возможности равен 0x10.

Комментарии:

1. где в пространстве конфигурации находится идентификатор возможности pcie? Какое смещение?

2. Это где-то в списке возможностей. Вы должны искать его, начиная с начала списка возможностей.

3. Является ли идентификатор возможности отражением аппаратного или программного обеспечения?