zrlzhrl 2023-02-09 11:44 采纳率: 0%
浏览 67

(开发软件:Vivado 开发板:Zynq AX7015)利用PCIe进行数据传输,使用官方PCIe测试程序进行PC与Zynq间的数据读写。读通道传输数据量受限,可能需要进一步修改驱动程序。

我用了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的数据。

img

图1 修改XDMA_MAX_TRANSFER_SIZE后成功写入700 MB

然而,在通过c2h_0通道进行数据读取时,数据量仍然极大地受限,目前只能读取约190000字节(0.18 MB)的数据,读取200000字节(0.19 MB)以上时就会报错,而且报错内容(图3)与修改原始驱动程序前写入大数据量时的报错(图2)完全一致。

img

图2 修改驱动程序前写入超过8 MB时的报错

img

图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:

img

图4 论坛上提供的一种方法
我在遵照这种方法修改驱动程序后,问题依然存在。我到论坛、网络中查找相关内容,并未继续找到有用的答案;在官方文档中没有找到详细的相关说明。恳请指导一下,我现在的问题仍然是通过修改驱动程序解决吗?如果是的话,该修改哪里呢?十分感激!

  • 写回答

1条回答 默认 最新

  • 「已注销」 2023-02-12 09:49
    关注

    这个好像在32位系统的电脑上使用

    评论

报告相同问题?

问题事件

  • 创建了问题 2月9日

悬赏问题

  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊
  • ¥15 快速扫描算法求解Eikonal方程咨询
  • ¥20 我的是道格手机,重置后屏幕右上角出现红色字的未写入tee key 和未写入google key请问怎么去掉啊
  • ¥30 关于R语言运行分区生存模型中的问题!
  • ¥15 校内二手商品转让网站
  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?
  • ¥100 求Web版SPC控制图程序包调式
  • ¥20 指导如何跑通以下两个Github代码
  • ¥15 大家知道这个后备文件怎么删吗,为啥这些文件我只看到一份,没有后备呀