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.

OMAP-L137 Emulation suspend signal between two ISR

Other Parts Discussed in Thread: OMAP-L137

Hi,

I am working on the Starter Kit OMAP-L137.  I develop an application using AIC3106, McASP and EDMA3 in order to sample a signal on one of the input audio jacks.
Data are moved from the McASP using the EDMA3, with an interrupt after each complete block transfert to signal to the DSP to start processing. It seems to work, but the problem comes when I try to debug.

For my application, I would like to check the CPU cycles between executions of 2 Interrupt Service Routine.
However, I know that the McASP and the EDMA in the OMAP-L137 do not support the emulation suspend signal so they will continue to run when CCS is connected. Consequently, it’s impossible to check the time between 2 ISR functions.

I worked on the TMS320C5510, and I could check the number of cycles because the DMA supported the emulation suspend signal.

 

--> So, is there a solution for checking this number of cycles?  And, is it a bug in CCS or in the component OMAP-L137?

Because I don’t think that it’s normal. This is a decrease in performance from Texas Instrument. The ability to interrupt the EDMA (or McASP) was very useful.

Thanks,
Chris.

  • Hi Chris,

    5510 had McBSP, not McASP. McASP is not implemented with emulation support for this device indeed. I gave feedback internally about your e-mail. It is not a bug, it is just something that was not implemented for McASP. So the silicon does not support it. But again, I suggested as an enhancement.

    Here is a customer that worked around that for other debugging purposes:

    https://community.ti.com/forums/p/3383/12522.aspx#12522

    Can you explain me a little more what ISRs are referring to? How where you measuring in C5000?

  •  

    Hi Mariana,

    Thank you for your link, but it's not exactly the same problem than me. In their post, they could not view the data, because when he stops (with a breakpoint), the EDMA continue to run, so the data were overwritten.

    The simplest solution consists to do a copy of the data transferred by EDMA3 just before the breakpoint. Today, I use already this solution, and I able to debug.

    Actually, I would like to implement the same algorithm than I done with the 5510 :
    An ADC samples a signal with a sampling rate of 20KHz. The McASP generates the events that indicate to EDMA3 the beginning of the frame. The EDMA3 is programmed for transferring 1024 samples, and after each complete transfer, there is an interruption. So, if I don't make a mistake (And I don't think so), there will be a CPU interrupt every 1024*1/20K = 51.2ms.

    At each interrupt generated, my ISR (Interrupt Service Routine) is executed. I wanted simply verified that my ISR was executed every 51.2ms by using the option proposed by CCS3.3 (Profile->Clock).
    However, EDMA3 and McASP do not support emulation suspend signal. Consequently, as I said before, when I suspend my program, EDMA3 continues to generate the complete transfer interrupt to the CPU. And so, when I run, the CPU sees an Interrupt pending, and executes my ISR. In fact, I can not use the option (Profile->Clock) to check the time of execution between 2 interrupts.

    I used this option with the 5510 because DMA or McBSP (I don't remember exactly) supports the emulation break control.

    I think it isn't normal that this option was not implemented for McASP (or DMA). Maybe I am the only person, who thinks it's annoying, but it was very useful for debugging...

    Thank you,
    Chris.