Hello,
I'm trying to use DMAN3 and ACPY3 to perform DMA transfers in the DSP. I've followed the VIDENC_COPY example but my code hangs when ACPY3_activate is called. With CE_DEBUG=3, I also noticed I did not see any output from the DMAN3_init() or ACPY3_init(). Just to verify I had debugging/trace turned on, I added DMAN3_init() and ACPY3_init() to my algorithms _alloc() call, and I did see the calls now to the "init"s in the CE_DEBUG trace. This did not change the resulting hang in the ACPY3_activate() call.
I have assumed that DMAN3_init() and ACPY3_init() gets called by Codec Engine when I call CERuntime_init(), is that correct? Does anyone have an idea why I don't see the calls to DMAN3_init() and ACPY3_init() in my CE_DEBUG trace? Or more importantly, does anyone know why this hang is occurring?
Below is my configuration of the server and I've attached my CE_DEBUG trace.
xdc.useModule("ti.sdo.fc.global.Settings").profile = "debug";
xdc.loadPackage("ti.sdo.fc.dman3").profile = "debug_trace";
xdc.loadPackage("ti.sdo.fc.acpy3").profile = "debug_trace";
/* establish dependency on the ALG package */
xdc.loadPackage("ti.sdo.fc.utils.api");
var DMAN3 = xdc.useModule('ti.sdo.fc.dman3.DMAN3');
var ACPY3 = xdc.useModule('ti.sdo.fc.acpy3.ACPY3');
DMAN3.heapInternal = "IRAM"; /* L1DHEAP is an internal segment */
DMAN3.heapExternal = "DDRALGHEAP";
DMAN3.idma3Internal = false;
DMAN3.scratchAllocFxn = "DSKT2_allocScratch";
DMAN3.scratchFreeFxn = "DSKT2_freeScratch";
DMAN3.paRamBaseIndex = 80; // 1st EDMA3 PaRAM set available for DMAN3
DMAN3.numQdmaChannels = 8; // number of device's QDMA channels to use
DMAN3.qdmaChannels = [0,1,2,3,4,5,6,7]; // choice of QDMA channels to use
DMAN3.numPaRamEntries = 48; // number of PaRAM sets exclusively used by DMAN
DMAN3.numPaRamGroup[0] = 48; // number of PaRAM sets for scratch group 0
DMAN3.numTccGroup[0] = 32; // number of TCCs assigned to scratch group 0
DMAN3.tccAllocationMaskL = 0; // which TCCs 0..31 for DMAN3
DMAN3.tccAllocationMaskH = 0xffffffff; // which TCCs 32..63 for DMAN3