你好!
我在使用TI 6455 DSK板的时候,发现其SDRAM使用起来不正常。在DSK板的例程Ddr_normal_mode_read_write_example.pjt中加入往整个DDR中写入0,1,2,……的有序整数,然后再读取判断是否正确的程序,发现无论按8位、16位还是32位,都不能正确读写整个DDR。请问是怎么回事呢?此工程中数据位宽定义为Normal,也就是32位。但是实际上按照32位读写整个DDR空间是失败的。
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.
你好!
我在使用TI 6455 DSK板的时候,发现其SDRAM使用起来不正常。在DSK板的例程Ddr_normal_mode_read_write_example.pjt中加入往整个DDR中写入0,1,2,……的有序整数,然后再读取判断是否正确的程序,发现无论按8位、16位还是32位,都不能正确读写整个DDR。请问是怎么回事呢?此工程中数据位宽定义为Normal,也就是32位。但是实际上按照32位读写整个DDR空间是失败的。
我运行原例程也是正常的,因为原例程仅仅只对最前面十个双字空间进行读写操作。我在原例程配置完DDR后调用以下函数,就会出错。(运行工程的计算机不能上网,下面代码是我凭记忆手敲的,可能会有bug,请谅解)
///////////////////////////////////////
#define SDRAM_SIZE (0x08000000)
#define SDRAM_ADR_STR (0xE0000000)
typedef unsigned int UINT32;
void SdRamTest_32()
{
UINT32 i, j;
UINT32 *pt;
// write the whole SDRAM
pt = (UINT32 *) (SDRAM_ADR_STR );
for(i=0; i<SDRAM_SIZE>>2; i++)
{
(*pt) = i;
pt ++;
}
// read the whole SDRAM
pt = (UINT32 *) (SDRAM_ADR_STR );
for(i=0; i<SDRAM_SIZE>>2; i++)
{
j = (*pt);
if(j != i)
{
printf("READ 0x%8x Error!\r\n", (UINT32)pt);
return;
}
pt ++;
}
printf("READ the Whole Sdram Sucess!\r\n");
}