TI中文支持网
TI专业的中文技术问题搜集分享网站

关于C66X cache和edma

现象:L1设置为cache,L2设置成sram。两个C6678通过srio的dio方式通信,从DSP0的ddr发送到DSP1的ddr中,DSP1收到doorbell后,先使用cachewbInvallL1(),再使用memcpy(),将DDR中的数据拷贝到L2 sram中。cachewbInvallL1后,DDR中的数据正常,单步执行memcpy后,发现DDR中的数据变成了cache里的数据,导致拷贝错误。试了几个cache函数,没有解决问题,后来用edma方式可以将DDR的数据正确搬到L2 sram中。

问题:1,C66X的edma有没有经过cache?

            2,为什么使用使用了cachewbInvallL1再使用memcpy的时候还会出现cache一致性冲突?怎么才能正常使用memcpy?

Andy Yin1:

dio及EDMA搬移的数据读不会经过cache,你这里建议在memcpy之前使用cache Invalid,并不需要writeback。

SRIO接收的数据可以直接放到LL2,不需要经过再次数据搬移浪费时间。

Enoeht lea:

回复 Andy Yin1:

srio接收的数据放在DDR是应用需求。

使用cache invalid ALL程序好像会卡死。

赞(0)
未经允许不得转载:TI中文支持网 » 关于C66X cache和edma
分享到: 更多 (0)