尊敬的TI工程师,请问FPGA通过SRIO向6678DSP的DDR中写数,同时DSP还要读写DDR其他地址的数据造成SRIO阻塞,有什么好的解决办法吗?
如果我dsp在srio传输的过程中不做DDR的写入操作就没有问题,但是我是实时系统,肯定还要用DDR的数据进行计算并将数据再次写入到其他的DDR段上。
我看了好多帖子了,问题还未解决,目前我做的尝试如下:
1、将SRIO的地址放入SRIO的RIO_PER_SET_CNTL寄存器中CBA_TRANS_PRI字设为000;
设置方式:CSL_SRIO_SetTransactionPriority(hSrioCSL,0);
2、将MDMAARBU(0x01841010)设为0x06070000,代表着UPRI=6,PRI=7;
*(unsigned int *)(0x01841010)=0x06070000;
3、将MDMAARBX(0x08000280)设为0x00060000,代表着PRI=6;
*(unsigned int *)(0x08000280)=0x00060000;
您可以帮忙看看我这设置的有没有问题,如果没有问题接下来还有什么其他调试思路,有帖子中说改变操作DDR3的时序(DDR3 Memory Controller for KeyStone Devices User's Guide)才能完全规避,请问这大概怎么操作?
user6224283:
我还想问一下,srio向ddr写数据的时候,dsp能否同时操作ddr
Nancy Wang:
回复 user6224283:
正在帮您咨询相关工程师,晚一些给您回复。
user6224283:
回复 Nancy Wang:
期待您的回复
Nancy Wang:
回复 user6224283:
请问运行的是sys/bios程序吗?再确认一下是否是DSP在访问DDR的时候,FPGA通过SRIO就无法向DDR中写数?
user6224283:
回复 Nancy Wang:
是SYS/BIOS程序,它存在一个冲突问题,当我dsp去读或写的时候DDR总线控制权就被DSP占用了,fpga通过SRIO向DDR写,这时SRIO就会被阻塞
Nancy Wang:
回复 user6224283:
感谢分享信息。
SRIO task和DSP 读写 DDR 这两个task优先级是如何设置的?
user6224283:
回复 Nancy Wang:
目前只有DSP读取DDR这一个task,SRIO是通过DIO方式从FPGA端直接将数传到我的DDR上
Nancy Wang:
回复 user6224283:
在很多的SRIO应用中,都会有SRIO给DDR3传输数据并且应用程序在DDR3上运行,有的还会有以太网读写DDR3上的包,都没有遇到过发生访问冲突的情况,并且DDR3的带宽1333*8 = 10664MB/s 是远大于 SRIO (e.g. 5Gb/s * num of lanes/8)的。
另外可以参考2.6.4 Class of Service方法来设置优先级。
www.ti.com/…/sprugv8e.pdf
user6224283:
回复 Nancy Wang:
nancy,谢谢,我这边再找找其他原因
user6224283:
回复 Nancy Wang:
Hi nancy
2、将MDMAARBU(0x01841010)设为0x06070000,代表着UPRI=6,PRI=7;
*(unsigned int *)(0x01841010)=0x06070000;3、将MDMAARBX(0x08000280)设为0x00060000,代表着PRI=6;
*(unsigned int *)(0x08000280)=0x00060000;
我想确认一下 这两个寄存器我这么设置对不对,或者说有相应的接口函数