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.

RTOS/AM5716: EDMA ping pong buffer access from SWI

Part Number: AM5716

Tool/software: TI-RTOS

I am using McASP1 and STSEM_EDMA to transfer data between McASP1 and data buffer on DSP core of AM5716 with bios_6_50_01_12. the completion of each EDMA transfer will triger a INT4 and my ISR will post a swi.

I pre-wirte some data such as 0xFFFF into Ping and Pong buffer. after my code is running, I can see the data I write to ping pong bufer are in right time slots of McASP1 TX using oscilloscope.  however, if I write same date to the ping pong buffer from swi or ISR, just like following:

void interrupt4(void)
{
switch(EDMA_3CC_IPR)
{
case 1: // TCC = 0

procBuffer1 = PING; // process ping
EDMA_3CC_ICR = 0x0001; // clear EDMA3 IPR bit TCC
outPtr_code1 =&pingOUT1[0];
 inPtr_code1 =&pingIN1[0];
  pingOUT1[0]=0xffff;
break;
case 2: // TCC = 1

procBuffer1 = PONG; // process pong
EDMA_3CC_ICR = 0x0002; // clear EDMA3 IPR bit TCC
outPtr_code1 =&pongOUT1[0];
 inPtr_code1 =&pongIN1[0];
pongOUT1[0]=0xffff;
break;

default: 

EDMA_3CC_ICR = 0x0000f; // clear EDMA3 IPR bits 0 and 1
break;
}

EVTCLR1 = 0x00000001; // clear DSP event 32
Swi_post(swi_handle0);
return;
}

in my swi function, I just wirte data to buffer like following:

*outPtr_code1 = 0xffff;

then I did not see anything in first time slot( actually nothing in any time slots) from the scope. I tried write from ISR or swi. the same results. I have verified use emulator that the data are wirtten into buffer. but it seems not be transfered to McASP1. I verified the ISR is called at the right rate, meaning EDMA sending interrupt request. but I just see nothing on scope. if I comment out the code write to buffer, then I see the pre- wirte the data on each time slot.

what could cause this problem?

Thanks in advance!

Ron