【问题标题】:PCI Express validation using driver使用驱动程序进行 PCI Express 验证
【发布时间】:2013-03-02 08:29:56
【问题描述】:

我正在使用 Windriver Jungo 测试连接到我的 PC 的 PCI Express 设备。我可以在 8/16/32/64 位模式下读/写内存,并且板子响应非常好。但我怀疑的是,根据 PCI Express 规范,我们可以发送一个从 128 字节到 4096 字节的 TLP 数据包。如何使用驱动程序实现此传输。现在它只传输 8 字节(64 位模式)数据。如果我要发送更多数据,那么它将数据拆分为 8 字节数据包,然后发送。请清除我的疑虑,并为 Windows 或 Linux 中的 PCI Express 提供任何其他驱动程序选项?

【问题讨论】:

    标签: c testing driver pci pci-e


    【解决方案1】:

    您正在尝试 PIO 读写,而不是 DMA。 PIO 读/写 TLP 在数据包中只有双字长度数据。对于突发数据传输(数据最多 4096 字节,但可能会被主板芯片组限制为 128 字节),您必须启动从 PCIE 设备到 PC 的读/写,而不是从 PC 到 PCIE。

    【讨论】:

      【解决方案2】:

      我之前使用 windriver 与 PCIE FPGA 套件通信,它适用于程序指定的任何有效负载 (128-4K)。这可能是您写入 BAR 位置的方式。检查您是将数据发送到相同的 BAR 地址位置还是不同的 BAR 地址位置。

      【讨论】:

      • 嗨,我的内存控制器是在 BAR0 中实现的。我为我的设备生成了jungo驱动程序并为VS2010生成了示例程序。然后我尝试写入内存选项,当我提供更多高于 64 位的数据时,数据在端点处拆分为 64 位。我可以通过窃听机制查看端点的数据流量。你能解释一下测试pcie的步骤吗?
      • 在硬件方面,假设数据被分割成64bits的数据,虽然负载是128Byte到4Kbyte,但每次传输64bits。我建议您检查 BAR0 的大小,看看您是否正在写入相同的 BAR0 地址。也许您的数据确实按照您的要求到达了那里,只是您的分接设备正在读取每个 PCIE 时钟上的每个 PCIE 数据总线
      • jungo API 参考中只有 4 种模式 [8/16/32/64] 可用于读/写。它不是在它分裂的硬件方面,从jungo驱动本身没有高于64位的模式。
      猜你喜欢
      • 2017-02-25
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-26
      • 1970-01-01
      • 2021-05-29
      • 2015-03-03
      相关资源
      最近更新 更多