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.

[UDMA] Open HC and UHC channel failed!

Hi all,

I changed the chType from UDMA_CH_TYPE_TR_BLK_COPY to UDMA_CH_TYPE_TR_BLK_COPY_HC and UDMA_CH_TYPE_TR_BLK_COPY_UHC in the example "udma_memcpy_test" , but the UDMA channel open failed.

The errors are:

[UDMA] [Error] RM Alloc Blkcpy Ch failed!!!
[UDMA] [Error] Channel resource allocation failed!!

How to use these two types of UDMA?

  • This is because the default resource manager (RM) configuration doesn't include HC channels.

    You can override the default by setting below parameters after calling "UdmaInitPrms_init(instId, &initPrms);"

    initPrms.rmInitPrms.startBlkCopyUhcCh = 0;
    initPrms.rmInitPrms.numBlkCopyUhcCh   = 4;
    initPrms.rmInitPrms.startBlkCopyHcCh  = 4;
    initPrms.rmInitPrms.numBlkCopyHcCh    = 4;

    Note the start and count should match the number of channels supported by Main/MCU NAVSS by the device.

    This is defined in pdk\packages\ti\csl\soc\j721e\src\cslr_navss_defines.h

  • Thank you Sivaraj!

    I overrided the settings on your suggestion. Now I can create the HC and UHC  channel success.

    But when I use these channels to transfer data form DDR to DDR, the semaphore will be block there and never get the finish event.



  • Kindly share the following

    1. Which core are you running the example?

    2. All the changes done for me to review.

  • I run the example on C66x_0,

        instId = UDMA_INST_ID_MAIN_0;
    #endif
        /* UDMA driver init */
        UdmaInitPrms_init(instId, &initPrms);
        initPrms.printFxn = &App_print;
        initPrms.virtToPhyFxn = &Udma_appVirtToPhyFxn;
        initPrms.phyToVirtFxn = &Udma_appPhyToVirtFxn;
        initPrms.rmInitPrms.startBlkCopyUhcCh = 0;
        initPrms.rmInitPrms.numBlkCopyUhcCh   = 4;
        retVal = Udma_init(drvHandle, &initPrms);

            chType = UDMA_CH_TYPE_TR_BLK_COPY_UHC;
            UdmaChPrms_init(&chPrms, chType);

    I changed the line with red color.

  • Hi,

    Were you able to proceed any further?

    With the above changes I am seeing the same behavior. 

    HC channel is verified in the udma ut, Ex testcase 4100U.

    I am trying to get the required changes in example and share the same.

    Regards,
    Prasad

  • Hi,

    Comparing with the UT configuration for HC channel (tc no 4100)
    Yon can do the below changes in the testapp to git it working.

    Update the txPrms and rxPrms as below before calling the channel config in the App_create function.

    UdmaChTxPrms_init(&txPrms, chType);
    txPrms.burstSize = 0x1;
    txPrms.fifoDepth = 128;
    retVal = Udma_chConfigTx(chHandle, &txPrms);

    UdmaChRxPrms_init(&rxPrms, chType);
    rxPrms.burstSize = 0x1;
    retVal = Udma_chConfigRx(chHandle, &rxPrms);

    Regards,
    Prasad