Hi,
I have tried to initiate QDMA transfer on EVM DM6437 but the transfed didn't happened.
What should I write in the this code to execute DMA transfer. A_count = 1, B_Count = 8, C_Count = 1, so whe have transfer of 8 Bytes. How to do this using QDMA?
Here is the code I wrote for the transfer:
' header file :'
#define EDMA_3CC_QCHMAP0 *( volatile Uint32* )( EDMA_3CC_BASE + 0x0200 )
#define EDMA_PARAMSET0_BASE 0x01C04000
#define EDMA_PARAMSET0_OPT *( volatile Uint32* )(EDMA_PARAMSET0_BASE + 0x0000)
#define EDMA_PARAMSET0_SRC *( volatile Uint32* )(EDMA_PARAMSET0_BASE + 0x0004)
#define EDMA_PARAMSET0_A_B_CNT *( volatile Uint32* )(EDMA_PARAMSET0_BASE + 0x0008)
#define EDMA_PARAMSET0_DST *( volatile Uint32* )(EDMA_PARAMSET0_BASE + 0x000C)
#define EDMA_PARAMSET0_SRC_DST_BIDX *( volatile Uint32* )(EDMA_PARAMSET0_BASE + 0x0010)
#define EDMA_PARAMSET0_LINK_BCNTRLD *( volatile Uint32* )(EDMA_PARAMSET0_BASE + 0x0014)
#define EDMA_PARAMSET0_SRC_DST_CIDX *( volatile Uint32* )(EDMA_PARAMSET0_BASE + 0x0018)
#define EDMA_PARAMSET0_CCNT *( volatile Uint32* )(EDMA_PARAMSET0_BASE + 0x001C)
'and main function :'
unsigned int A[750*480], B[750*480]; // A and B global buffers are placed in External DDR2 memory
void main(void){
A[0] = 0xABCD;
EDMA_3CC_QCHMAP0 = 0x0000001C;
EDMA_PARAMSET0_OPT = 0x00000008;
EDMA_PARAMSET0_SRC = (unsigned int)&A[0];
EDMA_PARAMSET0_A_B_CNT = ((1)<<16)|8;
EDMA_PARAMSET0_DST = (unsigned int)&B[0];
EDMA_PARAMSET0_SRC_DST_BIDX = ((0)<<16)|0;
EDMA_PARAMSET0_LINK_BCNTRLD = 0xFFFF;
EDMA_PARAMSET0_SRC_DST_CIDX = 0;
EDMA_PARAMSET0_CCNT = 1;
while(1);
}
Regards,
Marko