I have some problems with ACPY3
I want to copy memory through EDMA(ACPY3 Interface) on DSP/BIOS of DM6467
I copy a big memory with "one" dma, and the cost is TIME0.
I think the these "copy" operation should be "parallel" through DMA, so I divided the memory into 16 sections, and copy them with 16 DMAs, I think the cost should be TIME0/16.
Out of my expectation, the real result of the test is TIME0 !
I have checked my codes, the "transferPending" is false, and my code as following:
for(i = 0 ; i < 16 ; i ++)
{
ACPY3_start(dmaHandle[i]);
}
In additionally, the DMA operation and CPU operation should be parallel, so I take another test : execute memcpy during DMA operation.
my codes as following:
ACPY3_start(dmaHandle) ; //start copy memory1
memcpy(.....) ; //copy memory2
ACPY3_wait(dmaHandle) ;
I have count the cost for DMA copy and memcpy for two different memory respectly:
Suppose cost of DMA copy Is TIME0
Suppose cost of memcpy is TIME1
If DMA copy and memcpy is "parallel", the result should be MAX(TIME0, TIME1). But the real result of test is TIME0 + TIME1.
Note:
My copy operation is running on DSP side, and my statistics of cost is taken on ARM side.
My DVSDK version is 2_00_00_22
My Framework_Components version is 2_23_01
My DSP/BIOS version is 5_33_03
Is there any person would tell me the reason?
for(i = 0 ; i < 16 ; i ++)
{
ACPY3_wait(dmaHandle[i]);
}