Hello,
I'm using IDMA for C6670 memory exchange, but it have some problem, memory can't use IDMA transport
Could someone help figuring out why IDMA does not work, or how to use DDR3 transport?
CSS Version: 5.0.3
Best Regards,
===================================================================================================================
void EDMA_Transport()
{
unsigned int pp1[255];
unsigned int pp2[255];
int i;
for(i=0;i<255;i++)
{
pp1[i]=0x01110000;
}
L1P_CFG = 0x00; //no cache
L1D_CFG = 0x00; //no cache
L2_CFG = 0x00; //no cache
L1P_INV = 0x00;
L2_INV = 0x00;
IDMA0_MASK = 0x4F4F4F4F; //Set mask for 8 regs -- 11:8, 3:0
IDMA0_SOURCE = *pp1; //Set source to config location
IDMA0_DEST = *pp2; //Set destination to data memory address
IDMA0_STAT = 0x01;
IDMA0_COUNT = 0x00000001; //Set mask for 1 block
while (IDMA0_STAT); //Wait for transfer completion ... update register values ...
IDMA0_MASK = 0x4F4F4F4F; //Set mask for 8 regs -- 11:8, 3:0
IDMA0_SOURCE = *pp2; //Set source to updated value pointer
IDMA0_DEST = *pp1; //Set destination to config location
IDMA0_COUNT = 0x00000001; //Set mask for 1 block
printf("IDMA0_SOURCE = %x\n",IDMA0_SOURCE);
printf("IDMA0_DEST = %x\n",IDMA0_DEST);
}