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.

EMIF with EDMA example

Other Parts Discussed in Thread: TMS320C6455

Hi,

I wanted to create an EDMA to EMIF transmitt only example. As a base I took dsp_app example provided with the TMS320C6455 DSK. I removed all of the unnecessary stuff and even enabled Global EDMA, even though I do not think I needed to. Everything works as long as destination address in PARaM set is McBSP. As soon as I changed it to EMIF mapped address the execution does not happen anymore. I am attaching the example file I made. Interrupt should be triggered on EDMA completion, however EDMA event is tied to McBSP transmit. Is that the reason why it does not work? I read through the EDMA3 manual, and did not find anything else I need to change (I think). Also, do you know of any examples already like that, for L2 to EMIF transfers through EDMA?

Thanks.

dsk_app.zip
  • Vladimir Podosinov said:
    Interrupt should be triggered on EDMA completion, however EDMA event is tied to McBSP transmit. Is that the reason why it does not work?

    This would probably do it, if you are no longer accessing the McBSP you will not get a continual stream of events to drive the EDMA, so I suspect the EDMA is ready to go and just waiting for events to come in from the McBSP. As a test you could write into the ESR/ESRH bits (discussed in section 4.2.6.3 of SPRU966b) for the McBSP transmit event you have the EDMA tied to, this should manually trigger the EDMA event and cause the data transfer to happen.

    If you intend to have the CPU kick off transfers you may be more interested in using the QDMA, as it is more designed for this sort of thing, otherwise you would need to select a different event source to drive your transfers if you are not planning on using the McBSP. I don't do all that much work with C6455 these days so I am not sure if there is a good example for you or not.

  • Whether you are using CSL or the EDMA3 LLD for driving the EDMA, there will be examples provided for using QDMA. As Bernie has explained, QDMA is specifically designed for the DSP manually starting a memory-to-memory transfer. The DMA channels are specifically designed to be triggered by external events or other DMA/QDMA channels, although the DSP can manually trigger them if you want to.

  • I had 2 questions to you. First, if I do not want DSP to take care of the transfer, but rather make it automatically restart after the transfer is done. For example if I have ping-pong buffering, can I set up either QDMA or DMA to self restart as soon as one of the buffers is transferred? (I think I should, but i am not sure if QDMA can from manual) And second, what is EDMA3 LLD? I did see it being mentioned somewhere, but I though that it's an older version that existed before the CSL library 3.0. Is LLD a simpler way to configure EDMA3 through BIOS or something like that?

    Thanks.

  • In the Training section of TI.com, there is a training video set for the C6474 which has a lot of similarities to the C6455. It may be helpful for you to review a few of the modules. But in particular, the EDMA3/QDMA/IDMA Module may help you understand linking and chaining to make a DMA channel automatic. You can find the complete video set at http://focus.ti.com/docs/training/catalog/events/event.jhtml?sku=OLT110002 .

    LLD is newer than CSL3 and is intended to be easier to work with. In particular, it handles resource management to help you get an unused channel or other resource.

    I tend to use CSL, which is what the video uses, because I started with that when the C6455 first came out. I know how to get it to do what I want, so I stick with it. LLD is probably the recommended way to go now, and not all of our DSPs with EDMA3 come with the functional level CSL like the C6455 does. But they all come with LLD.

    Look in the Wiki pages to find out more about EDMA3 LLD.

     

    If you have more questions, keep them coming here or start a new thread on a different topic. If we have answered your questions, please click  Verify Answer  on this posting.

  • Hi Randy

    The link in here (http://focus.ti.com/docs/training/catalog/events/event.jhtml?sku=OLT110002to the EDMA3/QDMA/IDMA Module training video is wrong.

    Can you fix this?

     

    Many thanks,

    Mads

  • Mads,

    Thank you for pointing this out. I will report the link being to the wrong place.

    For now, you can try http://learningmedia.ti.com/public/c6474/C64x_Edma/index.html as a direct link to the EDMA video.

    Regards,
    RandyP