This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

DM642通过EMIF扩展2片32MB的SDRAM

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,然后就读写正常了,这个是什么原因呢?

x 出现错误。请重试或与管理员联系。