ユーザー空間とカーネル空間の間でメモリを共有する必要があります。メモリはユーザー空間に割り当てられ、カーネルでは物理アドレスを使用してメモリ記述子リストを作成し、DMA コントローラー (FPGA に常駐) を初期化します。
WEC2013 を搭載した Zynq (ARM+FPGA) を使用しています。
Microsoft は、「IOCTL メソッド」と「共有メモリ オブジェクト」メソッドの2 つのメソッドを提供していますが、どちらも使用できません。
- IOCTL: メソッド パラメーターが Windows Embedded Compact によって無視されるため、METHOD_xxx_DIRECT を使用できません。IOCTL に関する MSDN
- 共有メモリ オブジェクト: メモリは既にユーザーによって割り当てられているため、(CreateFileMapping を使用して) 名前付きメモリ オブジェクトを作成できません。データのコピーに時間がかかりすぎます。
これを行う別の方法はありますか?または、ユーザー空間で MDL を取得できますか?