SDRAM的读写程序在购买的开发板上能正常,但是在我自己做的板子上会出现下面的情况:
1:读写程序程序如下时,会打印错误地址,观察memory串口,里面的数据没有写进去
for(block = 0;block <0x20000;block++)
{
for(i = 0;i<0x100;i++)
{
*((Uint8 *)(DM642_SDRAM_BASE + i+(block<<8))) = i;
}
/*read and check*/
/* for(i = 0;i<0x100;i++)
{
check = *((Uint8 *)(DM642_SDRAM_BASE + i+(block<<8)));
if(check != i)
{
for(;;)
{
printf("the error address is 0x%x\n",DM642_SDRAM_BASE + i+(block<<8));
break;
}
}
}
}
2:读写程序程序如下时,就不会打印错误地址,观察memory串口,里面的数据正常写进去
for(block = 0;block <0x20000;block++)
{
for(i = 0;i<0x100;i++)
{
*((Uint8 *)(DM642_SDRAM_BASE + i+(block<<8))) = i;
printf("0x%x\n",*((Uint8 *)(DM642_SDRAM_BASE + i+(block<<8)))); //比上段程序加了这一句
}
/*read and check*/
/* for(i = 0;i<0x100;i++)
{
if(check != i)
{
for(;;)
{
printf("the error address is 0x%x\n",DM642_SDRAM_BASE + i+(block<<8));
break;
}
}
}
}
程序2只是比程序1加了一句printf,然后就读写正常了,这个是什么原因呢?