关于BF533的SDRAM问题,给的例程中,程序中是怎么体现数据是在外部SDRAM中进行读写的?例程中的程序如下:
#include <cdefBF533.h>
void Set_PLL(unsigned int pmsel,unsigned int pssel)
{
unsigned int new_PLL_CTL;
*pPLL_DIV = pssel;
asm("ssync;");
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm("ssync;");
asm("idle;");
}
}
void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}
void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
ssync();
}
/****************************************************************************
* 名称 : speed_w_test
* 功能 : 测试代码,对DDR内存作测试
* 入口参数 :无
* 返回值 :无
****************************************************************************/
void speed_w_test(void)
{
int i,cont;
volatile unsigned short* DDRdata;
DDRdata = 0;
for(i=0;i<0x1000000;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 = 0;
for(i=0;i<0x1000000;i++)
{
if(i%2)
{
temp1 = *DDRdata;
DDRdata++;
if(temp1 != 0xaaaa)
printf("error! i is %x, temp is %x\n",i,temp1);
}
if(!(i%2))
{
temp1 = *DDRdata;;
DDRdata++;
if(temp1 != 0x5555)
printf("error! i is %x, temp is %x\n",i,temp1);
}
}
}
void main(void)
{
Set_PLL(16,4);
Init_EBIU();
Init_SDRAM();
speed_w_test();
speed_r_test();
printf("SDRAM test END!\n");
}