О перечислении PCIe без карты ввода-вывода

О перечислении PCIe без карты ввода-вывода

Мне нужна помощь в понимании перечисления PCIe

PCIe изменяет IO, сопоставленный с IO, на IO, сопоставленный с памятью. Спецификация PCIe представляет улучшенный механизм для чтения конфигурации с MMIO. Поскольку PCIe знает адрес памяти регистра конфигурации, PCIe использует чтение памяти для выполнения транзакции чтения конфигурации.

Во время перечисления конечная точка PCIe не назначается адресу памяти. (Она даже не назначается BDF.) Чтобы назначить BDF, ЦП запрашивает идентификатор поставщика, является ли конечная точка PCIe допустимой. Если конечная точка PCIe отправляет допустимый идентификатор поставщика, ЦП выделяет BDF для конечной точки PCIe и записывает адрес памяти в конфигурационные BAR, чтобы сделать сопоставленный с памятью ввод-вывод.

Насколько я понимаю, для получения идентификатора поставщика процессор использует запись ввода-вывода в порт адреса (который находится в карте ввода-вывода 0x0CF8) и чтение ввода-вывода из порта данных (который находится в карте ввода-вывода 0xCFC).

Однако у ARM CPU есть только карта памяти (у него нет карты ввода-вывода), тогда как он запрашивает Vendor ID? Какой тип пакета TLP используется?

Буду признателен, если вы сможете объяснить процесс перечисления в пакете PCIe без карты ввода-вывода.

Связанный контент