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

Reply via email to