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.

How to use the EDMA3 for matrix transpose with ACPY3 based on DM6467 under linux

I found that ACPY3 had provided four default setting : 1D1D , 1D2D , 2D1D and 2D2D ,but the document sprueq5a has an example about  matrix transpose , that is 3D-transpose, and the setting 00x00900004 that I didn't know which default setting was being corresponded to .

So I didn't  know that how to use the EDMA3 for matrix transpose with ACPY3 based on DM6467 ,please help me ,give me some examples and documents.

  • ACPY3 library inherently doesn't support 3D transfers. ACPY3 library uses QDMA channels only and the limitation is mostly a hardware limitation when using QDMA channels.

    You might have better luck using the EDMA3 Low Level Driver to do these transfers.

  • Thanks , I had try to do it using ACPY3 ,it really can't . You mean using the EDMA3 Low Level Driver to do these transfers , is it to control the EDMA3's registers to do that ?

    I also had try to do it , but the Programs can sometimes run and sometimes not running  ,and the result is not correct , for example:

    pParam[0] =( 0x00900004| tccNum); //OPT TCC == edmachan + STATIC
          pParam[1] = (unsigned int)(src + i * 6400);
          pParam[2] = 0x00020001; //Bcnt, Acnt
          pParam[3] = (unsigned int)mdstY;
          pParam[4] = 0x0c800001;
          pParam[5] = 0xFFFF;
          pParam[6] = 0x00010002;
          pParam[7] = 0x0c80;

          //* SECR = 0xFFFFFFFF */
          *secr = 0xFFFFFFFF;

          /* ICR */
          *icr= (0x01 << edmaChan);

          /* DCHMAP */
          *dchmap=(edmaChan << 4) ;

          /* ESR = 0x02 */
          *esr= (0x01 << edmaChan);

          /* Check for completion */
          while (((*ipr) & (0x1 << edmaChan))  != (0x01 << edmaChan));

    And I have some other questions :

    the first , using this method to control EDMA3 ,why I only can using the channel 0 , the other channels can't ?

    the second , if I useACPY3 to control , how can I do for transferring data with multichannel ?

  • ACPY3 cannot be used to do 3-d transfers.

    The EDMA3 Low Lever Driver I was referring to is here:-

    http://wiki.davincidsp.com/index.php/Programming_the_EDMA3_using_the_Low-Level_Driver_(LLD)

     

  • Thanks , could I also using EDMA3_LLD based on DM6467 under Linux , because  somebody told me that the EDMA3_LLD only could use on ccs , really ? Please give me some examples under Linux, could you? 

  • Sorry, EDMA3 LLD is for DSP-only. It is not available for Linux.

  • Could I have another method to use the EDMA3 for matrix transpose based DM6467 under Linux , for example ,controlling EDMA3's registers ? And the questions as that I had told above : using this method to control EDMA3 ,the Programs can sometimes run and sometimes not running  , but the result is not correct , and why I only can using the channel 0 , the other channels can't ? How to use APCY3 for matrix transpose ? Thank for your help.

  • I have a problem, how to add  the ACPY3 API library via a framework like Codec Engine (CE)  at my client application, My application build at DVTB.  when I just #include relate head file,  compile “make dm6467"  error:  undefine DMAN3_init()....so I wonder how to add ACPY3 API library support at my application.

  • Please start a new post, since this looks like an unrelated question.