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

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

17.7.4. DMAの初期化

このセクションでは、DMAレジスターを適切な順序で初期化する方法を説明します。この初期化シーケンスは、EMACインターフェイスの初期化が完了した後に行うことができます。DMAの初期化には、次の手順を実行します。

  1. ソフトウェア・リセットを提供し、すべてのEMAC内部レジスターとロジックをリセットします。(Bus Mode RegisterであるDMA Register 0 – ビット0)
  2. リセットプロセスの完了を待機します。それには、DMA Register 0 (Bus Mode Register) のビット0をポーリングします。このビットは、リセット動作完了後にのみクリアされます。
  3. レジスター11 (AXI Status) のビットをポーリングし、それまでに (ソフトウェア・リセットの前に) 開始しているトランザクションまたは進行中のトランザクションがすべて完了していることを確認します。
    注: パフォーマンス上の理由により、ソフトリセット後にアプリケーションでレジスターをポーリングできない場合は、以降のステップを続行し、DMAの動作をトリガーする前に、このレジスターを再度確認することが推奨されます。これは、ステップ12 で説明されています。
  4. DMA Register 0 (Bus Mode Register) の値を設定し、Bus Mode Registerを初期化します。これには、次のフィールドをプログラミングします。
    • Mixed BurstおよびAAL
    • 固定バーストまたは未定義のバースト
    • バースト長の値とバーストモードの値
    • 記述子長 (リングモードが使用されている場合にのみ有効)
  5. レジスター10 (AXI Bus Mode Register) でインターフェイスのオプションをプログラミングします。固定バースト長が有効になっている場合は、バス上で可能な最大バースト長を選択します (ビット[7:1])。
  6. 送信および受信に適切な記述子チェーンを作成します。さらに、受信記述子がDMAによって所有されていることを確認します (記述子のビット31が設定されている必要があります)。OSFモードを使用する場合は、少なくとも2つの記述子が必要です。
  7. 記述子を再利用する前に、ソフトウェアが3つ以上の異なる送信記述子または受信記述子をチェーン内に作成していることを確認します。
  8. 受信記述子リストおよび送信記述子リストのアドレスを、送信および受信記述子のベースアドレスで初期化します (それぞれ、レジスター3: Receive Descriptor List Address Registerとレジスター4: Transmit Descriptor List Address Register)。
  9. レジスター6 (Operation Mode Register) で次のフィールドをプログラミングし、動作モードを初期化します。
    • Receive Store And ForwardおよびTransmit Store And Forward
    • Receive Threshold ControlおよびTransmit Threshold Control (RTCおよびTTC)
    • ハードウェア・フロー制御のイネーブル
    • MTLの受信FIFOバッファーおよび送信FIFOバッファーのフロー制御アクティブ化と非アクティブ化のしきい値 (RFAとRFD)
    • エラーフレームおよびサイズが満たない正当なフレームの転送イネーブル
    • OSFモード
  10. 割り込み要求をクリアします。これは、設定されているステータスレジスターのビット (割り込みビットのみ) に書き込むことで行います。例えば、ビット16 (Normal Interrupt Summary) に1を書き込むことで、このビットはクリアされます (DMAレジスター5: Status Register)。
  11. レジスター7 (Interrupt Enable Register) をプログラミングし、割り込みを有効にします。
    注: ステップ12 は、ステップ3 を行っていない場合にのみ実行します。
  12. レジスター11 (AHB or AXI Status) を読み出し、これまでのトランザクションがすべて完了していることを確認します。
    注: レジスター11 (AXI Status) を読み出した際に、これまでのトランザクションのいずれかが現在も進行中の場合は、マスター・インターフェイスでアドレス指定されているスレーブ・コンポーネントを確認することが強く推奨されます。
  13. コントロール・レジスター (DMAレジスター6: Operation Mode Register) のSR (ビット1) およびST (ビット13) を設定し、受信および送信のDMAを開始します。