PCI Express 验证使用驱动程序

4
我正在使用Windriver Jungo来测试连接到我的计算机的PCI Express设备。我能够以8/16/32/64位模式读写内存,该板卡响应非常良好。但我的疑问是,根据PCI Express规范,我们可以发送128字节至4096字节的TLP数据包。如何使用驱动程序实现这种传输?现在只传输8字节(64位模式)的数据。如果我提供更多要发送的数据,则会将数据拆分为8字节数据包,然后再发送。请解决我的疑问,并建议在Windows或Linux中使用其他PCI Express驱动程序选项。
2个回答

2

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


0

之前我使用Windriver与PCIE FPGA套件进行通信,对于程序指定的任何有效负载(128-4K),它都能正常工作。可能是您写入BAR位置的方式有问题,请检查您是否将数据发送到相同的BAR地址位置或不同的BAR地址位置。


你好,我的内存控制器实现在BAR0中。我为我的设备生成了Jungo驱动程序,并为VS2010生成了示例程序。然后我尝试写入内存选项,当我提供超过64位的数据时,数据会在端点处分成64位。我可以通过一个窃听机制查看端点上的数据流量。请问您能否解释一下测试PCIe的步骤? - Premjith
在硬件方面,数据应该被分成64位数据,尽管负载为128字节至4K字节,但每次传输的字节都是64位。我建议您检查BAR0的大小,看看是否正在写入相同的BAR0地址。也许您的数据确实已经到达了那里,只是您的抓取设备正在读取每个PCIE时钟上的每个PCIE数据总线。 - fiftyplus
Jungo API 参考中只有 4 种模式 [8/16/32/64] 可以用来读/写。这并不是硬件方面的限制,而是从 Jungo 驱动程序本身分割的。没有比 64 位更高的模式。 - Premjith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接