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

6678 SRIO SWRITE 向FPGA发送数据时CACHE一致性

ti专家你好,在6678 SRIO SWRITE 向FPGA发送数据时遇到了一共CACHE一致性的问题

目前SRIO 1X 3.125Gbps已经和FPGA联通,通过SWRITE方式双方胡写数据都没有问题,

问题现象:

但是在6678把L2 CACHE、 DDR3 CACHE打开后,SWRITE方式往FPGA发送数据,发现FPGA从SRIO上收到的数据和6678DDR3里的数据(0x80000000开始)对不上,第一个SRIO包的数据都不对,检查后定位在CCS 软件的内存查看器发现发给FPGA的数据是6678 L2 CACHE未同步的数据。颜色是浅绿色的.

6678 在初始化时的CACHE配置如下:

CACHE_setL1PSize(CACHE_L1_32KCACHE); //将L1P的32K空间全部用作cache
CACHE_setL1DSize(CACHE_L1_32KCACHE); //将L1D的32K空间全部用作cache
CACHE_setL2Size(CACHE_64KCACHE);

DDR3的CACHE配置如下:

CACHE_enableCaching了从0x80000000开始到0x90000000的空间

软件维护:

我在DDR3数据写入后使用了writeback

CACHE_wbL1d((void*)(0x80000000),0x3000000,CACHE_WAIT);//DDR3内写入数据后要回写下
CACHE_wbL2((void*)(0x80000000),0x3000000,CACHE_WAIT);

利用SRIO往FPGA端发送之前使用了invalid

CACHE_invL1d((void *)(0x80000000), 0x3000000, CACHE_WAIT); //读之前先要CACHE_InvL1d-
CACHE_invL2((void *)(0x80000000), 0x3000000, CACHE_WAIT); 

感觉已经进行了CACHE一致性的维护,怎么还是有数据不一致的情况发生呢,请专家支支招,多谢。

Shine:

cache一致性维护的操作反了,SRIO对DDR3数据写入后,要先进行invalid,Core才能读到新的数据。Core往DDR3写数据的话,要回写到 DDR2。http://www.ti.com.cn/general/cn/docs/gencontent.tsp?contentId=64183

Nancy Wang:

WB之后看一下DDR中的数据有没有发生变化?

赞(0)
未经允许不得转载:TI中文支持网 » 6678 SRIO SWRITE 向FPGA发送数据时CACHE一致性
分享到: 更多 (0)