我的任务是为Windows编写基于KMDF的PCI驱动程序。基本上,目标是将数据写入FGPGA板上的RAM(电路板尚未存在)。 FPGA上的PCI接口将允许数据直接读取和写入FPGA RAM。
这个想法是必要的内存映射信息将存储在BAR0寄存器中。内存描述符类型为CmResourceTypeMemory。第一步是读取BAR0寄存器信息并创建存储器映射。
使用另一块板,我写了一个执行上述操作的基本驱动程序。
然而,一旦我有了内存地址(Virtual),我就会想要从那个内存中读取和写入。我注意到Windows有用于读写PORTS和REGISTER的API。有没有相当于写入和读取虚拟地址的各种数据的东西: - I.E.将数据缓冲区复制到虚拟地址。直接复制似乎是一个选项,但我怀疑可能有一个API来执行此操作。
我查看了各种github PCI示例,但是他们倾向于使用寄存器和端口读写。
答案 0 :(得分:0)
使用READ_REGISTER_BUFFER_xxx和WRITE_REGISTER_BUFFER_xxx例程。请参阅MSDN文档中的HAL Library Routines部分。