I'm writing a program that data are transferred from memory to McASP via EDMA3. On the completion of each transmission, an interrupt is triggered to notify CPU.
Now I can transfer the data to McASP, but CPU cannot receive the interrupt request. So the ISR is not executed.
The paramSets of EDMA3 are as follows:
paramRegs.OPT = 0x00102000; //TCINTEN=1, TCC=2
paramRegs.SRC = (Uint32)&sinetable[0]; //source address
paramRegs.A_B_CNT = 0x00300004; //BCNT=48,ACNT=4
paramRegs.DST = 0x01D06000; //Destination(McASP1) Address
paramRegs.SRC_DST_BIDX = 0x00000004;
paramRegs.LINK_BCNTRLD = 0x00304FE0;
paramRegs.SRC_DST_CIDX = 0;
paramRegs.CCNT = 0x00000001;
I use DSP/BIOS to configure the interrupt selector and hardware interrupt. I use INT8 and the interrupt selection number is 8 according to the interrupt event map of OMAP-L137/C6747
.
I've also initialize the interrupt of CPU as follows:
CSR = 1;
ICR = 0xFFF0;
IER |= 0x0102;
_enable_interrupts();
However, the ISR cannot be executed. In debugging mode, I can see the corresponding bit of IPR of EDMA3CC is asserted. But EVTFLAGn registers of INTC module remains the same.
What else should I do to enable the EDMA3 interrupt to CPU?