TI中文支持网
TI专业的中文技术问题咨询交流网站

6678内存访问冲突问题

问题描述:

fpga通过srio,按照固定的10ms周期,将数据写入6678的sl2共享内存的固定空间后,再发送一个doorbell给core0,通知core0数据已经发送完毕;

core1-core6分别采用lsu1-lsu6,通过srio将sl2中的数据发送给其他dsp节点;

fpga写入sl2的时间点和core1-core6通过srio将sl2中的数据发送出去的时间点上有重叠,即存在同时访问sl2的问题,但各自操作的sl2地址上没有重叠;

问题现象:通过在core0上,对两次doorbell之间的时间间隔进行统计,发现时间间隔并不是严格的10ms周期,会出现较大的14ms等异常周期的出现;

现在怀疑是fpga通过srio写sl2,和core1-core6通过srio读sl2之间产生了冲突,导致了fpga不能及时的将数据写入到sl2,导致了异常的dbell周期出现;

但从流程上,一个是srio的收,一个是srio的发,srio的收发应该是全双工的,不应该有问题。

从msmc手册上,

问题:

(1)fpga通过srio写入sl2,应该是通过SMS Slave Port,但core1-core6采用srio将sl2的数据发送出去,也是采用SMS端口还是通过MSMC System Master Port口呢?接收和发送的数据流端口应该是怎样的呢?

(2)能不能调整srio接收和发送的优先级,比如提高接收的优先级,让数据可以及时写进来,保证周期的稳定性?

(3)msmc的总线带宽的竞争仲裁机制能不能调整,让写的优先?

(4)能不能指定两个数组,分别分配到msmc的不同BANK上,避免BANK的冲突,能够给出具体的示例说明

请各位专家能够给予解答。

Nancy Wang:

user1931146

msmc的总线带宽的竞争仲裁机制能不能调整,让写的优先?

试试看能不能通过SBND来调整优先级。

具体请看msmc手册2.3.3 MSMC Bandwidth Management

user1931146

能不能指定两个数组,分别分配到msmc的不同BANK上,避免BANK的冲突,能够给出具体的示例说明

试试看以下方法

#pragma DATA_SECTION(buffer,".my_sect")

修改cmd指定自定义段到不同的bank

.my_sect       > SL2

memory bank地址的计算参考msmc手册2.3.2 MSMC Memory Banking

赞(0)
未经允许不得转载:TI中文支持网 » 6678内存访问冲突问题
分享到: 更多 (0)