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

如果DDR cache没有被使能的话,EDMA3 数据搬移成功,使能后数据搬移不成功

Hello,

目前DM8148 DSP开发进行算法优化。

我将DDR3的数据搬移到L2内存段内。

一开始用memcpy()函数,数据搬移没有问题,算法运算结果正确。

然后用自己编写EDMA3_copy()函数搬移数据,同时也没有使DDR 该段外存cache使能,方法如下:

  for(i=0;i<256;i++)

  {
     MAR->MAREG[i] = 0;
  }

 数据搬移没有任何问题。

但是当DDR 该段外存cache使能后,重新运行该段代码,运算结果就不正确。

 

  DDR 该段外存cache使能方法如下:

  for(i=0;i<256;i++)

  {
     MAR->MAREG[i] = 1;
  }

我尝试修改使该传输数据的原地址和目标地址都是0x80对齐后,DDR 该段外存cache使能,重新运行代码,运算结果正常。

根据EDMA3文档,EDMA3传送中没有对源地址,目标地址对齐有专门要求。

能否解释这种现象原因?

谢先,

BRS,

Meng

lu edward:

回复 Chris Meng:

cache 一致性。

应为你的开辟或者使用的这段空间没有做cache 对齐处理。参考kmem_cache分配内存的原理。这个函数分配的内存大小都是和cache的最大访问位宽的倍数。

Lingcon Meng:

回复 Chris Meng:

Hello Chris,

非常感谢您的回复。

目前程序中,L2中没有使用与其相关的cache_wb(),cache_inv(),cache_wbInv()这些函数。

L2与L1之间的一致性是自动维护的。

BRS,

Meng

Lingcon Meng:

回复 lu edward:

Hello,

谢谢您的回复。

但是EDMA3操作中,没有说明,edma数据搬移必须地址对齐。

如果地址必须对齐,我没有DDR cache 没有使能时,数据搬移应该也不成功。

目前只是,在DDR cache使能时,EDMA3 数据搬移不成功。

但是对齐cache line size时,数据搬移成功。

非常感谢!

BRS,

Meng

Lingcon Meng:

回复 lu edward:

Hello ,

another question:

能否给一些信息,我从那儿可以得到kmem_cache()的相关文档,对其深入了解。

BRS,

Meng

lu edward:

回复 Lingcon Meng:

wiki或者百度上都有,忘记说了还有一个叫回写(write back)或者更新的机制。

赞(0)
未经允许不得转载:TI中文支持网 » 如果DDR cache没有被使能的话,EDMA3 数据搬移成功,使能后数据搬移不成功
分享到: 更多 (0)