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.

EDMA is slow



Hello,

I use EDMA with lld to sort a YUV image. I refer to the examples can be downloaded in http://processors.wiki.ti.com/index.php/Programming_the_EDMA3_using_the_Low-Level_Driver_(LLD). edma.c file in examples use

EDMA3_DRV_setSrcParams (EdmaObj->hEdma, EdmaObj->iChannel, (unsigned int) (Src), EDMA3_DRV_ADDR_MODE_INCR, EDMA3_DRV_W8BIT); 

 EDMA3_DRV_setDestParams (EdmaObj->hEdma, EdmaObj->iChannel, (unsigned int) (Dst), EDMA3_DRV_ADDR_MODE_INCR, EDMA3_DRV_W8BIT);

EDMA3_DRV_setOptField (EdmaObj->hEdma,EdmaObj->iChannel, EDMA3_DRV_OPT_FIELD_TCINTEN, EDMA3_DRV_TCINTEN_EN);

EDMA_DRV_enableTransfer(..., ..., EDMA3_DRV_TRIG_MODE_EVENT)

I just use the same as the example, it seems ok. But when picture size is 720*480, and I use AB sync, I found edma is very slow.

In another example in How to Use the EDMA3 Driver on a TMS320DM643x Device (Rev. A),

EDMA3_DRV_setSrcParams ( hEdma, chId, (unsigned int)(src),EDMA3_DRV_ADDR_MODE_INCR, EDMA3_DRV_W8BIT )

EDMA3_DRV_setDestParams ( hEdma, chId, (unsigned int)(dstU),EDMA3_DRV_ADDR_MODE_INCR,EDMA3_DRV_W8BIT )

EDMA3_DRV_setOptField ( hEdma, chId, EDMA3_DRV_OPT_FIELD_TCINTEN, 1u ) // complete code

EDMA3_DRV_setOptField ( hEdma, chId, EDMA3_DRV_OPT_FIELD_ITCINTEN, 1u ) //intermediate complete code

EDMA_DRV_enableTransfer(..., ..., EDMA3_DRV_TRIG_MODE_MANUAL)

and in ISR callback funcition will call

EDMA_DRV_enableTransfer(..., ..., EDMA3_DRV_TRIG_MODE_MANUAL)

untill transmit complete. In this example, EDMA is fast and works OK. But  every intermediate interrupt ISR calls

EDMA_DRV_enableTransfer(..., ..., EDMA3_DRV_TRIG_MODE_MANUAL)

will cause other task work improperly.

could some help me!