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.

PROCESSOR-SDK-DRA8X-TDA4X: TDA4 UDMA usage with BAM framwork.

Part Number: PROCESSOR-SDK-DRA8X-TDA4X

Hi,

PSDK V6.2,

Ubuntu 18.04

I am using appUdmaCopy2D() UDMA for copying 2D block inside one of my DSP kernel, this function is implemented in {psdk_rtos_auto_j7_06_02_00_21}/vision_apps/utils/udma/src/app_udma.c. I took the reference of memcpyC662d() function, defined in {psdk_rtos_auto_j7_06_02_00_21}/vision_apps/kernels/img_proc/c66/vx_image_preprocessing_target.c.

2D block details:

  1. Destination block is declared in DSP's internal L2 memory.
  2. Source block is from External DDR.

Error:

UDMA : ERROR: TR Response not completed!!

Solution tried :

Changed destination block's location from internal L2 to External DDR memory, It worked without any error.

 

Observations :

  1. Both source and destination block should be in External DDR only if we want use UDMA for data transfer.
  2. appUdmaCopy2D() is a blocking call, we can not use it for parallel operation.
  3. appUdmaCopy2D() can not be used to implement ping pong style UDMA usage.

Queries :

  1. How to use UDMA for ping pong style data transfer?
  2. How to use BAM frame work to make UDMA's parallel execution?
  3. Is there any function fo non-blocking function for UDMA data trnasfer? 
  • Hi Dipti,

       BAM is not supported for TDA4x. For other queries we have pinged the right person and you should receive the response on them soon.


    Regards,

    ANshu

  • Hi Dipti,

    1. Download the latest PSDKRA 7.0 from here,

    2. Look at vision_apps/utils/udma/src/app_udma.c file and look for below functions,

    appUdmaCopyNDInit()
    appUdmaCopyNDTrigger()
    appUdmaCopyNDWait()
    appUdmaCopyNDDeinit()

    This is what your need for non-blocking, multi-dimension transfers between L2 and DDR.

    3. For usage please refer to appUdmaTestNDCopy() in file vision_apps/utils/udma/src/app_udma_test.c or for a more "actual" usage please refer to this implemetation of image pre-processing node which does exactly the ping-pong type of operations.

    vision_apps/kernels/img_proc/c66/vx_image_preprocessing_target.c

    Regards,
    Shyam