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

C6657写内存

两个地址,一个是0x80000000,一个是0x90000000,core0先往0x80000000写一个int 0,然后将网络传输得到的数据写到0x90000000,再往0x80000000中写一个非0数。core1一直读0x80000000,当读到的数不为0时就将0x90000000中的数取出。

程序运行后发现core1无法读出0x90000000的数据,用memory browser查看内存情况,发现core0和core1的0x90000000的数据都是网络发送来的数据,而且core0的0x80000000处已经变成了非零数,但是core1的0x80000000处一直是0,而且以0x80000000为起始的一小段内存背景颜色是蓝色。请问这是什么原因?

Kevin Cai:

Hi,  您好!

 

0x80000000是DDR地址,您需要考虑cache一致性维护。有如下方法:

1. 将0x80000000为起始地址的一段内存设置成non-cacheable,这样0x80000000的数据就不会备份到高速缓存(L1/L2)

    设置的方法参见文档TMS320C66x DSP CorePac User Guide (SPRUGW0B)

2.  在core0写完0x80000000后,执行一下cache writeback函数,这样可以保证数据真实写到了0x80000000,而不是写到了高速缓存

 

谢谢 ! 

 

 

赞(0)
未经允许不得转载:TI中文支持网 » C6657写内存
分享到: 更多 (0)