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

多核读写DDR3的问题,请各位大神指导一下!

各位好!

测试环境是:硬件是自己的板卡,软件参考Keystone软件开发包

我用KeyStoneI软件开发包测试DDR3,多核同时操作DDR(有读、有写的情况)时会出错,主要的代码:

void main()

{

      TSC_init();

     if(DNUM ==0)

     {

Keystone_main_PLL_init(100,10,1);

Keystone_DDR_init(100,10,1,&DDR_ECC_cfg);

      }

int i;

for( i = 0; i < 0x8000000/4; i ++)

*(int*)(0x80000000+DNUM*0x8000000+4*i) = 0x5a5a0000+i;

 

int cnt = 0;

for( i = 0; i < 0x8000000/4; i ++)

{

if(*(int*)(0x80000000+DNUM*0x8000000+4*i) != 0x5a5a0000+i) cnt ++;

}

}

本意是想八个核同时写一段DDR数据,然后读出来校验,可是一直有问题,如下:

IcePick_D:Power Failure on Target CPU

C66XX_0:Failed to remove the debug state from the target before disconnecting. there may still be breakpoint op-codes embedded in program memory.It is recommended that you reset the emulator before you…..

后来又单独测试,八个核只读或只写不会出错,DDR3中的数据也是正确的,又测试一个写,一个读,仍然会有这个问题,感觉是多核不能同时又读有写的情况,想请问下是什么原因?是哪些地方没有初始化好吗?谢谢!!

另外,用别人的lib可以正确跑出上面程序的结果,但该lib没有源码,也问不到相关人员;感觉是我的设置不完全对,又找不到问题,请各位指导一下!

Allen35065:

你编译代码的时候,有没有把8个核的代码分开放在不同的位置上

Xiao Ma1:

回复 Allen35065:

Allen Yin,您好!

首先非常感谢您的回答!

之前工程的cmd文件就是keystone软件包中的memory测试中的cmd文件,我看了下.text是放在SL2上的,是不是表示没有分开呢!我把.text改为放在每个核的L2上,代码还是之前的代码不变,pll和ddr初始化仍由core0处理,测试和之前的结果一样,且存在多核同时读ddr时,也会出现前面描述的问题!

 

赞(0)
未经允许不得转载:TI中文支持网 » 多核读写DDR3的问题,请各位大神指导一下!
分享到: 更多 (0)