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.

CCS/TDA4VMXEVM: UDMA : ERROR: TR Response not completed!!

Part Number: TDA4VMXEVM

Tool/software: Code Composer Studio

Hi  :

          i     use   tda4  UDMA  copy  data  from    ddr   to  L2 , but   it    have  some  problem  

          it   print  out  (  UDMA : ERROR: TR Response not completed!!)
          what   can  i  check?

            i      use   follow  api

          app_udma_copy_2d_prms_t prms_2d;
         appUdmaCopy2DPrms_Init(&prms_2d);
         prms_2d.width = width;
         prms_2d.height = height;
         prms_2d.dest_pitch = dest_pitch;
         prms_2d.src_pitch  = src_pitch;
         prms_2d.dest_addr = appMemGetVirt2PhyBufPtr((uint64_t)pOut, APP_MEM_HEAP_L2);
        prms_2d.src_addr   = appMemGetVirt2PhyBufPtr((uint64_t)pIn, APP_MEM_HEAP_DDR);
        appUdmaCopy2D(NULL, &prms_2d, 1);

Thanks

Shuai

   

  • Hi:

              i      find    when      pIn   and  pOut     are    DDR     appUdmaCopy2D    function  is   successful.

             when      pOut    is  L2  (pOut     site    is  0x80000  ) appUdmaCopy2D    function  is    failed     (UDMA : ERROR: TR Response not completed!!)

          

    Thanks

    Shuai

  • Hi,

    Can you share the changes done in this utils to support L2RAM?

    Also can you share the "trRespStatus" that is received in the drscriptor?

    Regards

    Sivaraj R

  • Hi :Sivaraj R

              Can you share the changes done in this utils to support L2RAM?

             i   do nothing    about  this    could  you    please   tell   me   ,  how   to  support L2RAM  in  utils  ?

    Thanks!

    Shuai

  • pOut     =0x0080000;

    prms_2d.dest_addr = appMemGetVirt2PhyBufPtr((uint64_t)pOut, APP_MEM_HEAP_L2);

    this   is   what  i  have   done  

  • I am not getting where you are changing pOut?

    Can you check what is the value of prms_2d.dest_addr after prms_2d.dest_addr = appMemGetVirt2PhyBufPtr((uint64_t)pOut, APP_MEM_HEAP_L2); statement?

    Also what is the value of trRespStatus?

  • Hi :Sivaraj R

           i    test   appUdmaTest2DCopy     on  C66   is    successful.

          in    appUdmaTest2DCopy     src_buf   and   dest_buf   are   all   from DDR  , i    try   to   copy   data   from  DRR  to   L2

         I     try   get     dest_buf   from  APP_MEM_HEAP_L2      but      failed      dest_buf  is  erro

         //dest_buf = appMemAlloc(APP_UDMA_HEAP_ID, size, UDMA_CACHELINE_ALIGNMENT);
        dest_buf = appMemAlloc(APP_MEM_HEAP_L2, size, UDMA_CACHELINE_ALIGNMENT);

       then       i  try     set    dest_buf =(uint8_t  *)0x00800000;      

            prms_2d.dest_addr = appMemGetVirt2PhyBufPtr((uint64_t)dest_buf, APP_MEM_HEAP_L2);

           prms_2d.dest_addr =8388608

         but     appUdmaCopy2D   return    -1       

        ti.sysbios.heaps.HeapMem: line 423: assertion failure: A_invalidFree: Invalid free
    xdc.runtime.Error.raise: terminating execution

    so     if    i    wang   to     copy   data    from   DDR   to  L2     what  can   i   do ?

    could   you   give  me   the   step

    Thanks

    Shuai

  • HI:    Sivaraj R

        i   change   follow       then   dest_buf = appMemAlloc(APP_MEM_HEAP_L2, size, UDMA_CACHELINE_ALIGNMENT);     dest_buf  is   40800000  now

    1.  In vision_apps/apps/basic_demos/app_tirtos/common/app_cfg_c6x_1.h, add following line:
      1. #define L2_MEM_SIZE           (288*1024u)
    2. In vision_apps/apps/basic_demos/app_tirtos/tirtos_linux/c66x_1/linker.cmd, add following line at end (also do same for c66x_2 folder):
      1. .bss:l2mem              (NOLOAD)(NOINIT) : {} > L2RAM_C66x_1
    3. In vision_apps/apps/basic_demos/app_tirtos/tirtos_linux/c66x_1/linker_mem_map.cmd, add following at beginning of MEMORY section:
      1.     /* L2 for C66x_1 [ size 288.00 KB ] */
            L2RAM_C66x_1              ( RWIX ) : ORIGIN = 0x40800000 , LENGTH = 0x00048000
    4. In vision_apps/apps/basic_demos/app_tirtos/tirtos_linux/c66x_2/linker_mem_map.cmd, add following at beginning of MEMORY section:
      1.     /* L2 for C66x_2 [ size 288.00 KB ] */
            L2RAM_C66x_2              ( RWIX ) : ORIGIN = 0x41000000 , LENGTH = 0x00048000

        then       prms_2d.dest_addr = appMemGetVirt2PhyBufPtr((uint64_t)dest_buf, APP_MEM_HEAP_L2);     prms_2d.dest_addr =1082130432   

    i   debug  in   appMemGetVirt2PhyBufPtr    it    do  noting.

    then   appUdmaFill2D  return  -1    i  debug in  it    in  appUdmaTransfer  function   trRespStatus ==1     so     appLogPrintf("UDMA : ERROR: TR Response not completed!!\n");

                    what    can   i    do    to   slove   it ?

    Thanks

    Shuai

       

       

  • Shuai,

    The total available L2 memory size on C66 DSP is 288KB. With default setting, the L2 cache size is 32KB so you will have to use 288KB - 32KB = 256KB as your L2 SRAM space. Can you please change linker sizes and L2_MEM_SIZE, rebuild and try again?

    Regards,
    Shyam

  • Hi   :Shyam

          i  have    change     #define L2_MEM_SIZE           (256*1024u)      but      it   also  the  same .

          in   my   code    dest_buf = appMemAlloc(APP_MEM_HEAP_L2, size, UDMA_CACHELINE_ALIGNMENT);      size   is  small

       Thanks

    Shuai

  • HI:

            i    find   a   log   maybe  useful   for  the  problem!
    [C6x_1 ]     40.635744 s: 2222222222222222222data_in0=34 ,data_in1=37 ,data_in2=4[   42.904520] ion_buffer_destroy: buffer still mapped in the kernel

          thanks

    Shuai

  • This looks like a duplicate of e2e.ti.com/.../3295317