2013-06-20 3 views
3

두 개의 SoC가 함께 연결된 임베디드 PCIe 시스템에서 작업 중이며 호스트는 루트 컴플렉스이며 슬레이브는 엔드 포인트입니다. 호스트는 Linux를 실행합니다.PCIe 엔드 포인트는 루트 컴플렉스 BAR에 액세스 할 수 있습니까?

일반적으로 호스트 SoC는 엔드 포인트 BAR이 매핑되는 메모리 창을 제공합니다. 이렇게하면 호스트의 카드 드라이버가 슬레이브의 IO 또는 메모리를 읽고 쓸 수 있습니다. 종종 슬레이브에는 PCIe IP에 내장 된 DMAC가 포함되며 PCIe 주소와 로컬 주소로 작동합니다. 호스트는 메모리 창에 기록하여이 DMAC를 설정합니다.

내 경우 엔드 포인트에는 PCIe IP에 내장 된 DMAC가 없지만 시스템 DMAC가 있습니다. 그럼, 두 가지 질문 ...

  1. BAR을 통해 루트 컴플렉스의 메모리에 액세스 할 수 있습니까?
  2. PCIe DMAC에 을 내장하지 않고 시스템 DMAC를 사용하면 성능에 미치는 영향이 있습니까? (즉, BAR을 통한 액세스는 PCIe 버스에 어떻게 표시됩니까? 각 액세스마다 하나의 TLP가 있습니까?)

도움이 되셨다면 도움이됩니다.

답변

2
  1. BAR은 기존 구성 공간 내에 있습니다. 그때 그 레지스터는 CfgRd 또는 CfgWr를 통해서만 도달 할 수 있습니다. 이러한 TLP (트랜잭션 계층 패킷)는 RC에서만 생성 될 수 있습니다. 그렇다면 EP는 RC의 유효한 메모리 주소를 어떻게 알 수 있습니까? 힘든 질문이지만, PCI-Express 사양에는 이에 대한 대답이 없습니다. 실제로 다른 지역보다 할당 될 가능성이 높은 지역이 있으므로 교육을 통해 추측 할 수 있습니다.

  2. BAR에 액세스하려면 요청 (CfgWr 또는 CfgRd)과 적절한 완료 (각각 Cpl 또는 CplD)가 필요합니다. 엔드 포인트가가의 PCIe 내장이없는 내 경우에는 내가 희망이 도움이

, 이것에 대해 조금 생각 후, 나는 대답은 분명하다 생각

+0

감사합니다. 도움이된다고 생각합니다. – user2504336

+0

Q2는 BAR을 읽는 것이 아니지만 BAR 창을 통해 데이터를 읽거나 쓰는 것입니다 (RC는 EP 메모리에 읽기/쓰기 시작). – user2504336

0

...

-DMAC의 경우 엔드 포인트는 PCIe 창을 사용하여 RC 메모리에만 액세스 할 수 있습니다. 일반적으로 이러한 창은 BAR에서 설명한대로 EP 메모리에 액세스하기 위해 RC에서 사용됩니다. 그러나 엔드 포인트가 RC 메모리에 액세스하는 데 동일한 메커니즘을 사용하는 것을 막을 수있는 방법은 없습니다. 유일한 문제는 설정 중 하나입니다. 이 시나리오에서 RC는 사용해야하는 PCIe 주소와 크기에 대해 엔드 포인트에 알려야합니다. 이것은 PCIe-DMAC의 경우와 다르지 않습니다.

관련 문제