This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

omapl138 EDMA interrupt?

Other Parts Discussed in Thread: OMAPL138

I use edma in omapl138 arm side,I use the sys/bios config the interrupt ,it has interrupt in my isr fuction,,however it can't  into my task,the task status always ready.

I config the dma interrupt as flowing:


void AInt_init()
{

//HIEISR = 0;//使能中断类型,FIQ or IRQ
//EISR = 11;//使能系统中断号
//CMR1 = 1;//中断通道映射
//Hwi_enable();
Hwi_Params hwiParams;
Error_Block eb;

Hwi_Params_init(&hwiParams);
Error_init(&eb);

hwiParams.arg = 1;
hwiParams.eventId = 11;
hwiParams.maskSetting = Hwi_MaskingOption_SELF;

Hwi_mcasp_dma = Hwi_create(11, audiodma, &hwiParams, &eb);

if (Error_check(&eb)) {
// handle the error
}

GER = 0x1;//全局中断寄存器

Hwi_enableInterrupt(11);
//_enable_interrupts();
}

it always interrupt in my isr function, 

interrupt void audiodma(void)
{
volatile Uint32 ipr;
volatile unsigned int *pultmp;

ipr = EDMA3ccRegs->IPR;
if(ipr)
//while(ipr)
{
//dma通道2的中断来了,接收ai的通道
if ((ipr&0x00000001) != 0)
{
pultmp = aisamplewr;
aisamplewr = aisamplere;
aisamplere = pultmp;
setAIFrameFlag(1);
g_dma2count++;
}

//dma 通道3的中断来了,发送ao的通道
if ((ipr&0x00000002) != 0)
{
pultmp = aosamplewr;
aosamplewr = aosamplere;
aosamplere = pultmp;
setAOFrameFlag(1);
g_dma2count2++;
}

//清零对应的中断标示,等待下次中断进入
EDMA3ccRegs->ICR = ipr;

//AInt_clear(11);

ipr = EDMA3ccRegs->IPR;

}

}