Necesito ayuda para entender la enumeración PCIe
PCIe cambia IO asignada de IO a IO asignada en memoria. La especificación PCIe presenta un mecanismo mejorado para la lectura de configuración con MMIO. Dado que PCIe conoce la dirección de memoria del registro de configuración, PCIe utiliza la lectura de memoria para configurar la transacción de lectura.
Durante la enumeración, el punto final PCIe no se asigna a la dirección de memoria. (Ni siquiera está asignado a BDF). Para asignar BDF, la CPU solicita una ID de proveedor para determinar si el punto final PCIe es válido. Si el punto final PCIe envía una ID de proveedor válida, la CPU asigna al BDF para el punto final PCIe y escribe la dirección de memoria en las BARRAS de configuración para crear E/S asignadas en memoria.
Para obtener una ID de proveedor, entiendo que la CPU usa escritura IO en el puerto de dirección (que está en el mapa IO 0x0CF8) y lectura IO desde el puerto de datos (que está en el mapa IO 0xCFC).
Sin embargo, la CPU ARM solo tiene un mapa de memoria (no tiene un mapa de IO), entonces, ¿cómo solicita una ID de proveedor? ¿Qué tipo de paquete TLP se utiliza?
Le agradecería que pudiera explicar el proceso de enumeración en el paquete PCIe sin mapa IO.