您好:
我想通过6747的EDMA3实现sdram与dsp二级缓存之间的通信,但是一直没有实现,不知道问题出在哪里?
这是EDMA3的配置
#include "C6747.h"
void InitEDMA3()
{
CCCFG=0x00003005;
PARSET0_OPT=0X00100008; PARSET0_SRC=0xC0000000;
PARSET0_A_B_CNT=0x00010100;
PARSET0_DST=0x80000f00;
PARSET0_SRC_DST_BIDX=0x00000000;
PARSET0_LINK_BCNTRLD=0x0000ffff;
PARSET0_SRC_DST_CIDX=0x00000000;
PARSET0_CCNT=0x00000001; ESR=0x1;
//IPR=0x00000001;
}
/×main×/
#include "C6747.h"
void WriteSdram();void InitEDMA3();
Uint32 *DSPL2RAM =(Uint32* )0x11800000 ;
void main()
{
// int i=0; C6747_init(); WriteSdram();
InitEDMA3();
// EESR=1;
ESR=0x1;
if(*(DSPL2RAM+255)==255)
printf("Write DSPL2RAM SUCCESS!\n");
else
printf("Write DSPL2RAM error\n");
/* for(i=0;i<256;i++)
{
*(DSPL2RAM+i)=i;
}*/
/*SDRAM*/
#include "stdio.h"
#include "C6747.h"
void WriteSdram()
{
Uint32 i;
Uint32 *SDRAM_StartAdd;
Uint32 Length=256; //长度最长应为ox20000000
SDRAM_StartAdd = (Uint32 *)0xC0000000;//EMIFB的起始地址为0xc0000000,EMIFB连接两块SDRAM
for( i=0;i<Length;i++)
{
*(SDRAM_StartAdd+i)=i; }
if(*(SDRAM_StartAdd+255)==255)
printf("Write SDRAM Success!\n");
else
printf("Write SDRAM error!\n");
}
不知道是哪里出问题了,这是6747数据手册上的一个例子,一直没有实现,请指点一下。
Tony Tang:
可以参考下面链接EDMA的例子,改成手动触发即可:
http://www.deyisupport.com/question_answer/dsp_arm/omap_l1x/f/54/t/12550.aspx