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.

RTOS/TMS320C6678: EDMA3 Transfer Controller Configuration: Number of bytes in Default Burst Size (DBS)

Part Number: TMS320C6678

Tool/software: TI-RTOS

Hi all,

I'm using the EDMA3 to transfer a certain amount of data from different memories in C6678 device. 

I would like to know for my application the maximum number of bytes per read/write command issued by a transfer controller using the EDMA3 controller.

In particular, looking to table 7-34 of "TMS320C6678 Multicore Fixed and Floating-Point Digital Signal Processor" document, how can I establish which numbers of channel controller and transfer controller are used?

Thanks in Advance

Geni

  • Hi,

    First of all I suggest you skim through SPRUGS5B KeyStone Architecture Enhanced Direct Memory Access (EDMA3) Controller User manual to get idea bout its architecture.

    Next there are several EDMA3 controllers on your chip, and they have a bit different characteristics as you already noticed.

    Behind each EDMA3 channel controller there is a set of transfer controllers. Each transfer controller connected to channel controller via queue, see Fig. 2-2 in user guide. Shortly, requests to QUE_0 are serviced by transfer controller #0, QUE_1 - by transfer controller #1.

    TI recommends use of EDMA LLD for the peripheral. I did not find my way with it, instead I am coding with CSL to have complete control over it. With CSL approach one can easily define and see mappings of channel controller to queue and then to transfer controller. Perhaps, something similar you may find with LLD too.

    Hope this helps.

  • Hi Rrlagic,

    Thanks a lot for you answer.

    I'm using EDMA3 LLD in my application (easy for use and TI recommended). But I would like to know how i can set the number of EDMA3CC and EDMATC.

    Could you help me?

    Thanks in advance

    Geni

  • Geni,

    I am afraid to give any advice about things I haven't tried myself. However, looking through EDMA LLD UG, I see example of driver usage as

    /* Create EDMA3 Driver Object first. */
    edma3Result = EDMA3_DRV_create (edma3InstanceId, NULL, (void *)&miscParam);
    

    Note, there is 'edma3InstanceId' argument, which would bind your driver to specific EDMA3CC, which in turn guarantees your DBS.