请问高手, 下面是代码,当FPGA用SRIO发送51MB的线性数到DSP的DDR。
通过内存窗口改变0x8ffffffc的值,控制 DSP去检测DDR数据。看是否为线性数据。我在内存窗口里面确实是收到了51MB的线性数。
但是调用verifyDat函数,在 “if(sum==nlength)”处加断点,然后发现DDR收到的51M数据发生改变,在51MB靠后的部分,全都是0,而前面部分数据,
要没有改变的,请问高手这是什么原因?
我的检测代码,并没有对DDR进行赋值操作,为什么DDR中的数据会发生改变??
void verifyDat();
int sum = 0;
main()
{
CACHE_setL1PSize(CACHE_L1_32KCACHE);
CACHE_setL1DSize(CACHE_L1_32KCACHE);
CACHE_setL2Size(CACHE_256KCACHE);
//...
KeyStone_SRIO_Init(&srio_cfg);
//.....
*(volatile uint*)0x8ffffffc=0;
while(1)
{
asm(" NOP 20 ");
if((*(volatile uint*)0x8ffffffc))
{
sum = 0;
verifyDat();
}
}
}
void verifyDat()
{
uint * pSRc = (uint*)0x90000000;//DDR接收数据地址
int i = 0;
InvalidCache((void *)pSRc, 51*1024*1024);
int nlength = 51*1024*1024/4;
for(i=0; i<nlength; i++)
{
if(pSRc[i]!=i)
break;
else
sum++;
}
if (sum==nlength)
printf("
succes
");
else
printf("
error
");
for(i=0; i<nlength; i++)
{
pSRc[i] = 0;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>