Hi Chris,
Thanks for the update. Actually I hadn't tried it on the hardware. Also, I am on CCS v3.2. AFAIK an upgrade to CCS 3.3 is not a freebie? Thanks, Ben From: Ring, Chris [mailto:[EMAIL PROTECTED] Sent: 09 November 2007 22:48 To: Ring, Chris; Ben White; [email protected] Subject: RE: ACPY3 problems with ACPY3_2D1D - DM6446 Sim Just as I clicked send, I got a followup from my team... an upgrade to CCS 3.3.56 fixed this on our side - making this feel even more like a simulation bug. Perhaps you can try the same and let us know if that solves the issue? Chris ________________________________ From: Ring, Chris Sent: Friday, November 09, 2007 4:46 PM To: 'Ben White'; [email protected] Subject: RE: ACPY3 problems with ACPY3_2D1D - DM6446 Sim Can you reproduce this in hardware? We were able to reproduce it on the simulator, but not on hardware - and we're wondering if we should file this as a simulator bug. Chris ________________________________ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Ben White Sent: Wednesday, November 07, 2007 12:12 PM To: [email protected] Subject: ACPY3 problems with ACPY3_2D1D - DM6446 Sim Hi, This may not be the right place for this question, but I have exhausted other options! I am using ACPY3 to do a 2D-1D DMA transfer from DDR to L1DSRAM. It is for a UYVY D1 -> greyscale QCIF resize algorithm. I want to extract the Y bytes from a line of the image at a time and write them into L1DSRAM with DMA. So I have set my transfer up as follows: ACPY3_Params dmaParams; dmaParams.transferType = ACPY3_2D1D; dmaParams.srcAddr = pContext->ippSrcImage.pBytes; dmaParams.dstAddr = pContext->pScratchBuf_0; dmaParams.elementSize = 1; dmaParams.numElements = 720; //720 Y values in a line dmaParams.numFrames = 1; dmaParams.srcElementIndex = 2; dmaParams.dstElementIndex = 1; dmaParams.srcFrameIndex = 0; dmaParams.dstFrameIndex = 0; dmaParams.waitId = 0; ACPY3_activate( pContext->dmaHandle_0 ); ACPY3_configure( pContext->dmaHandle_0, &dmaParams, 0 ); // Reset busy flag ((IDMA3_Obj *)pContext->dmaHandle_0)->transferPending = FALSE; // Start the transfer ACPY3_start( pContext->dmaHandle_0 ); The problem is that the ACPY3_wait function (not shown) hangs for all values of numElements > 16. My DMA channels are set up as follows: Uns ALGO_dmaGetChannels( IALG_Handle handle, IDMA3_ChannelRec dmaTab[] ) { ALGO_Obj *pObj = (ALGO_Obj *) handle; dmaTab[0].handle = pObj->pContext->dmaHandle_0; dmaTab[0].numTransfers = 1; dmaTab[0].numWaits = 1; dmaTab[0].priority = IDMA3_PRIORITY_HIGH; dmaTab[0].persistent = TRUE; dmaTab[0].protocol = &ACPY3_PROTOCOL; return 1; } And my RTSC configuration for DMAN3 is: var DMAN3 = xdc.useModule('ti.sdo.fc.dman3.DMAN3'); DMAN3.heapInternal = "L1DHEAP"; DMAN3.heapExternal = "DDR"; DMAN3.qdmaPaRamBase = 0x01C04000 DMAN3.maxPaRamEntries = 128; DMAN3.paRamBaseIndex = 96; DMAN3.numPaRamEntries = 32; DMAN3.maxQdmaChannels = 8; DMAN3.numQdmaChannels = 8; DMAN3.qdmaChannels = [0,1,2,3,4,5,6,7]; DMAN3.numTccGroup[0] = 8; DMAN3.numPaRamGroup[0] = 32; DMAN3.tccAllocationMaskH = 0xffffffff; DMAN3.tccAllocationMaskL = 0x00000000; DMAN3.debug = true; All of my buffers are allocated on a 64-byte (L1D Cache line length) boundary. I am using the DM6446 cycle accurate simulator in CCS v3.2. I just can't figure out why it works for values of numElements <=16, but fails for those above. Thanks! Ben
_______________________________________________ Davinci-linux-open-source mailing list [email protected] http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source
