我用了XDMA这个IP进行PCIe数据的处理,用xdma_rw.exe进行PC与Zynq间的数据读写。xdma_rw.exe的原始驱动程序允许传输的数据量是有限的。安装原始驱动程序后,写入超过8 MB数据会报错。经论坛上老师的指点,我将驱动程序源工程中dma_engine.h里的XDMA_MAX_TRANSFER_SIZE参数由8UL * 1024UL * 1024UL改为800UL * 1024UL * 1024UL,h2c最大传输量成功提升,现在已经可以通过h2c_0通道写入700 MB的数据。
图1 修改XDMA_MAX_TRANSFER_SIZE后成功写入700 MB
然而,在通过c2h_0通道进行数据读取时,数据量仍然极大地受限,目前只能读取约190000字节(0.18 MB)的数据,读取200000字节(0.19 MB)以上时就会报错,而且报错内容(图3)与修改原始驱动程序前写入大数据量时的报错(图2)完全一致。
图2 修改驱动程序前写入超过8 MB时的报错
图3 修改XDMA_MAX_TRANSFER_SIZE后读取0.19 MB报错
值得注意的是,虽然最大可写入数据量能通过XDMA_MAX_TRANSFER_SIZE修改,但是最大可读取数据量却无法这样。我将XDMA_MAX_TRANSFER_SIZE分别改小和改大,依然是读取0.18 MB成功、读取超过0.19 MB失败。
到论坛上寻找相关回答,找到一个可能有用的方法是继续修改驱动程序,即修改源工程中的dma_engine.c文件,如图4:
图4 论坛上提供的一种方法
我在遵照这种方法修改驱动程序后,问题依然存在。我到论坛、网络中查找相关内容,并未继续找到有用的答案;在官方文档中没有找到详细的相关说明。恳请指导一下,我现在的问题仍然是通过修改驱动程序解决吗?如果是的话,该修改哪里呢?十分感激!