各位好!
测试环境是:硬件是自己的板卡,软件参考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时,也会出现前面描述的问题!
TI中文支持网