在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 6577|回复: 5

[求助] 关于PCIe完成报文乱序的问题

[复制链接]
发表于 2015-8-17 17:24:25 | 显示全部楼层 |阅读模式
300资产
大家好,最近在PC上调试PCIe。我是在K7开发板KC705上用Xilinx的PCIe硬核实现了一个EP,DMA部分自己做的,在进行DMA读的时候发现这样一个问题,例如:      1,DMA读长度2KB;
      2,Memory Read Request所能请求的最大长度Max_Read_Req_Size = 512B;
      3,TLP包所能携带的最大数据长度Max_Payload_Size = 128B。
      因此,一次DMA读操作需要发4个读请求(分别用Tag0~Tag3表示),一个读请求需要4个Completion完成报文(分别用Tagn_0~Tagn3,n=0~3,表示4个读请求)。
       问题来了,在收Completion完成报文的时候,到达顺序是这样的:
       Tag0_0,Tag1_0,Tag2_0,Tag3_0;

       Tag0_1,Tag1_1,Tag2_1,Tag3_1;
       Tag0_2,Tag1_2,Tag2_2,Tag3_2;
       Tag0_3,Tag1_3,Tag2_3,Tag3_3;
       而不是完全的顺序到达,有哪位大神碰见过类似的情况,请给个解释。


       这里补充一下:跟PCIe序无关,本人将EP的Relax-ordering使能关闭,在TLP中也设置为0,结果都一样,跟EP连接的PCIe控制器的配置空间也没有使能Relaxed-ordering位。

发表于 2021-11-9 18:11:08 | 显示全部楼层
作者解决了吗?我也遇到了这样的问题
发表于 2021-11-24 09:22:41 | 显示全部楼层
这个与RC有关吧,自己做个reorder的功能吧。
发表于 2023-7-19 14:46:22 | 显示全部楼层
所以Max_Payload_Size应该设置为512?
发表于 2023-7-19 14:47:04 | 显示全部楼层
Thanks
发表于 2023-7-19 17:47:02 | 显示全部楼层
DMA读的cpld tag乱序是RC决定的,跟EP设置没有关系,需要EP支持cpld重新排序。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-3-28 18:05 , Processed in 0.031073 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表