TI论坛
直播中

王凤兰

7年用户 180经验值
私信 关注
[问答]

请问用C5509A读写外部SDRAM,地址跨越数据页边界时读写出现问题是什么原因?

用C5509A读写外部SDRAM,例程里面souraddr =  (int *)0x40000;deminaddr = (int *)0x41000;我把目的地址改为0x50000,发现从0x40000到0x50000只有最后一个数据,也就是地址为0x50000的数据是错的,后来发现不管怎么修改起始地址和目的地址,只要跨越128页数据页边界,就会出现这个问题,是地址指针(int *souraddr,*deminaddr;)定义有问题吗?
main()
[
unsigned int error=0,i;
/*初始化CSL库*/
CSL_init();

puts("Start SDRAM test");
/*EMIF为全EMIF接口*/
CHIP_RSET(XBSR,0x0a01);

/*设置系统的运行速度为144MHz*/
PLL_config(&myConfig);

/*初始化DSP的外部SDRAM*/
EMIF_config(&emiffig);
/*向SDRAM中写入数据*/
souraddr = (int *)0x40000;
deminaddr = (int *)0x41000;
while(souraddr [
*souraddr++=datacount;
datacount++ ;
//for(i=0;i<100;i++);
]
/*读出SRAM中的数据*/
souraddr = (int *)0x40000;
datacount = 0;
while(souraddr [
databuffer[datacount++] = *souraddr++;
if(databuffer[datacount-1]!=(datacount-1))
[
error++;
//printf("%d ",datacount-1);
]
//for(i=0;i<100;i++);
]
if(error==0)
printf("SDRAM test completed! No Error!");
i=0;
while(1);
]

回帖(2)

阮浙临

2018-7-31 06:37:49
我查看一下EMIF中SDRAM的文档,5509A和5509的有点不同。  
举报

余少虹

2018-7-31 06:54:34
C55x pointer有64K的限制, ***的FAQ.
http://processors.wiki.ti.com/index.php/55x_FAQ#Why_can_I_not_correctly_move_data_that_spans_a_64K-word_boundary.3F
 
举报

更多回帖

发帖
×
20
完善资料,
赚取积分