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.

TMS320C6678: TMS320C6678: EDMA controller 0 generates exception during initialization.

Part Number: TMS320C6678
Other Parts Discussed in Thread: SYSBIOS

Hi,

    We are using EDMA3 LLD Revision: 02.12.01.25 (EDMA3_LLD_DRV_VERSION_ID=0x020C0118U) and during initialization of controller 0 we are seeing an error while writing into high registers.

    The same driver, but initializing controller 1 and 2 is not getting any error.

    According to TI documentation (see attach files) the high registers are not available for controllers with less than 32 channels, but TI lld is not making this difference at all.

    Do you have any workaround for this issue or do you plan to fix it in the next pdk releases?

Thank you.

   

  • Hi,

    Thanks for sharing the screenshot! Do you have the code portion to call EDMA LLD I can see what the configurations you passed to EDMA create and EDMA open calls? Basically, I need some code example to reproduce the issue for analysis.

    Regards, Eric 

  • Hello,

         There is nothing special. You could try any of your example and beside of what it does just try to initialize the EDMA_CC0. Just initialize it, without any request channels or transfer requests. It will fail like I deschibed and showed into the ticket first comment.

         For driver object initialization configuration I used the sample from edma3_lld_2_12_05_30e\packages\ti\sdo\edma3\drv\sample\src\platforms\Sample_c6678_cfg.c exactlly as it is.

         

    Regards

          

         

  • Hi,

    I used the EDMA LLD: edma3_lld_2_12_05_30D + SYSBIOS 6.76.2.02 + XDC 3.55.2.22, my main function calls   hEdma = edma3init(0, &code); This is EDMA CC0 with 16 EDMA channels on C6678.

    It calls into  edma3ShadowRegionInit()

    ptrEdmaShadowRegs->ECR = (rmInstInitConfig->ownDmaChannels[0U]
    | rmInstInitConfig->ownTccs[0U]);
    ptrEdmaShadowRegs->ECRH = (rmInstInitConfig->ownDmaChannels[1U]
    | rmInstInitConfig->ownTccs[1U]);

     Where it only uses EDMA lower channels 0 and 1. It didn't crash. Please update you EDMA to newer ones 2.12.5.30D/E and check what is ownDmaChannels, don't use any channels in higher 32.

    Regards, Eric

  • Hi,

    I used the EDMA LLD: edma3_lld_2_12_05_30D + SYSBIOS 6.76.2.02 + XDC 3.55.2.22, my main function calls   hEdma = edma3init(0, &code); This is EDMA CC0 with 16 EDMA channels on C6678.

    It calls into  edma3ShadowRegionInit()

    ptrEdmaShadowRegs->ECR = (rmInstInitConfig->ownDmaChannels[0U]
    | rmInstInitConfig->ownTccs[0U]);
    ptrEdmaShadowRegs->ECRH = (rmInstInitConfig->ownDmaChannels[1U]
    | rmInstInitConfig->ownTccs[1U]);

     Where it only uses EDMA lower channels 0 and 1. It didn't crash. Please update you EDMA to newer ones 2.12.5.30D/E and check what is ownDmaChannels, don't use any channels in higher 32.

    Regards, Eric