AR# 38881

12.3 EDK、XPS Central DMA - EDK デザインで Central DMA を正しく使用する方法

説明

EDK デザインに XPS Central DMA を追加し、コードを書きましたが、DMA が機能しません。

何が問題なのでしょうか。

ソリューション

Central DMA を機能させるには、DMA コントローラがハードウェア システムに正しく接続されていて、DMA レジスタが正しくコンフィギュレーションされていることを確認する必要があります。

ハードウェアの接続 :

XPS Central DMA コントローラには SPLB と MPLB の 2 つのバス インターフェイスがあります。SPLA インターフェイスは DMA 内部レジスタのコンフィギュレーション用に使用され、通常はシステムのプロセッサによって使用されます。MPLB インターフェイスは DMA トランザクションを開始するために DMA 自体により使用されます。
接続を行っているとき、プロセッサまたは DMA レジスタをコンフィギュレーションするのに使用されるマスターが SPLB インターフェイスにアクセスできるようになっていることを確認します。つまり、DMA の SPLB インターフェイスは、プロセッサと同じ PLB バスに接続する必要があり、正しいアドレスが DMA に割り当てられていることを確認します。DMA の SPLB が異なる PLB バスに接続されているケースでは、プロセッサのリクエストを DMA へ送信するのに PLBv46 - PLBv46 間のブリッジが必要です。この場合、ブリッジのアドレス範囲に DMA アドレスが含まれていることを確認します。

DMA の MPLB インターフェイスにソースとデスティネーションの両方のデバイスにアクセスがあることを確認します。つまり、DMA の MPLB では、ソース デバイスとデスティネーション デバイスが同じ PLB バスに接続されている必要があります。ソース デバイスまたはデスティネーション デバイスが DMA の MPLB と同じバスにない場合も、DMA のリクエストをデバイスに送信するため PLBv46 - PLBv46 間のブリッジが必要です。そして、ソース デバイスまたはデスティネーション デバイスのアドレスがブリッジのアドレス範囲に含まれていることを確認します。

XPS Central DMA には LMB BRAM など PLB バスにはないデバイスへのアクセスはありません。PLB バスにはないデバイスは DMA のソースまたは デスティネーションのデバイスとして使用できません。


ソフトウェア アプリケーション :

DMA トランザクションを開始するのは比較的簡単で、SA、DA および LENGTH レジスタをコンフィギュレーションするだけです。 LENGTH レジスタが書き込まれた後に DMA トランザクションは開始します。ソースまたはデスティネーションのアドレスに物理的なアドレスではなくバッファが使用されている場合、そのバッファが DMA がアクセスできるメモリ デバイスに割り当てられていることを確認します。たとえば、アプリケーションが LMB BRAM にリンクされている場合、バッファも LMB BRAM にあるはすです。この場合、DMA には LMB BRAM へのアクセスがないのでエラーが発生します。
AR# 38881
日付 12/15/2012
ステータス アクティブ
種類 一般
IP