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

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

16.5.7.2. 内部DMAコントローラーの送信シーケンス

内部DMAコントローラーを使用してデータを送信するには、次の手順を行います。
  1. ホストは、送信の記述子フィールド (DES0からDES3) を設定し、OWNビット (DES0[31]) を1に設定します。また、ホストはSDカードに書き込まれるデータをシステムメモリーのデータバッファーにロードします。
  2. ホストは、cmdレジスターに適切なデータ書き込みコマンド (SD/SDIO WRITE_BLOCKまたはWRITE_MULTIPLE_BLOCK) を書き込みます。内部DMAコントローラーは、書き込みデータの転送を実行する必要があると判断します。
  3. ホストは、必要な送信しきい値レベルをfifothレジスターのtx_wmarkフィールドに設定します。
  4. 内部DMAコントローラー・エンジンは記述子をフェッチし、OWNビットを確認します。OWNビットが0に設定されている場合は、ホストが記述子を所有しています。その場合、内部DMAコントローラーは一時停止状態になり、Descriptor Unable割り込みをアサートします。ホストはその後、記述子のOWNビットを1に設定し、pldmndレジスターに任意の値を書き込むことで、DMAコントローラーを解放する必要があります。
  5. ホストは、記述子のベースアドレスをdbaddrレジスターに書き込む必要があります。
  6. 内部DMAコントローラーは、BIUからのエラーがなく、rintstsレジスターのCommand Done (CD) ビットが1に設定されるのを待機します。この状態は、転送が可能であることを示しています。
  7. 内部DMAコントローラー・エンジンは、BIUからのDMAインターフェイス要求を待機します。BIUは、各転送を小さなチャンクに分割します。各チャンクはDMAへの内部要求です。この要求は、送信しきい値の値に基づき生成されます。
  8. 内部DMAコントローラーは、システムメモリーのデータバッファーから送信データをフェッチし、データをFIFOバッファーに転送することで、カードへの送信に備えます。
  9. データが複数の記述子にわたる場合、内部DMAコントローラーは次の記述子をフェッチし、次の記述子で動作を続行します。記述子DES0フィールドのLast Descriptorビットは、データが複数の記述子に広がっているかを示します。
  10. データの送信が完了すると、tiビットを1に設定することにより、ステータス情報がidstsレジスターで更新されます (有効になっている場合)。また、記述子のDES0フィールドを更新することにより、OWNビットがDMAコントローラーによって0に設定されます。