1) I'm finding ECPY_configure to be very slow. I'm queuing up 2 transfers as in the code below, and I find that the calls to ECPY_configure block for quite a long time. How do I resolve this?
Int UNIVERSAL_ECPY_TI_doCopy_dual_start(IUNIVERSAL_Handle handle, XDAS_UInt8* dst1, XDAS_UInt8* src1, unsigned int size1, XDAS_UInt8* dst2, XDAS_UInt8* src2, unsigned int size2)
{
/* Extract channel granted to this alg */
TESTPATTERN_Obj * algHandle = (TESTPATTERN_Obj *)handle;
ECPY_Params p;
ECPY_Handle dmaHandle0 = algHandle->ecpyHandle[0];
/* Setting up the parameters for the first transfer (data grp 1) */
p.transferType = ECPY_1D1D;
p.numElements = 1;
p.numFrames = 1;
p.dstAddr = (void *)dst1;
p.srcAddr = (void *)src1;
p.elementSize = size1; // Number of bytes.
ECPY_configure(dmaHandle0, &p, 1);
p.dstAddr = (void *)dst2;
p.srcAddr = (void *)src2;
p.elementSize = size2; // Number of bytes.
ECPY_configure(dmaHandle0, &p, 2);
ECPY_setFinal(dmaHandle0, 2); // "ECPY_configure() must have previously been called at least once since channel activation."
ECPY_start(dmaHandle0);
}
2) What do the ECPY_direct* commands do? I can't work out what they are meant for. I found this forum post that says something about them being faster but there is no documentation on them. :-(
Thanks,
Ralph