インテル® Agilex™ ハード・プロセッサー・システムのテクニカル・リファレンス・マニュアル

ID 683567
日付 1/19/2023
Public
ドキュメント目次

16.5.7.1. 内部DMAコントローラーの初期化

内部DMAコントローラーを初期化するには、次の手順を実行します。
  1. 必要なbmodレジスターのビットを設定します。
    • bmodレジスターの内部DMAコントローラー・イネーブル (de) ビットがDMA転送の途中で0に設定された場合、この変更は影響しません。ディスエーブルは、新しいデータ転送コマンドに対してのみ有効になります。
    • ソフトウェア・リセットを発行すると転送はすぐに終了します。インテルでは、ソフトウェア・リセットを発行する前に、ctrlレジスターのdma_resetビットを1に設定し、ホストがDMAインターフェイスをリセットすることを推奨しています。
    • bmodレジスターのpblフィールドは読み取り専用であり、fifothレジスターのDMA multiple transaction size (dw_dma_multiple_transaction_size) フィールドの内容を直接反映します。
    • bmodレジスターのfbビットは、システムのパフォーマンスに応じて適切に設定する必要があります。
  2. 次のガイドラインに従いidintenレジスターに書き込み、不要な割り込みの原因をマスクします。
    • Descriptor Unavailable割り込みがアサートされた場合は、ソフトウェアで記述子を形成し、Ownビットを適切に設定した後、Poll Demand (pldmnd) レジスターに書き込み、内部DMAコントローラーで記述子を再フェッチする必要があります。
    • 転送に関連するエラーはソフトウェアに報告されるため、ソフトウェアで異常の割り込みを有効にすることは常に適切です。
  3. 送信記述子リストまたは受信記述子リストをメモリーに配置します。次に、リスト内の最初の記述子のベースアドレスを内部DMAコントローラーのDescriptor List Base Address (dbaddr) レジスターに書き込みます。DMAコントローラーはその後、記述子リストをメモリーからロードします。内部DMAコントローラーの送信シーケンスおよび内部DMAコントローラーの受信シーケンスにおいて、この手順の詳細を説明しています。