您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> [求助]544的DDR SDRAM怎么进行遍历?
本帖共有556个阅读者
发表帖子 发表投票 回复主题
[求助]544的DDR SDRAM怎么进行遍历?
vierh(论坛新手)
vierh
头衔:社区公民
帮派:无帮无派
帖数:7
金钱:147
积分:7
注册时间:2014/11/6
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
[求助]544的DDR SDRAM怎么进行遍历?
     程序如下,   void main
{
         pSDRAM=0x0000;
i=0;j=0;
for(i=0;i<0x000001;i++)
     *(pSDRAM+i)=0x1234;    //SDRAM
for(i=0;i<0x000001;i++)
{
if(*(pSDRAM+i)!=0x1234)
j++;
else
j=j;
}
if(j==0)
{
printf("SDRAM TEST OK\n");
}
else
{
printf("SDRAM TEST ERROR\n");
}
   }
运行后,显示error。是哪里设置不对吗?

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/11/26 11:58:07
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
/****************************************************************************
* 名称 : 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以外其他地址错误,说明地址线短接。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/11/30 21:07:49
vierh(论坛新手)
vierh
头衔:社区公民
帮派:无帮无派
帖数:7
金钱:147
积分:7
注册时间:2014/11/6
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
谢谢版主。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/12/1 11:02:05
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159251 Call, 1 Queries, Processed in 0.031250 second(s),