2017-08-24 6 views
1

私はWindows用のKMDFベースのPCIドライバを作成する作業があります。基本的には、FGPGAボード上にあるRAMにデータを書き込むことです(ボードはまだ存在しません)。 FPGA上のPCIインタフェースは、データをFPGA RAMに直接読み書きすることができます。WINDOWS KMDF PCIドライバ: - MemoryMapped仮想アドレスにデータを書き込むためのAPI

アイデアは、必要なメモリマッピング情報がBAR0レジスタに格納されます。メモリ記述子のタイプはCmResourceTypeMemoryになります。最初のステップは、BAR0レジスタの情報を読み込んでメモリマップを作成することです。

別のボードを使用して、上記を実行する基本ドライバを作成しました。

しかし、一度私はメモリアドレス(仮想)を持っていれば、私はそのメモリから読み書きしたいと思います。私はウィンドウにPORTSとREGISTERに読み書きするためのAPIがあることに気付きました。仮想アドレスにさまざまな量のデータを書き込み、読み取るのに相当するものがありますか? - I.E.データバッファを仮想アドレスにコピーします。直接コピーは1つのオプションのように思えますが、これを実行するAPIがある可能性があります。

私はさまざまなgithub PCIの例を見ましたが、レジスタとポートの読み書きを使用する傾向があります。

+0

[MmMapIoSpace](https://msdn.microsoft.com/en-us/library/windows/hardware/ff554618(v=vs.85).aspx)の戻り値は、使用できるポインタになりますFPGA RAMを読み書きします。 –

+0

返事をありがとう。私はMmMapIoSpaceを使って仮想アドレスを取得します。 RtlCopyMemoryを使ってデータを仮想アドレスにコピーする予定です。そのデータはIORequest Bufferから得られます。現時点で私はこれを確認するためのハードウェアを持っていません。 –

答えて

0

READ_REGISTER_BUFFER_xxxルーチンとWRITE_REGISTER_BUFFER_xxxルーチンを使用します。 MSDNのドキュメントのHAL Library Routinesセクションを参照してください。

関連する問題