AR# 47531

Zynq-7000 SoC、SDIO - DMA バースト トランザクションのアライメントおよび長さに関する要件

説明

DMA バッファーでデータが上書きされるのを防ぐため、DMA バーストの長さを 4 バイトの倍数でアラインさせる必要があります。

ソリューション

影響:

深刻な問題ではありません。

回避策:

最終バッファーを除きすべてのバッファーが 4 バイトの倍数になるようにします。最終バッファーはどのサイズでもかまいません。

対象となる構成:

ADMA2 モードの SDIO コントローラーを使用するシステム

対象となるデバイス リビジョン:すべて。修正予定はありません。(Xilinx Answer 47916) - 「Zynq-7000 SoC デバイス - シリコン リビジョン間の相違点」を参照してください。

 

SD ホスト コントローラー仕様の v2.0 では ADMA2 バッファーの記述子およびそのポイント先のバッファーが 4 バイトの倍数でアラインされるものと定義されています。しかし、各 DMA エントリの長さは、1 から 64 KB までの任意のバイト数になります。 

この長さが 4 バイトの倍数でないと、ホスト メモリからカードへの ADMA2 書き込みがコントローラーで正しく処理されません。次の例を参考にしてください。

記述子表:

アドレス

長さ

データ

0x1000

4 バイト

0x0123_4567

0x2000

3 バイト

0xABCD_DEAD

0x3000

4 バイト

0x8912_2345


ADMA2 操作が開始すると、コントローラーはアドレス 0x1000 から 4 バイトのデータを取り込み、内部 FIFO のロケーション 0 にそのデータをプッシュします (各ロケーションは 32 ビット幅)。続いて、次の記述子データがアドレス 0x2000 から取り込まれ、ロケーション 1 にコピーされます。ロケーション 1 はいっぱいではないので (3 バイトのみが有効) 、ポインターがインクリメントしません。最終記述子データがアドレス 0x3000 から取り込まれ、ロケーション 1 にコピーされます。ロケーション 1 にあった 3 バイトは間違って上書きされます。

アンサー レコード リファレンス

マスター アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
47916 Zynq-7000 SoC デバイス - シリコン リビジョン間の相違点 N/A N/A
AR# 47531
日付 06/13/2018
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス