Hello,
I am trying to use ACPY3 and DMAN3 to do some DMA transfers. However, the ACPY3_start() function seems to be hanging and I cannot figure out why. As far as I can tell it is properly setup.
Here is a portion of the initializations code:
/* Initialize ACPY3 */
dmaTab.numTransfers = 1;
dmaTab.numWaits = 1;
dmaTab.priority = IDMA3_PRIORITY_MEDIUM;
dmaTab.protocol = &ACPY3_PROTOCOL;
dmaTab.persistent = FALSE;
DMAN3_init();
ACPY3_init();
dmaStatus = DMAN3_createChannels(0, &dmaTab, 1);
memHandle = dmaTab.handle;
if (dmaStatus == DMAN3_SOK) {
ACPY3_activate(memHandle);
printf( "ACPY3 activated. \n" );
} else {
printf( "Channel create failed. Status: %d\n", dmaStatus);
}
acpyPaRam.transferType = ACPY3_1D1D;
acpyPaRam.numElements = 1;
acpyPaRam.numFrames = 1;
acpyPaRam.waitId = 1;
And later I define the function Dcpy:
void Dcpy(void * destination, void * source, int length) {
/* Wait for previous copy to finish. */
if ( ACPY3_complete(memHandle) == 0 )
ACPY3_wait(memHandle);
printf( "Wait Complete.\n" ); // For debug
/* Setup next DMA copy */
acpyPaRam.srcAddr = source;
acpyPaRam.dstAddr = destination;
acpyPaRam.elementSize = length;
/* Configure ACPY3 */
ACPY3_configure(memHandle, &acpyPaRam, 0);
printf( "ACPY3 Configured.\n" ); // For debug
/* Start ACPY3 memory transfer */
ACPY3_start(memHandle);
printf( "ACPY3 Started.\n" ); // For debug
}
Any help as to why the transfer will not start?
-Nate