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

Reply via email to