BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / circuit / #27758同步于 2022/10/31
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖

FPGA 的PCIe读写ddr

yaoyuhao666
2022/10/31镜像同步14 回复
请问PCIe通过xdma读写ddr测试时,在host运行同一份读写测试代码的时候(将数据写入ddr,再读出),发现一开始有点小错,后面几次测试的读写是对的,后面就全是错的并且不可恢复,只能重新烧写bit然后重启,请问有大哥遇到过这种问题吗?还有就是同样的方式读写BRAM不会出现这个问题(bram和xdma的axi接口时钟相同),读写ddr会有这个问题(ddr的axi接口时钟和xdma不同)
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
weksomnus机器人#1 · 2022/10/31
读写时候可以看一眼dmesg。
yaoyuhao666机器人#2 · 2022/10/31
这个能打印xdma故障信息吗,下午试试 【 在 weksomnus 的大作中提到: 】 : 读写时候可以看一眼dmesg。
yaoyuhao666机器人#3 · 2022/10/31
dmesg信息 [ 32.761489] IPv6: ADDRCONF(NETDEV_CHANGE): enp26s0f0: link becomes ready [ 218.432262] xdma: loading out-of-tree module taints kernel. [ 218.432442] xdma: module verification failed: signature and/or required key missing - tainting kernel [ 218.433712] xdma:xdma_mod_init: Xilinx XDMA Reference Driver xdma v2020.1.8 [ 218.433716] xdma:xdma_mod_init: desc_blen_max: 0xfffffff/268435455, timeout: h2c 10 c2h 10 sec. [ 218.433997] xdma:xdma_device_open: xdma device 0000:3b:00.0, 0x00000000f761cedb. [ 218.434345] xdma:map_single_bar: BAR0 at 0xb2d00000 mapped at 0x0000000086a06fa6, length=1048576(/1048576) [ 218.434369] xdma:map_single_bar: BAR1 at 0xb2e00000 mapped at 0x00000000d5ddfddd, length=65536(/65536) [ 218.434374] xdma:map_bars: config bar 1, pos 1. [ 218.434377] xdma:identify_bars: 2 BARs: config 1, user 0, bypass -1. [ 218.434911] xdma:pci_keep_intx_enabled: 0000:3b:00.0: clear INTX_DISABLE, 0x547 -> 0x147. [ 218.434955] xdma:probe_one: 0000:3b:00.0 xdma0, pdev 0x00000000f761cedb, xdev 0x00000000802e1ae6, 0x000000002831be2a, usr 16, ch 4,4. [ 218.436862] xdma:cdev_xvc_init: xcdev 0x00000000d94ab034, bar 0, offset 0x40000.
weksomnus机器人#4 · 2022/10/31
dump多次h2c时候的dmesg。。。看看kmd是否捕获了异常。。。。
yaoyuhao666机器人#5 · 2022/10/31
感谢回答,我还是看不太懂[em9][em9] 【 在 weksomnus 的大作中提到: 】 : dump多次h2c时候的dmesg。。。看看kmd是否捕获了异常。。。。
LNZthezero机器人#6 · 2022/10/31
像是异步时序的同步问题
LNZthezero机器人#7 · 2022/10/31
我之前用xilinx的mig的时候的个人做法是送读写指令一个至少256深的异步fifo,读回来的数据也用个至少256深的异步fifo来接,然后两边做好流控。 不知道楼主是咋同步mig的时钟域的,如果用的是xilinx的axi异步桥的话,可能同步深度不够,可以考虑用fifo自己实现下比较深的axi异步桥
yaoyuhao666机器人#8 · 2022/10/31
我测试的时候考虑过异步fifo溢出导致无法修复的原因,但是我把xdma和mig间的axi的fifo深度调最大还是没用。最终的目的是PCIe和用户都能用axi访问ddr 【 在 LNZthezero 的大作中提到: 】 : 我之前用xilinx的mig的时候的个人做法是送读写指令一个至少256深的异步fifo,读回来的数据也用个至少256深的异步fifo来接,然后两边做好流控。 : 不知道楼主是咋同步mig的时钟域的,如果用的是xilinx的axi异步桥的话,可能同步深度不够,可以考虑用fifo自己实现下比较深的axi异步桥
yaoyuhao666机器人#9 · 2022/10/31
并且smartconnect和axi_interconnect都试过 【 在 yaoyuhao666 的大作中提到: 】 : 我测试的时候考虑过异步fifo溢出导致无法修复的原因,但是我把xdma和mig间的axi的fifo深度调最大还是没用。最终的目的是PCIe和用户都能用axi访问ddr