0

PC には PCI カードが接続されており、そのための GUI があります。PCI カードから読み書きするために、RAM に約 400 ~ 600 MB の物理メモリの DMA バッファを割り当てたいと考えています (FPGA は PCI カードで読み書き操作を行います)。JUNGO Windows PCI ドライバーを使用しています。Contiguous または scatter/Gather メソッドを介して DMA バッファを割り当てるために、JUNGO が提供する WDC_DMAContigBufLock メソッドがあります。RAM に最大 63MB のバッファを作成でき、63MB を超えるバッファは作成できませんでした。OSはWindows XP 32bitでRAMサイズは4GB(比較的3GBは無料)。

アプリケーション (GUI) は C# .Net で記述されており、400 ~ 600MB の DMA バッファを作成しようとするのは、このアプリケーションを使用することです。400 - 600MB のバッファ サイズを作成する原因となる/停止する可能性のある解決策/アイデアを探しています。

ありがとう

4

1 に答える 1

3

DMA バッファに使用されるページは、非ページ カーネル メモリ プールから割り当てられます。これは Windows の貴重なリソースであり、そのような膨大な割り当てを合理的に要求することはできません。WD_DMALock() 関数が要求に上限を設定するのか、それとも単純に要求が多すぎて Windows が要求を拒否するのか、またはマシンのメモリプール。500メガバイトはありません、それは確かです. XP のデフォルト サイズは 256 MB iirc です。

詳細については、FAQを参照してください。明らかに、これを意図したとおりに確実に機能させることはできず、転送をより適切なサイズの小さなリクエストに分割します。

于 2013-01-23T15:03:45.597 に答える