我正在使用Windriver Jungo来测试连接到我的计算机的PCI Express设备。我能够以8/16/32/64位模式读写内存,该板卡响应非常良好。但我的疑问是,根据PCI Express规范,我们可以发送128字节至4096字节的TLP数据包。如何使用驱动程序实现这种传输?现在只传输8字节(64位模式)的数据。如果我提供更多要发送的数据,则会将数据拆分为8字节数据包,然后再发送。请解决我的疑问,并建议在Windows或Linux中使用其他PCI Express驱动程序选项。
您正在尝试PIO读写,而不是DMA。PIO读/写TLPs将仅在数据包中具有双字长度的数据。对于突发数据传输(其数据高达4096字节,但可能会受到主板芯片组的限制,最多只能到128字节),您必须从PCIE设备向PC启动读/写操作,而不是从PC到PCIE。
之前我使用Windriver与PCIE FPGA套件进行通信,对于程序指定的任何有效负载(128-4K),它都能正常工作。可能是您写入BAR位置的方式有问题,请检查您是否将数据发送到相同的BAR地址位置或不同的BAR地址位置。