AXI バースト インターフェイスに基づく FPGA デバイスと通信する必要があります。DMA を使用せずに Linux を介してそのようなデバイスにアクセスするには、どのような方法がありますか? バーストは AXI 規格の固有のプロパティであり、通常、大量のデータが転送されるときに自動的にトリガーされます。さらに大きな問題は、FPGA が AXI バスを介したバースト タイプの要求にのみ応答するように設計されていることです。そのため、アプリケーションがシーケンシャル コピーを試みると、Linux で深刻な問題が発生します。私はすでに試しましたが、うまくいきmemcpy
ません。
質問する
2346 次
2 に答える
1
コンポーネントの機能をハードウェアに通知するには、MMU をセットアップする必要があります。また、相互接続全体がバーストをサポートし、変換を行っていないことを確認する必要があります (これは、相互接続が生成されたときにコンポーネントの機能について曖昧な点がある場合に発生する可能性があります)。
MMU をセットアップするには、次のような呼び出しを実行します。
/* shareable device: S=b0 TEX=b000 AP=b11, C=b0, B=b1 = 0xC06*/
Xil_SetTlbAttributes(COMPONENT_BASE_ADDRESS, 0xC06);
属性は次のように定義されます ( Zynq テクニカル リファレンス マニュアルから)。
Encoding Bits Cache Attribute
C B
0 0 Non-cacheable
0 1 Write-back, write-allocate
1 0 Write-through, no write-allocate
1 1 Write-back, no write-allocate
したがって、上記の行はリージョンをライトバック、書き込み割り当てに設定します。これにより、書き込み時にバーストアクセスが可能になる場合があります。
ザイリンクス AR#47406およびこのフォーラム投稿も参照してください。
于 2014-03-13T10:35:08.253 に答える