テクニカル ドキュメント #76



Doc ID: 76
製品: WinDriver
Version:  --

WinDriver を使用して、システム メモリからカードへ、どのように PCI DMA Write を実行しますか?

対象のデバイスを PCI DMA Master Capable にする必要があります。
PCI カードを検出しレジストした後 (WD_PciScanCards()、WD_PciGetCardInfo() および WD_CardRegister() を使用して)、メモリ バッファをロックする必要があります。このためには、WD_DMALock() 関数を呼んで、カーネルでメモリ バッファをロックし、バッファの物理アドレスの代わりとなるページ (dma.dwPages) の配列を受信します。(連続バッファ DMA の場合、その配列は単一のページを持ちます)。[詳細は WinDriver のユーザー マニュアルを参照してください]。

ページ リストで BUS-MASTER デバイスをプログラムし、転送を開始するのにカードのコマンドを送信できます。
DMA 転送用の PCI デバイスのプログラミングはデバイスの仕様に依存します。
WinDriver の API を使用した DMA 関数の例として、WinDriver は、PLX、Altera、QuickLogic、AMCC およびその他 (詳細は WinDriver のユーザー マニュアルを参照してください) などの主要な PCI チップ ベンダーを拡張サポートしており、それ用の WinDriver のライブラリを参照してください。

転送の最後に、WD_DMAUnlock() 関数を呼んで、バッファのロックした物理メモリを解放してください。