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.

AM5728: DSP EDMA conflict

Part Number: AM5728
Other Parts Discussed in Thread: PCM1864,

Hi,

I have interfaced PCM1864 based Circular microphone board with Sitara GPEVMAM572x DSP1 core, stand alone program on DSP1  with out linux on A15 is running fine.

Now, I want A15 to run on linux and DSP1 to run on RTOS, my DSP RTOS application has following interfaces.

I2C, McASP3 and McASP7. Also, I need 2 instances of EDMA. 

I added IPC to the existing RTOS application using below link ,

processors.wiki.ti.com/.../Linux_IPC_on_AM57xx

Hence, the resource table which is given as of in above document is being used. IPC is working , able to load the DSP1 core from linux running on A15 core, but DSP is aborting while initializing EDMA instance.

It is throwing error as source not available with a some address.

With out linux running on A15 ,DSP1 is working fine and With linux on A15, DSP1 is giving error.

What would be the issue, which part I need to look into DSP or Linux?


Also, in device tree I2C5, McASP3 and McASP7 sections are removed so that these peripherals could be accessed by DSP1 core.

Thanks,

Janardan M

  • The RTOS team have been notified. They will respond here.
  • Hi,

    I could figure out that EDMA instance 0 corresponds to the soc edma and it would be used by A15, all DSP1 related DMA transfers are to be done through EDMA with instance 1. Is my understanding correct?

    In my case I need to take a bunch a data from circular microphone board, for this I need a DMA channel.
    I need to send the processed audio out so need another DMA channel. So, for both am I supposed to use the instance 1 for DSP audio receive and transmit activities?

    Thanks,
    Janardan
  • Part Number: AM5728

    Hi,

    I am using EVMAM572x evaluation board to interface PCM1864 based circular microphone board.  A15 is running linux and RTOS is running on DSP1 core.

    In project I am receiving audio from CMB through McASP7 , process it in DSP1 core and transmit it out through McASP3.

    Below is the API used in RTOS applicaion.

       status = mcaspCreateChan(&hMcaspTxChan, hMcaspDev,
                                 MCASP_OUTPUT,
                                 &mcasp_chanparam[1],
                                 mcaspAppCallback, NULL);

    Channel submission is not causing any issues, but 5 to 6 seconds after submission of channel the DSP1 core is going to reset state with following error message on console.

    C66xx_DSP1: Trouble Reading Register SP: (Error -1137 @ 0x2F) Device is held in reset. Take the device out of reset, and retry the operation. (Emulation package 7.0.188.0)

    What would be issue?

    Also, this is observed only when A15 is running on linux, when DSP1 is used stand alone no issues observed.

    Thanks and Regards,

    Janardan M

  • Hi Janardan,

    Check your clocking and any other HW initializations to make sure they are not being initialized by both Linux and DSP.

    When connecting to the DSP using CCS, make sure you are not running any GEL files and are only connecting to the DSP core.

    Try disabling the modules in the device tree instead of removing their entries:

    &uart3 {
    	status = "disabled";
    	ti,no-idle;
    };

    If you are using the DSP EDMA instead of the SOC EDMA, you may need to use local addresses instead of global L3 addresses. 

  • Hi sachin,

    While launching the configuration, I could see that gel files are being used as below logs says that.

    Cortex_M4_IPU1_C0: GEL Output: --->>> AM572x Cortex M4 Startup Sequence In Progress... <<<---
    Cortex_M4_IPU1_C0: GEL Output: --->>> AM572x Cortex M4 Startup Sequence DONE! <<<---
    Cortex_M4_IPU1_C1: GEL Output: --->>> AM572x Cortex M4 Startup Sequence In Progress... <<<---
    Cortex_M4_IPU1_C1: GEL Output: --->>> AM572x Cortex M4 Startup Sequence DONE! <<<---
    Cortex_M4_IPU2_C0: GEL Output: --->>> AM572x Cortex M4 Startup Sequence In Progress... <<<---
    Cortex_M4_IPU2_C0: GEL Output: --->>> AM572x Cortex M4 Startup Sequence DONE! <<<---
    Cortex_M4_IPU2_C1: GEL Output: --->>> AM572x Cortex M4 Startup Sequence In Progress... <<<---
    Cortex_M4_IPU2_C1: GEL Output: --->>> AM572x Cortex M4 Startup Sequence DONE! <<<---
    C66xx_DSP1: GEL Output: --->>> AM572x C66x DSP Startup Sequence In Progress... <<<---
    C66xx_DSP1: GEL Output: --->>> AM572x C66x DSP Startup Sequence DONE! <<<---
    C66xx_DSP2: GEL Output: --->>> AM572x C66x DSP Startup Sequence In Progress... <<<---
    C66xx_DSP2: GEL Output: --->>> AM572x C66x DSP Startup Sequence DONE! <<<---
    CortexA15_0: GEL Output: --->>> AM572x Cortex A15 Startup Sequence In Progress... <<<---
    CortexA15_0: GEL Output: --->>> AM572x Cortex A15 Startup Sequence DONE! <<<---
    CortexA15_1: GEL Output: --->>> AM572x Cortex A15 Startup Sequence In Progress... <<<---
    CortexA15_1: GEL Output: --->>> AM572x Cortex A15 Startup Sequence DONE! <<<---

    Then when I connect to target I could see following logs,

    IcePick_D: GEL Output: Ipu RTOS is released from Wait-In-Reset.
    IcePick_D: GEL Output: Ipu SIMCOP is released from Wait-In-Reset.
    IcePick_D: GEL Output: IVAHD C66 is released from Wait-In-Reset.
    IcePick_D: GEL Output: IVAHD ICONT1 is released from Wait-In-Reset.
    IcePick_D: GEL Output: IVAHD ICONT2 is released from Wait-In-Reset.

    Is this okay or am I supposed to do something so that even these gel files should not be used?

    I have commented "Board_init"  from my CCS project.

    Required sections such as I2C5, McASP3, McASP7 have been removed from the device tree and is being initialized from the CCS project.

    Thanks,

    Janardan M

  • HI,

    I am getting to see the following log on Linux console when I try to execute mcaspCreateChan() API from DSP.

    [ 1708.601729] omap-iommu 40d02000.mmu: iommu fault: da 0x46000000 flags 0x0

    Google search redirected me to below e2e link where in same problem is encountered.

    e2e.ti.com/.../2052803

    I followed the work around mentioned on that link, but status remains same. Error is seen only when I try to use  mcaspCreateChan() to create McASP3 channel.

    For I2C5 lines, McASP7 lines error is not observed. 

    It appears like when DSP is trying to configure McASP3 lines, registers access from DSP appears to be illegal, how to fix the issue?

    Thanks,

    Janardan

  • Hi,

    My issues are resolved. Setup is working as expected.

    Thanks for suggestions.

    -Janardan

  • Hi Janardan,

    Glad to hear it's been resolved. Thank you for updating the thread.

    Closing this thread now. Please click the Resolved button. Thanks.