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-L138 EDMA Sharing Between the ARM and the DSP

Other Parts Discussed in Thread: OMAP-L138

I am running applications on both the ARM and DSP cores of an OMAP-L138.  The ARM core is running embedded Linux, which I believe uses the EDMA for several of its modules (USB, etc.).  On the DSP side, I need to use the EDMA to transfer data from SPI0.  I am using the EDMA3 LLD driver (v01.11.00.03) to setup the EDMA.

I have not currently run into any problems, but do I need to worry about the ARM and DSP overriding each others EDMA transfers?  Do I need to force the ARM to use one EDMA channel controller and force the DSP to use the other?  Any related advice would be appreciated.

Thanks,

abkirchhoff

  • Hi

    The peripheral/modules that make use of the EDMA3 , can be deduced by you looking at the following page

    http://processors.wiki.ti.com/index.php/DaVinci_PSP_03.20.00.12_Device_Driver_Features_and_Performance_Guide

    (Device Driver List).

    There needs to be some documentation that highlights the DMA resource reserved by the DSP by the kernel. I cannot find anything on this , so  I will follow up with the Linux PSP team, that should help you understand the DSP vs ARM partitioning of DMA channels and TCCs etc.

    A. Kirchhoff said:
    Do I need to force the ARM to use one EDMA channel controller and force the DSP to use the other?

    This might not be always feasible, especially because the 2 Channel Controllers have different set peripheral events mapped to them , so you cannot use EDMA3 Channel Controller 1 to do McASP transfers and similarly you cannot use EDMA3 Channel Controller 0 to trigger transfers on a Timer Compare event.

    The event mapping for the CC is fixed and can be found in the datasheet Table 6-14 (Pg 112)

    Hope this helps some

    Regards

    Mukul

     

  • There are bitmasks for each EDMA channel to determine whether a given channel is "owned" by a given core.  This would be in the cfg file on the DSP side and I believe in the board file for the ARM.

  • Brad,

    Thanks for the reply.  I found the DMA Region Access Enable (DRAE) registers and verified their settings with the debugger.  The ARM core (running Linux) appears to be using shadow region 0 and the DSP core is using shadow region 1, so there should not be any conflicts for now.

    abkirchhoff