【问题标题】:WINDOWS KMDF PCI DRIVER:- API For Writing Data To MemoryMapped Virtual AddressWINDOWS KMDF PCI 驱动程序:- 用于将数据写入 MemoryMapped 虚拟地址的 API
【发布时间】:2018-02-01 17:41:30
【问题描述】:

我的任务是为 Windows 编写基于 KMDF 的 PCI 驱动程序。基本上,目标是将数据写入 FGPGA 板上的 RAM(该板尚不存在)。 FPGA 上的 PCI 接口将允许数据直接读取和写入 FPGA RAM。

这个想法是将必要的内存映射信息存储在BAR0寄存器中。内存描述符类型为 CmResourceTypeMemory。第一步是读取 BAR0 寄存器信息并创建内存映射。

使用另一块板,我编写了一个执行上述操作的基本驱动程序。

但是,一旦我有了内存地址(虚拟),我就想从该内存中读取和写入。我注意到 Windows 有用于读取和写入 PORTS 和 REGISTER 的 API。是否有等效的东西可以将各种数量的数据写入和读取到虚拟地址:-I.E.将数据缓冲区复制到虚拟地址。直接复制似乎是一种选择,但我怀疑可能有一个 API 可以执行此操作。

我查看了各种 github PCI 示例,但它们倾向于使用寄存器和端口读写。

【问题讨论】:

  • MmMapIoSpace 的返回值将是一个指针,可用于读写 FPGA RAM。
  • 感谢您的回复。我使用 MmMapIoSpace 来获取虚拟地址。我打算使用 RtlCopyMemory 将数据复制到虚拟地址。该数据将来自 IORequest 缓冲区。目前我没有任何硬件可以确认这一点。

标签: windows driver pci kmdf


【解决方案1】:

使用 READ_REGISTER_BUFFER_xxx 和 WRITE_REGISTER_BUFFER_xxx 例程。请参阅 MSDN 文档中的 HAL Library Routines 部分。

【讨论】:

    猜你喜欢
    • 2013-12-03
    • 2018-01-16
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多