/****************************************************************************
* 名称 : speed_w_test
* 功能 : 测试代码,对DDR内存作测试
* 入口参数 :无
* 返回值 :无
****************************************************************************/
void speed_w_test(void)
{
int i,cont;
volatile unsigned short* DDRdata;
DDRdata = pDDR_TEST;
for(i=0;i<0x2000000;i++)
{
if(i%2)
{
*DDRdata = 0xaaaa;
DDRdata++;
}
if(!(i%2))
{
*DDRdata = 0x5555;
DDRdata++;
}
}
}
/****************************************************************************
* 名称 : speed_r_test
* 功能 : 测试代码,对DDR内存作测试
* 入口参数 :无
* 返回值 :无
****************************************************************************/
void speed_r_test(void)
{
int i,cont,temp1;
volatile unsigned short* DDRdata;
DDRdata = pDDR_TEST;
for(i=0;i<0x2000000;i++)
{
if(i%2)
{
temp1 = *DDRdata;
DDRdata++;
if(temp1 != 0xaaaa)
{
printf("error! i is %x, temp is %x\n",i,temp1);
error_flag = 1;
// break;
}
}
if(!(i%2))
{
temp1 = *DDRdata;;
DDRdata++;
if(temp1 != 0x5555)
{
printf("error! i is %x, temp is %x\n",i,temp1);
error_flag = 1;
// break;
}
}
}
}
/****************************************************************************
* 名称 : main
* 功能 : 对内存进行遍历测试
* 入口参数 :无
* 返回值 :0
****************************************************************************/
int main(void)
{
Init_PLL(16,4);
Init_DDR();
printf("test the DDR memory.\n");
speed_w_test();
speed_r_test();
if(error_flag == 1)
{
printf("Data validation errors.\n");
}
else
{
printf("Data validation correct.\n");
}
printf("Complete DDR memory test.\n");
return 0;
}
这个遍历仅仅是数据线上的遍历,如果检测地址线,可将数据写满DDR后,将地址0的数据改为其他的,然后进行校验,若只打印地址0数据错误,则地址线正常,若打印除地址0以外其他地址错误,说明地址线短接。