PCIe 열거를 이해하는 데 도움이 필요합니다
PCIe는 IO 매핑 IO를 메모리 매핑 IO로 변경합니다. PCIe 사양에는 MMIO를 통한 구성 읽기를 위한 향상된 메커니즘이 도입되었습니다. PCIe는 구성 레지스터의 메모리 주소를 알고 있으므로 PCIe는 메모리 읽기를 사용하여 읽기 트랜잭션을 구성합니다.
열거 중에 PCIe 끝점이 메모리 주소에 할당되지 않습니다. (BDF에는 할당되지도 않습니다.) BDF를 할당하기 위해 CPU는 PCIe 엔드포인트가 유효한지 공급업체 ID를 요청합니다. PCIe 끝점이 유효한 공급업체 ID를 보내는 경우 CPU는 PCIe 끝점용 BDF에 할당되고 메모리 주소를 구성 BAR에 기록하여 메모리 매핑 IO를 만듭니다.
공급업체 ID를 얻으려면 CPU가 주소 포트(IO 맵 0x0CF8에 있음)에 IO 쓰기를 사용하고 데이터 포트(IO 맵 0xCFC에 있음)에서 IO 읽기를 사용한다는 것을 알고 있습니다.
그런데 ARM CPU에는 메모리 맵만 있고(IO 맵은 없음) Vendor ID를 어떻게 요청합니까? 어떤 유형의 TLP 패킷이 사용됩니까?
IO 맵 없이 PCIe 패킷의 열거 프로세스를 설명해 주시면 감사하겠습니다.