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.

C6747 EDMA3

Now, I just want to complete a very simple data transfer from 'xmt '  to 'rcv'  with EDMA3. Here is my settings:

edma3ccRegs->IPR = 0x0;

edma3ccRegs->EESR |= 0x0002; edma3ccRegs->DMAQNUM[0] = (CSL_EDMA3CC_DMAQNUM_E1_Q0 << CSL_EDMA3CC_DMAQNUM_E1_SHIFT); /* Set source */ edma3ccRegs->PARAMSET[1].SRC = (Uint32)xmt; edma3ccRegs->PARAMSET[1].DST = (Uint32)rcv; // Set destination edma3ccRegs->PARAMSET[1].A_B_CNT = 0x00100004; //ACNT = 4Bytes BCNT = 10Bytes edma3ccRegs->PARAMSET[1].CCNT = 0x4; edma3ccRegs->PARAMSET[1].SRC_DST_BIDX = 0x0; edma3ccRegs->PARAMSET[1].SRC_DST_CIDX = 0x0; edma3ccRegs->PARAMSET[1].LINK_BCNTRLD = 0x0001FFFF; edma3ccRegs->PARAMSET[1].OPT = CSL_FMKT(EDMA3CC_OPT_ITCINTEN,ENABLE) | CSL_FMKT(EDMA3CC_OPT_ITCINTEN,DISABLE) | CSL_FMKT(EDMA3CC_OPT_TCINTEN,ENABLE) | CSL_FMK(EDMA3CC_OPT_TCC,0x1) | CSL_FMKT(EDMA3CC_OPT_TCCMOD,NORMAL) | CSL_FMKT(EDMA3CC_OPT_FWID,32BIT) | CSL_FMKT(EDMA3CC_OPT_STATIC,STATIC) | CSL_FMKT(EDMA3CC_OPT_SYNCDIM,ASYNC) | CSL_FMKT(EDMA3CC_OPT_DAM,INCR) | CSL_FMKT(EDMA3CC_OPT_SAM,INCR); edma3ccRegs->IESR =0x00; edma3ccRegs->ESR |= 0x0002;

But after running the code, the data don't transfer from 'xmt' to 'rcv'.  And I have referenced the following post. However, it seems not suitable for me.  

http://e2e.ti.com/support/dsp/tms320c6000_high_performance_dsps/f/112/p/75573/274512.aspx#274512


  • Bo,

       Where are the xmt and rcv buffers located in memory? On Chip -or- Off Chip?

    Also - have you confirmed that the event is being generated in the EDMA3 Transfer Controller?

     

    Also - did you confirm that the sections of the device you are using are powered up?

  •     Firstly, thanks for your reply. But I met some new problems.

    Drew Abuan said:

       Where are the xmt and rcv buffers located in memory? On Chip -or- Off Chip?

     

       L2:      o = 11800000h   l = 00040000h

     The buffers located in the L2. I think it's On chip.

    Drew Abuan said:

      did you confirm that the sections of the device you are using are powered up?

     

      I have checked the psc0Regs->MDSTAT[0](Module Status n Register ), which shows the edma3cc is enable. So I think it's powered up. And I also checked the edma3tc0 and edma3tc1. They are all powered up.

    Drew Abuan said:

    have you confirmed that the event is being generated in the EDMA3 Transfer Controller?

     I think this is the real problem. As you can see in the following pic. After I running the code, the psc0Regs changed its value. But the edma3ccRegs didn't change anything. This really make me confused. Can you give me some suggestions about this?

  • Bo Wang,

    You will need to study the EDMA3 User's Guide for your DSP. It explains many details that you need to understand, such as all of the OPT fields, the IDX fields, and the result of LINK=0xFFFF.

    If you prefer a video, in the Training section of TI.com, there is a training video set for the C6474. It is a different device but the EDMA3 is very similar. In particular, the EDMA3/QDMA/IDMA Module will apply to your current questions. You can find the complete video set at http://focus.ti.com/docs/training/catalog/events/event.jhtml?sku=OLT110002 .

    Regards,
    RandyP

     

    If you need more help, please reply back. If this answers the question, please click  Verify Answer  , below.

  • Thanks for your help. I will read the EDMA3 User's Guide more careful. But I just wonder why the edma3ccRegs' values  are all zero, when I read them in the Watch Window.  Because in my code, I have set the EDMA3's register, such as the OPT fields.

    The code of the EDMA3:

    Uint32 i;
     
      edma3ccRegs->EESR |= (Uint32)0x0002;
      edma3ccRegs->DMAQNUM[0] =  (CSL_EDMA3CC_DMAQNUM_E1_Q0 << CSL_EDMA3CC_DMAQNUM_E1_SHIFT);
       /* Set source                                                               */
      edma3ccRegs->PARAMSET[1].SRC = (Uint32)&xmt;
      edma3ccRegs->PARAMSET[1].DST = (Uint32)&rcv;         // Set destination
      edma3ccRegs->PARAMSET[1].A_B_CNT = 0x000A0004;      //ACNT = 4Bytes BCNT = 10Bytes
      edma3ccRegs->PARAMSET[1].CCNT = (Uint32)0x01;
      edma3ccRegs->PARAMSET[1].SRC_DST_BIDX = (0x0004 << CSL_EDMA3CC_SRC_DST_BIDX_DSTBIDX_SHIFT)
                                            |(0x0004 << CSL_EDMA3CC_SRC_DST_BIDX_SRCBIDX_SHIFT);
      edma3ccRegs->PARAMSET[1].SRC_DST_CIDX = (Uint32)0x00;
      edma3ccRegs->PARAMSET[1].LINK_BCNTRLD = 0x0001FFFF;
      edma3ccRegs->PARAMSET[1].OPT = (CSL_EDMA3CC_OPT_TCINTEN_ENABLE << CSL_EDMA3CC_OPT_TCINTEN_SHIFT)
                                   |(0x01 << CSL_EDMA3CC_OPT_TCC_SHIFT)
                                   |(CSL_EDMA3CC_OPT_SYNCDIM_ASYNC << CSL_EDMA3CC_OPT_SYNCDIM_SHIFT);
       

       edma3ccRegs->EMCR = (Uint32) 0x0002;
       edma3ccRegs->SECR = (Uint32) 0x0002;
       edma3ccRegs->IESR =0x00;
       edma3ccRegs->ICR = (Uint32) 0xFFFFFFFF;

       for(i = 0;i < 10;i++)
       {
           
            edma3ccRegs->ESR |= (Uint32) 0x0002;

        }

    Looking forward your reply~~~

  • Bo,

     

     You're correct L2 is on-chip. I have liked the following low-level example projects that we have developed for the OMAP-L1x, but since is the same DMA core, and I believe they have the same memory mapping (you'll want to double check) you can use this projects as a starting example. They might provide some insight into your problem

  • Thanks for your reply. I followed your suggestions and installed the "quickStartOMAPL1x_rCSL-2.0-Setup.exe". The code about the EDMA3 really helped me a lot. But when I built them, I met some new problems. As you can see in the following pic, I think it maybe needs a .lib file. But I cannt find the lib in the "quickStartOMAPL1x_rCSL" document(the installed file). I have tried the rts64plus.lib and rts6740.lib, but they seem not suitable. So can you give me some tips to solve this problem?

  • Thanks for your great help~~~Good luck~~~