Dear all,
I've added the EDMA interface to a modified VLPB OMX component to copy external memory content to the DSP internal memory.I've followed the fastcopy example.
I've added the ACPY3 and DMAN3 variables to DspAppMain.cfg, using for the heapInternal and heapExternal variables the value "DSKT2_HEAP". Then I added in my OMX component init function the following code:
//INITIALIZING THE DMA
/*
* Initialize DMA manager and ACPY3 library for XDAIS algorithms
* and grant DMA resources
*/
DMAN3_init();
ACPY3_init();
//activate channels
IDMA3_ChannelRec dmaTab;
Int status;
/* Set up the DMA Channel descriptor with the transfer parameters */
dmaTab.numTransfers = 1;
dmaTab.numWaits = 1;
dmaTab.priority = IDMA3_PRIORITY_URGENT;
/*
* The ACPY3 transfer protocol will be used as the IDMA3 protocol object
* This object defines the memory requirements and the initialization and
* de-initialization functions for the protocol's environment
*/
dmaTab.protocol = &ACPY3_PROTOCOL;
dmaTab.persistent = FALSE;
/*
* On success this call will return a valid DMA channel handle with the
* attributes defined above
*/
status = DMAN3_createChannels(0, &dmaTab, 1);
if (status == DMAN3_SOK )
{
h = dmaTab.handle;
ACPY3_activate(h);
Log_print1(Diags_USER1,"ACPY3_activate(0x%x)",h);
}
else
{
Log_prin12(Diags_USER1,"ERROR in ACPY3_activate(0x%x[%d])",h);
eError = OMX_ErrorInsufficientResources;
goto EXIT;
}
The code compiles successfully, and I see on the log that the structures are initialized without a problem. However, when I try to copy a segment of memory, the application stalls at ACPY3_start(). How can I debug this interface? Is there any more necessary steps to add DMA3 to my OMX component ?
Thanks,
Danillo