4

私は、2 つの SoC が接続されている組み込み PCIe システムに取り組んでいます。ホストはルート コンプレックスであり、スレーブはエンドポイントです。ホストは Linux を実行します。

通常、ホスト SoC は、エンドポイント BAR がマップされるメモリ ウィンドウを提供します。これにより、ホスト上のカード ドライバがスレーブ上の IO またはメモリに読み書きできるようになります。多くの場合、スレーブには、PCIe アドレスとローカル アドレスで動作する PCIe IP に組み込まれた DMAC が含まれます。ホストは、メモリ ウィンドウに書き込むことによって、この DMAC をセットアップします。

私の場合、エンドポイントには PCIe IP に組み込まれた DMAC はありませんが、システム DMAC はあります。そこで、質問を2つ...

  1. エンドポイントは、BAR を介してルート コンプレックスのメモリにアクセスできますか?
  2. 組み込みの PCIe DMAC の代わりにシステム DMAC を使用すると、パフォーマンスへの影響はありますか? (つまり、BAR 経由のアクセスは PCIe バス上でどのように表示されますか? アクセスごとに 1 つの TLP を取得しますか?)

どんな助けでも大歓迎です!

4

3 に答える 3

1
  1. BAR は、従来の構成スペース内に存在します。そのため、そのレジスターには CfgRd または CfgWr でのみアクセスできます。これらの TLP (Transaction Layer Packets) は、RC からのみ発信できます。では、EP は RC の有効なメモリ アドレスをどのように知るのでしょうか? 難しい質問ですが、PCI-Express 仕様にはその答えがありません。実際には、他の地域よりも割り当てられる可能性が高い地域があるため、経験に基づいた推測を行うことができます。

  2. BAR にアクセスするには、要求 (CfgWr または CfgRd) と適切な完了 (それぞれ Cpl または CplD) の少なくとも 2 つの TLP が必要です。

それが役立つことを願っています、

于 2013-06-20T18:10:53.427 に答える
1

これについて少し考えてみると、答えは明らかだと思います...

エンドポイントに PCIe-DMAC が組み込まれていない私の場合、エンドポイントは PCIe ウィンドウを使用してのみ RC メモリにアクセスできます。通常、これらのウィンドウは、RC で EP メモリにアクセスするために使用されます (詳細は BAR を参照)。ただし、エンドポイントが同じメカニズムを使用して RC メモリにアクセスするのを止める方法はありません。唯一の問題は、セットアップの 1 つです。このシナリオでは、RC は、使用する必要がある PCIe アドレスとサイズについてエンドポイントに通知する必要があります。これは、PCIe-DMAC の場合と変わりません。

于 2013-07-02T12:07:24.957 に答える