This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

66AK2H14: EDMA performance of 66AK2H14 and C6678

Part Number: 66AK2H14
Other Parts Discussed in Thread: SYSBIOS

Hi TI,

Do you have any benchmarking of EDMA between C6678 DSP and 66AK2H DSP?

I am using CSL EDMA example from processor SDK to evaluate EDMA on C6678 and 66AK2H (for both I am using evaluation board). My test result shows that C6678 DSP has shorter EDMA transfer time if both are running at 1GHz clock. Is it expected? And may I know th reason why.

I aslo check the troughtput performance guild (SPRABK5A1 and SPRABK5B), they show that:

For C66x:

For Keystone 2:

So for TC0, if they two DSP has same clock, which is 1GHz, they will have same theoretical max throughput at 10667 MBPS, but C66x has higher efficiency at 98% compare to 93% of Keystone 2. So can I say that if the two DSP has same clock, 66AK2H have slower EDMA compare to C6678?

Thanks.

  • Hi,

    SPRABK5A1 and SPRABK5B are the latest Keystone I and II bench-marking documents. They are tested and published on different time frame, there is no further investigation why the efficiency is 97% vs 93%. I looked at the EDMA TC0 and TC1 for both C6678 and 66AK2H14, they all are the same FIFOSIZE, Bandwidth, DBS and DSTREGDEPTH. The EDMA IP are also the same.

    Noticed that Theoretical Max throughput is higher in K2H, and all tests use 2 EDMA channels in parallel. Maybe need another channel for K2H to achieve smaller efficiency. Another direction is to look at the SOC architecture, in the datasheet System Interconnect Chapter. Those TeraNet 3_a/b/c connection path are also different between EDMA CC0 TC0/1 master port, MSMC and L2 corepac, they have impact but can't exactly quantify the efficiency.

    Regards, Eric  

  • Hi Eric,

    So for the other question regarding my test reuslt:

    "I am using CSL EDMA example from processor SDK to evaluate EDMA on C6678 and 66AK2H (for both I am using evaluation board). My test result shows that C6678 DSP has shorter EDMA transfer time if both are running at 1GHz clock. Is it expected? And may I know th reason why."

    Is it expected, or any setting could result this?

    Thanks.

  • Hi,

    "I am using CSL EDMA example from processor SDK to evaluate EDMA on C6678 and 66AK2H (for both I am using evaluation board). My test result shows that C6678 DSP has shorter EDMA transfer time if both are running at 1GHz clock. Is it expected? And may I know the reason why===========>

    You need to explain what is the EDMA source address and destination address, is only one transfer in place or multiple in parallel? What EDMA CC and TC used? Are they the same DBS and FIFO size? If you make the transfer inside the corePac, e.g L2 to L2, do you see that C6678 is faster than K2H? How big is the difference?

    Regards, Eric

  • Hi Eric,

    I use the ping-pong example from CSL package. the data is between L2 / SHRAM / DDR3B memory, the size of the data is 4kB (1024 DW). The test is using EDMA0, with different DMA/QDMA channels. The average result is as below:

    Data transfer time (us)

    C6678

    66AK2H

    Different

    From DDR3B to SHMEM

    QDMA

    0.908

    1.75905

    0.85105

    DMA

    1.23090625

    1.936312

    0.70540575

    From SHMEM to DDR3B

    QDMA

    0.782875

    1.46764725

    0.68477225

    DMA

    1.22828175

    1.9707575

    0.74247575

    From SHMEM to L2

    QDMA

    1.161375

    1.177942

    0.016567

    DMA

    1.477

    1.7109305

    0.2339305

    From L2 to  SHMEM

    QDMA

    1.16125

    1.175792

    0.014542

    DMA

    1.477

    1.705882

    0.228882

    From DDR3B to  L2

    QDMA

    1.2885625

    1.71445175

    0.42588925

    DMA

    1.73096875

    2.20619375

    0.475225

    From  L2 to DDR3B

    QDMA

    1.28725

    1.55588225

    0.26863225

    DMA

    1.729

    1.83891375

    0.10991375

    The program is also atached.

    QdmaTest.c
    /**
     *   @file  edma_test.c
     *
     *   @brief   
     *      This is the Example test code for the EDMA CSL Functional layer.
     *
     *  \par
     *  NOTE:
     *      (C) Copyright 2009 Texas Instruments, Inc.
     * 
     *  Redistribution and use in source and binary forms, with or without 
     *  modification, are permitted provided that the following conditions 
     *  are met:
     *
     *    Redistributions of source code must retain the above copyright 
     *    notice, this list of conditions and the following disclaimer.
     *
     *    Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the 
     *    documentation and/or other materials provided with the   
     *    distribution.
     *
     *    Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
     *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
     *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
     *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
     *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
     *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
     *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
     *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     *
    */
    
    #include <stdio.h>
    #include <c6x.h> 
    
    #include <ti/csl/csl_edma3.h>
    #include <ti/csl/csl_edma3Aux.h>
    #include <ti/csl/csl_cacheAux.h>
    
    #include "Generic.h"
    
    
    /**********************************************************************
     ******************************* Extern *******************************
     **********************************************************************/
    
    /**********************************************************************
     ************************** Global Variables **************************
     **********************************************************************/
    
    /* Global Variables which are used to dump the TPCC register overlay in the 
     * debugger... */
    CSL_TpccRegs*  gEDMACC0Regs  = (CSL_TpccRegs*)CSL_EDMACC_0_REGS;
    CSL_TpccRegs*  gEDMACC1Regs  = (CSL_TpccRegs*)CSL_EDMACC_1_REGS;
    CSL_TpccRegs*  gEDMACC2Regs  = (CSL_TpccRegs*)CSL_EDMACC_2_REGS;
    
    /* Global Buffers (Source and Destination) for PING-PONG */
    Uint8 srcBuff1[512];
    Uint8 srcBuff2[512];
    Uint8 dstBuff1[512];
    Uint8 dstBuff2[512];
    
    #pragma DATA_SECTION(srcBuff1,		".my_SDRAM")
    #pragma DATA_SECTION(srcBuff2,		".my_SDRAM")
    #pragma DATA_SECTION(dstBuff1,		".my_ShRAM")
    #pragma DATA_SECTION(dstBuff2,		".my_ShRAM")
    
    /**********************************************************************
     ************************ EDMA TEST FUNCTIONS *************************
     **********************************************************************/
    
    /**
     *  @b Description
     *  @n  
     *      This is utility function used by the EDMA example to verify the 
     *      Data transfer. 
     *
     *  @retval
     *      Success -   TRUE
     *  @retval
     *      Error -   FALSE
     */
    static Bool Verify_Transfer (Uint16 aCnt, Uint16 bCnt, Uint16 cCnt,
    							Uint16 srcBIdx, Uint16 dstBIdx, Uint16 srcCIdx, Uint16 dstCIdx,
    							Uint8 *srcBuff, Uint8 *dstBuff, Bool abSync)
    {
        Uint32      loopIndex1, loopIndex2, loopIndex3;
        Uint8*      srcArrayPtr = (Uint8*)srcBuff;
        Uint8*      dstArrayPtr = (Uint8*)dstBuff;
        Uint8*      srcFramePtr = (Uint8*)srcBuff;
        Uint8*      dstFramePtr = (Uint8*)dstBuff;
        Uint16      key;
    
        /* Invalidate the cache before verification */
        /* Disable Interrupts */
        key = _disable_interrupts();
        CACHE_invL1d	((void *) srcBuff, aCnt, CACHE_WAIT);
        CACHE_invL2		((void *) srcBuff, aCnt, CACHE_WAIT);
        CACHE_invL1d	((void *) dstBuff, aCnt, CACHE_WAIT);
        CACHE_invL2		((void *) dstBuff, aCnt, CACHE_WAIT);
        _mfence();
        /* Re-enable Interrupts. */
        _restore_interrupts(key);
    
        for (loopIndex1 = 0; loopIndex1 < cCnt; loopIndex1++)
    	{
            for (loopIndex2 = 0; loopIndex2 < bCnt; loopIndex2++)
    		{
                for (loopIndex3 = 0; loopIndex3 < aCnt; loopIndex3++)
    			{
                    if (srcArrayPtr[loopIndex3] != dstArrayPtr[loopIndex3])
                        return FALSE;
    			}
                srcArrayPtr = srcArrayPtr + srcBIdx;
                dstArrayPtr = dstArrayPtr + dstBIdx;
            }
    
            if (abSync)
    		{
                srcFramePtr = srcFramePtr + srcCIdx;
                srcArrayPtr = srcFramePtr;
                dstFramePtr = dstFramePtr + dstCIdx;
                dstArrayPtr = dstFramePtr;
            }
            else
    		{   
                srcFramePtr = srcArrayPtr + srcCIdx - srcBIdx;
                srcArrayPtr = srcFramePtr;
                dstFramePtr = dstArrayPtr + dstCIdx - dstBIdx;
                dstArrayPtr = dstFramePtr;      
            }       
        }
    
        return TRUE;
    }
    
    /**
     *  @b Description
     *  @n  
     *      This is the example routine which perform EDMA ping pong buffer transfer
     *      using a QDMA Channel.
     *      It implements following steps:-
     *          - Initializes and Opens the EDMA module
     *          - Sets up the Module and gets the module setup values
     *          - Enables the DMA and QDMA regions
     *          - Opens the specified QDMA channel 'channelNum'
     *          - PING uses PARAM Entry 1
     *          - PONG uses PARAM Entry 2
     *          - Configures the PARAM Blocks.
     *          - Enables the channel 
     *          - Initiates the QDMA Transfer by setting the Trigger Word. 
     *          - Poll on the IPR bit
     *          - Clear the pending bit
     *          - Compares the transfered data
     *          - Closes EDMA module
     *
     *  @param[in]  instNum
     *      EDMA Instance Number on which the test is executed. 
     *  @param[in]  channelNum
     *      EDMA Channel Number on which the test is executed
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Failure -   <0
     */
    Int32 qdma_link_xfer_region (UInt8* pu8SrcAddr, UInt8* pu8DesAddr, UInt32 u32LenInByte, Int32 instNum, UInt8 channelNum, Int32 regionNum)
    {
        CSL_Edma3Handle             hModule;
        CSL_Edma3Obj                edmaObj;
        CSL_Edma3ParamHandle        hParamPong, hParamPing;
        CSL_Edma3ChannelObj         chObj;
        CSL_Edma3CmdIntr            regionIntr;
        CSL_Edma3CmdDrae            regionAccess;
        CSL_Edma3ChannelHandle      hChannel;
        CSL_Edma3ParamSetup         myParamSetup;
        CSL_Edma3Context            context;
        CSL_Edma3ChannelAttr        chAttr;
        CSL_Edma3CmdQrae            qraeSetup;
        CSL_Status                  status;
    
    	// For timing measurement
    	UInt32 u32SetupTimeCnt, u32TransTimeCnt, u32CleanupTimeCnt;
    	UInt64 u64TimeA, u64TimeB, u64TimeC, u64TimeD;
    	double dSetupTimeUs, dTransTimeUs, dCleanupTimeUs;
    
    	UInt32 u32Freq = platform_get_frequency();
    
        /* Start the EDMA PING-PONG test over the SHADOW Region. */
        printf ("Testing EDMA(%d) Ping-Pong Test Region %d for QDMA Channel %d", instNum, regionNum, channelNum);
    
        /* Module initialization */
        if (CSL_edma3Init(&context) != CSL_SOK) 
        {
            printf ("\nError: EDMA module initialization failed\n");   
            return -1;
        }
    
    	UInt32 u32Len1 = u32LenInByte / 2;
    	UInt32 u32Len2 = u32LenInByte - u32Len1;
    
    	UInt8 *srcBuff1 = pu8SrcAddr;
    	UInt8 *srcBuff2 = pu8SrcAddr + u32Len1;
    	UInt8 *dstBuff1 = pu8DesAddr;
    	UInt8 *dstBuff2 = pu8DesAddr + u32Len1;
    
    	u64TimeA = _itoll(TSCH, TSCL);
    
        /* Module level open */
        hModule = CSL_edma3Open (&edmaObj, instNum, NULL, &status);
        if ((hModule == NULL) || (status != CSL_SOK)) 
        {
            printf ("Error: EDMA module open failed\n");
            return -1;
        }
    
        /* Is this for GLOBAL or SHADOW Region */
        if (regionNum != CSL_EDMA3_REGION_GLOBAL)
        {
            /* Shadow Region: Enable DRAE enable(Bits 0-15) it. */
            regionAccess.region = regionNum;
            regionAccess.drae   = 0xFFFF;   
            regionAccess.draeh  = 0x0000;
            if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_DMAREGION_ENABLE, &regionAccess) != CSL_SOK) 
            {
                 printf ("\nError: EDMA region enable command failed\n");
                 return -1;
            }
    
            /* Enable access for all QDMA channels in the SHADOW Region. */
            qraeSetup.region = regionNum;
            qraeSetup.qrae   = 0xFF;
            if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_QDMAREGION_ENABLE, &qraeSetup) != CSL_SOK) 
            {
                 printf ("\nError: EDMA QDMA region enable command failed\n");
                 return -1;
            }
        }
    
        /* QDMA Channel Open */
        chAttr.regionNum = regionNum;
        chAttr.chaNum    = channelNum;
        hChannel = CSL_edma3ChannelOpen(&chObj, instNum, &chAttr, &status);   
        if ((hChannel == NULL) || (status != CSL_SOK)) 
        {
            printf ("\nError: EDMA channel open failed\n");    
            return -1;
        }
    
        /* Map QDMA Channel to the PING Param Block i.e. 1 */
        CSL_edma3HwChannelSetupParam (hChannel, 1);
    
        /* Setup the trigger word for the QDMA Channel. */
        CSL_edma3HwChannelSetupTriggerWord(hChannel, 7);
    
        /* PING Parameter Entry Handle */
        hParamPing = CSL_edma3GetParamHandle(hChannel, 1, &status);
        if (hParamPing == NULL) 
        {
            printf ("\nError: EDMA get handle for param entry 1 failed\n");    
            return -1;
        }
    
        /* PONG Parameter Entry Handle */
        hParamPong = CSL_edma3GetParamHandle(hChannel, 2, &status);
        if (hParamPong == NULL)
        {
            printf ("\nError: EDMA get handle for param entry 2 failed\n");    
            return -1;
        }
    
        /* Setup param entry */                                     
        myParamSetup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS, \
                                                 CSL_EDMA3_TCCH_DIS, \
                                                 CSL_EDMA3_ITCINT_DIS, \
                                                 CSL_EDMA3_TCINT_DIS,\
                                                 0,CSL_EDMA3_TCC_NORMAL,\
                                                 CSL_EDMA3_FIFOWIDTH_NONE, \
                                                 CSL_EDMA3_STATIC_DIS, \
                                                 CSL_EDMA3_SYNC_A, \
                                                 CSL_EDMA3_ADDRMODE_INCR, \
                                                 CSL_EDMA3_ADDRMODE_INCR);
        myParamSetup.srcDstBidx = CSL_EDMA3_BIDX_MAKE(1,1);     
        myParamSetup.linkBcntrld= CSL_EDMA3_LINKBCNTRLD_MAKE(hParamPong,0);     
        myParamSetup.srcDstCidx = CSL_EDMA3_CIDX_MAKE(0,1);
        myParamSetup.cCnt       = 1;
    
    	myParamSetup.srcAddr    = (UInt32) memory_addr_convert ((UInt32) srcBuff1);
    	myParamSetup.aCntbCnt   = CSL_EDMA3_CNT_MAKE(u32Len1,1);
    	myParamSetup.dstAddr    = (UInt32) memory_addr_convert ((UInt32) dstBuff1);
    
        /* Setup PING to operate with this PARAM Entry. */
        if (CSL_edma3ParamSetup(hParamPing, &myParamSetup) != CSL_SOK) 
        {
             printf ("\nError: EDMA param setup failed\n");
             return -1;
        }
    
        /* Setting up the next entry */
        myParamSetup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS, \
                                                 CSL_EDMA3_TCCH_DIS, \
                                                 CSL_EDMA3_ITCINT_DIS, \
                                                 CSL_EDMA3_TCINT_EN,\
                                                 1,CSL_EDMA3_TCC_NORMAL,\
                                                 CSL_EDMA3_FIFOWIDTH_NONE, \
                                                 CSL_EDMA3_STATIC_EN, \
                                                 CSL_EDMA3_SYNC_A, \
                                                 CSL_EDMA3_ADDRMODE_INCR, \
                                                 CSL_EDMA3_ADDRMODE_INCR);
    	myParamSetup.srcAddr = (UInt32) memory_addr_convert ((UInt32) srcBuff2);
    	myParamSetup.aCntbCnt   = CSL_EDMA3_CNT_MAKE(u32Len2,1);
    	myParamSetup.dstAddr = (Uint32) memory_addr_convert ((UInt32) dstBuff2);    
    
        /* Setup for the Pong buffer */
        if (CSL_edma3ParamSetup(hParamPong,&myParamSetup) != CSL_SOK) 
        {
             printf ("\nError: EDMA param setup failed\n");
             return -1;
        }
    
        /* Enable Channel */
        if (CSL_edma3HwChannelControl (hChannel,CSL_EDMA3_CMD_CHANNEL_ENABLE, NULL) != CSL_SOK) 
        {
             printf ("\nError: EDMA channel enable command failed\n");
             return -1;
        }
    
    	u64TimeB = _itoll(TSCH, TSCL);
    
        /* Trigger the word by writing to the trigger word... */    
        if (CSL_edma3ParamWriteWord(hParamPing,7,1) != CSL_SOK)
    	{
             printf ("\nError: EDMA param write word failed\n");
             return -1;
        }
    
        /* Poll IPR bit */ 
        regionIntr.region = regionNum;
        do
    	{
            CSL_edma3GetHwStatus(hModule, CSL_EDMA3_QUERY_INTRPEND, &regionIntr);
        }
    	while (!(regionIntr.intr & 0x2));
    
        /* Clear pending interrupt */
        if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTRPEND_CLEAR, &regionIntr) != CSL_SOK) 
        {
             printf ("\nError: EDMA clear interrupt pend command failed\n");
             return -1;
        }
    
    	u64TimeC = _itoll(TSCH, TSCL);
        
        /* Disable the channel */
        CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_DISABLE, NULL);
    
        /* Close channel */
        if (CSL_edma3ChannelClose(hChannel) != CSL_SOK) 
        {
            printf("\nError: EDMA channel close failed\n");
            return -1;
        }
     
        /* Close EDMA module */
        if (CSL_edma3Close(hModule) != CSL_SOK) 
        {
            printf("\nError: EDMA module close failed\n");
            return -1;
        }
    
    	u64TimeD = _itoll(TSCH, TSCL);
    
        /* Check transfer by comparing the source and destination buffers */
        if(Verify_Transfer(u32Len1, 1, 1, 0, 0, 0, 0, srcBuff1, dstBuff1,TRUE) == FALSE)
        {
            printf ("\nError: Verification (Source1/Destination1) Failed\n");
            return -1;
        }
        if(Verify_Transfer(u32Len2, 1, 1, 0, 0, 0, 0, srcBuff2, dstBuff2,TRUE) == FALSE)
        {
            printf ("Error: Verification (Source2/Destination2) Failed\n");
            return -1;        
        }
    
    	u32SetupTimeCnt		= (UInt32) (u64TimeB - u64TimeA);
    	u32TransTimeCnt		= (UInt32) (u64TimeC - u64TimeB);
    	u32CleanupTimeCnt	= (UInt32) (u64TimeD - u64TimeC);
    
    	dSetupTimeUs		= (u32SetupTimeCnt		* 1.0) / (u32Freq * 1.0);
    	dTransTimeUs		= (u32TransTimeCnt		* 1.0) / (u32Freq * 1.0);
    	dCleanupTimeUs		= (u32CleanupTimeCnt	* 1.0) / (u32Freq * 1.0);
    
    	printf (" - Passed - Time Cnt: %d - %d - %d ; us: %f - %f - %f\n",
    											u32SetupTimeCnt, u32TransTimeCnt, u32CleanupTimeCnt,
    											dSetupTimeUs, dTransTimeUs, dCleanupTimeUs);
        /* Test Passed. */
        return 0;
    }
    
    /**
     *  @b Description
     *  @n  
     *      This is the example routine which perform EDMA ping pong buffer transfer
     *      where channel is open in the global region.
     *      It implements following steps
     *          - Intializes and Opens the EDMA Module .
     *          - Sets up the interrupt for the EDMA global region.
     *          - Sets up the EDMA module using the API csl_edma3Hwsetup () 
     *          - Enables the EDMA global region
     *          - Opens the channel 'channelNum' get the param handle for PARAM 1, 2
     *          - PING is mapped to PARAM Entry 1
     *          - PONG is mapped to PARAM Entry 2
     *          - PING is Linked with PONG...
     *          - Enables the EDMA interrupt using CSL_EDMA3_CMD_INTR_ENABLE. 
     *          - Enables Interrupt (Bit 0-2) for the global region interrupts
     *          - Manually triggers the DMA channel 'channelNum'(This should be PING)
     *          - Polls on IPR bit 0 (Since TCC for PING is 0)
     *          - Clear the pending bit
     *          - Manually triggers the channel 'channelNum' (This should be PONG)
     *          - Polls on IPR bit 1 (Since TCC for PONG is 1)
     *          - Clears the pending bit
     *          - Compares the data in the destination buffer is proper or not.
     *          - Closes the EDMA module and channel.
     *
     *  @param[in]  instNum
     *      EDMA Instance Number on which the test is executed. 
     *  @param[in]  channelNum
     *      EDMA Channel Number on which the test is executed
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Failure -   <0
     */
    Int32 edma_ping_pong_xfer_gbl_region (UInt8* pu8SrcAddr, UInt8* pu8DesAddr, UInt32 u32LenInByte, Int32 instNum, UInt8 channelNum)
    {    
        CSL_Edma3Handle                 hModule;
        CSL_Edma3Obj                    edmaObj;
        CSL_Edma3ParamHandle            hParamPing;
        CSL_Edma3ParamHandle            hParamPong;
        CSL_Edma3ChannelObj             chObj;
        CSL_Edma3CmdIntr                regionIntr;
        CSL_Edma3ChannelHandle          hChannel;
        CSL_Edma3ParamSetup             myParamSetup;
        CSL_Edma3Context                context;
        CSL_Edma3ChannelAttr            chAttr;
        CSL_Status                      status;
    //	Uint32                          loopIndex;
    
        /* Start the EDMA PING-PONG test over the Global Region. */
        printf ("Testing EDMA(%d) Ping-Pong Test Global Region for Channel %d", instNum, channelNum);
    
    	// For timing measurement
    	UInt32 u32SetupTimeCnt, u32TransTimeCnt, u32CleanupTimeCnt;
    	UInt64 u64TimeA, u64TimeB, u64TimeC, u64TimeD;
    	double dSetupTimeUs, dTransTimeUs, dCleanupTimeUs;
    
    	UInt32 u32Freq = platform_get_frequency();
    
        /* Initialize data  */
    	UInt32 u32Len1 = u32LenInByte / 2;
    	UInt32 u32Len2 = u32LenInByte - u32Len1;
    
    	UInt8 *srcBuff1 = pu8SrcAddr;
    	UInt8 *srcBuff2 = pu8SrcAddr + u32Len1;
    	UInt8 *dstBuff1 = pu8DesAddr;
    	UInt8 *dstBuff2 = pu8DesAddr + u32Len1;
     
        /* Module initialization */
        if (CSL_edma3Init(&context) != CSL_SOK) 
        {
            printf ("Error: EDMA module initialization failed\n");
            return -1;
        }
    
    	u64TimeA = _itoll(TSCH, TSCL);
    
        /* Open the EDMA Module using the provided instance number */
        hModule = CSL_edma3Open(&edmaObj, instNum, NULL, &status);
        if ( (hModule == NULL) || (status != CSL_SOK))
        {
            printf ("Error: EDMA module open failed\n");
            return -1;
        }
    
    	/* Channel open */
    	chAttr.regionNum = CSL_EDMA3_REGION_GLOBAL;
    	chAttr.chaNum    = channelNum;
    	hChannel = CSL_edma3ChannelOpen(&chObj, instNum, &chAttr, &status);
    	if ((hChannel == NULL) || (status != CSL_SOK))
    	{
    		printf ("Error: Unable to open EDMA Channel:%d\n", channelNum);
    		return -1;
    	}
    
    	if(!instNum)
    	{
    		/* For first EDMA instance there are only 2 TCs and 2 event queues 
             * Modify the channel default queue setup from 0 to 1 
             */
             if (CSL_edma3HwChannelSetupQue(hChannel,CSL_EDMA3_QUE_1) != CSL_SOK)
            {
                printf ("Error: EDMA channel setup queue failed\n");    
                return -1;
            }
        }
        else
        {
            /* For EDMA instance 1 and 2 maximum of 4 TCs and 4 event queues are supported
             * Change Channel Default queue setup from 0 to 3  
             */
            if (CSL_edma3HwChannelSetupQue(hChannel,CSL_EDMA3_QUE_3) != CSL_SOK)
            {
                printf ("Error: EDMA channel setup queue failed\n");    
                return -1;
            }
        }
    
        /* Map the DMA Channel to PARAM Block 2. */
        CSL_edma3MapDMAChannelToParamBlock (hModule, channelNum, 2);
    
        /* Obtain a handle to parameter set 2 */
        hParamPing = CSL_edma3GetParamHandle(hChannel, 2, &status);
        if (hParamPing == NULL) 
        {
            printf ("Error: EDMA Get Parameter Entry failed for 2.\n");
            return -1;
        }
    
        /* Obtain a handle to parameter set 1 */
        hParamPong = CSL_edma3GetParamHandle(hChannel, 1, &status);
        if (hParamPong == NULL) 
        {
            printf ("Error: EDMA Get Parameter Entry failed for 1.\n");
            return -1;
        }
    
        /* Setup the parameter entry parameters (Ping buffer) */
        myParamSetup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS, \
                                                 CSL_EDMA3_TCCH_DIS, \
                                                 CSL_EDMA3_ITCINT_DIS, \
                                                 CSL_EDMA3_TCINT_EN, \
                                                 0, CSL_EDMA3_TCC_NORMAL,\
                                                 CSL_EDMA3_FIFOWIDTH_NONE, \
                                                 CSL_EDMA3_STATIC_DIS, \
                                                 CSL_EDMA3_SYNC_A, \
                                                 CSL_EDMA3_ADDRMODE_INCR, \
                                                 CSL_EDMA3_ADDRMODE_INCR );
        myParamSetup.srcDstBidx = CSL_EDMA3_BIDX_MAKE(1,1);
        myParamSetup.linkBcntrld= CSL_EDMA3_LINKBCNTRLD_MAKE(hParamPong,0);
        myParamSetup.srcDstCidx = CSL_EDMA3_CIDX_MAKE(0,1);
        myParamSetup.cCnt = 1;
    
    	myParamSetup.srcAddr    = (UInt32) memory_addr_convert ((UInt32) srcBuff1);
    	myParamSetup.aCntbCnt   = CSL_EDMA3_CNT_MAKE(u32Len1,1);
    	myParamSetup.dstAddr    = (UInt32) memory_addr_convert ((UInt32) dstBuff1);
    
        /* Ping setup */
        if (CSL_edma3ParamSetup(hParamPing,&myParamSetup) != CSL_SOK)
        {
            printf ("Error: EDMA Parameter Entry Setup failed\n");
            return -1;
        }
    
        /* Pong setup */    
        myParamSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_MAKE(hParamPing,0);
        myParamSetup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS, \
                                                 CSL_EDMA3_TCCH_DIS, \
                                                 CSL_EDMA3_ITCINT_DIS, \
                                                 CSL_EDMA3_TCINT_EN,\
                                                 1, CSL_EDMA3_TCC_NORMAL,\
                                                 CSL_EDMA3_FIFOWIDTH_NONE, \
                                                 CSL_EDMA3_STATIC_EN, \
                                                 CSL_EDMA3_SYNC_A, \
                                                 CSL_EDMA3_ADDRMODE_INCR, \
                                                 CSL_EDMA3_ADDRMODE_INCR );
    	myParamSetup.srcAddr    = (UInt32) memory_addr_convert ((UInt32) srcBuff2);
    	myParamSetup.aCntbCnt   = CSL_EDMA3_CNT_MAKE(u32Len2, 1);
    	myParamSetup.dstAddr    = (UInt32) memory_addr_convert ((UInt32) dstBuff2);
    
        if (CSL_edma3ParamSetup(hParamPong,&myParamSetup) != CSL_SOK)
        {
            printf ("Error: EDMA Parameter Entry Setup failed\n");
            return -1;
        }
    
        /* Interrupt enable (Bits 0-1)  for the global region interrupts */
        regionIntr.region = CSL_EDMA3_REGION_GLOBAL;
        regionIntr.intr   = 0x3;
        regionIntr.intrh  = 0x0000;
        CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTR_ENABLE,&regionIntr);
    
    	u64TimeB = _itoll(TSCH, TSCL);
    
        /* Trigger channel */
        CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL);
    
        regionIntr.region = CSL_EDMA3_REGION_GLOBAL;
        regionIntr.intr   = 0;
        regionIntr.intrh  = 0;
    
        /* Poll on IPR bit 0 */
        do
    	{
    		CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIntr);
        }
    	while (!(regionIntr.intr & 0x1));
    
        /* Clear the pending bit */
        CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTRPEND_CLEAR,&regionIntr);
    
        /* Trigger Channel */
        CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL);
    
        /* Poll on IPR bit 2 */
        do
    	{
            CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIntr);
        }
    	while (!(regionIntr.intr & 0x2));
    
    	u64TimeC = _itoll(TSCH, TSCL);
    
        /* Close channel */
        if (CSL_edma3ChannelClose(hChannel) != CSL_SOK) 
        {
            printf("Error: EDMA Channel Close failed\n");
            return -1;
        }
    
        /* Close EDMA module */
        if (CSL_edma3Close(hModule) != CSL_SOK) 
        {
            printf("Error: EDMA Module Close failed\n");
            return -1;
        }
    
    	u64TimeD = _itoll(TSCH, TSCL);
    
        /* Check transfer by comparing the source and destination buffers */
        if(Verify_Transfer(u32Len1, 1, 1, 0, 0, 0, 0, srcBuff1, dstBuff1,TRUE) == FALSE)
        {
            printf ("\nError: Verification (Source1/Destination1) Failed\n");
            return -1;
        }
        if(Verify_Transfer(u32Len2, 1, 1, 0, 0, 0, 0, srcBuff2, dstBuff2,TRUE) == FALSE)
        {
            printf ("Error: Verification (Source2/Destination2) Failed\n");
            return -1;        
        }
    
    	u32SetupTimeCnt		= (UInt32) (u64TimeB - u64TimeA);
    	u32TransTimeCnt		= (UInt32) (u64TimeC - u64TimeB);
    	u32CleanupTimeCnt	= (UInt32) (u64TimeD - u64TimeC);
    
    	dSetupTimeUs		= (u32SetupTimeCnt		* 1.0) / (u32Freq * 1.0);
    	dTransTimeUs		= (u32TransTimeCnt		* 1.0) / (u32Freq * 1.0);
    	dCleanupTimeUs		= (u32CleanupTimeCnt	* 1.0) / (u32Freq * 1.0);
    
    	printf (" - Passed - Time Cnt: %d - %d - %d ; us: %f - %f - %f\n",
    											u32SetupTimeCnt, u32TransTimeCnt, u32CleanupTimeCnt,
    											dSetupTimeUs, dTransTimeUs, dCleanupTimeUs);
    
        /* The test passed. */
        return 0;
    }
     
    /**
     *  @b Description
     *  @n  
     *      This is the example routine which performs the EDMA ping pong buffer transfer in
     *      the specified SHADOW Region.
     *
     *      It implements following steps
     *          - Intializes and Opens the EDMA Module .
     *          - Sets up the interrupt for the EDMA SHADOW region.
     *          - Opens the channel 'channelNum' get the param handle for PARAM 1, 2
     *          - PING is mapped to PARAM Entry 1
     *          - PONG is mapped to PARAM Entry 2
     *          - PING is Linked with PONG...
     *          - Enables the EDMA interrupts for the specific SHADOW Region. 
     *          - Manually triggers the DMA channel 'channelNum'(This should be PING)
     *          - Polls on IPR bit 0 (Since TCC for PING is 0)
     *          - Clear the pending bit
     *          - Manually triggers the channel 'channelNum' (This should be PONG)
     *          - Polls on IPR bit 1 (Since TCC for PONG is 1)
     *          - Clears the pending bit
     *          - Compares the data in the destination buffer is proper or not.
     *          - Closes the EDMA module and channel.
     *
     *  @param[in]  instNum
     *      EDMA Instance Number on which the test is executed. 
     *  @param[in]  channelNum
     *      EDMA Channel Number on which the test is executed
     *  @param[in]  regionNum
     *      Shadown Region Number on which the test is executed.
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Failure -   <0
     */
    Int32 edma_ping_pong_xfer_region (Int32 instNum, Uint8 channelNum, Int32 regionNum)
    {
        CSL_Edma3Handle             hModule;
        CSL_Edma3Obj                edmaObj;
        CSL_Edma3ParamHandle        hParamPing;
        CSL_Edma3ParamHandle        hParamPong;
        CSL_Edma3ChannelObj         chObj;
        CSL_Edma3CmdIntr            regionIntr;
        CSL_Edma3CmdDrae            regionAccess;
        CSL_Edma3ChannelHandle      hChannel;
        CSL_Edma3ParamSetup         myParamSetup;
        CSL_Edma3Context            context;
        CSL_Edma3ChannelAttr        chAttr;
        CSL_Status                  status;
        Uint32                      loopIndex;
        
        /* Start the EDMA PING-PONG test over the Shadow Region. */
        printf ("Debug: Testing EDMA(%d) Ping-Pong Test Shadow-Region %d for Channel %d...\n", instNum, regionNum, channelNum);
     
        /* Module Initialization */
        if (CSL_edma3Init(&context) != CSL_SOK) 
        {
            printf ("Error: EDMA module initialization failed\n");
            return -1;
        }
        
        /* Module level open */
        hModule = CSL_edma3Open(&edmaObj, instNum, NULL, &status);
        if ((hModule == NULL) || (status != CSL_SOK))
        {
            printf ("Error: EDMA module open failed\n");
            return -1;
        }
    
        /* Determine the number of channels we need to enable. Is this Instance 0? */
        if (instNum == 0)
        {
            /* YES. DRAE enable(Bits 0-15) for the shadow region; since there are 16 channels. */
            regionAccess.region = regionNum;
            regionAccess.drae   = 0xFFFF;
            regionAccess.draeh  = 0x0;
            if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_DMAREGION_ENABLE, &regionAccess) != CSL_SOK)
            {
                printf ("Error: EDMA region enable command failed\n");
                return -1;
            }
        }
        else
        {
            /* YES. DRAE enable(Bits 0-63) for the shadow region; since there are 64 channels. */
            regionAccess.region = regionNum;
            regionAccess.drae   = 0xFFFFFFFF;
            regionAccess.draeh  = 0xFFFFFFFF;
            if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_DMAREGION_ENABLE, &regionAccess) != CSL_SOK)
            {
                printf ("Error: EDMA region enable command failed\n");
                return -1;
            }            
        }
     
        /* Interrupt enable (Bits 0-11)  for the shadow region 5 */
        regionIntr.region = regionNum;
        regionIntr.intr   = 0x0FFF;   
        regionIntr.intrh  = 0x0000;
        if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTR_ENABLE, &regionIntr) != CSL_SOK)
        {
            printf ("Error: EDMA interrupts enable command failed\n");
            return -1;
        }
    
        /* Open the channel in context of the specified region number. */
        chAttr.regionNum = regionNum;
        chAttr.chaNum    = channelNum;
        hChannel = CSL_edma3ChannelOpen(&chObj, instNum, &chAttr, &status);   
        if ((hChannel == NULL) || (status != CSL_SOK))
        {
            printf ("Error: EDMA channel open failed\n");
            return -1;
        }
    
        /* Map the DMA Channel to the appropriate PARAM Block. We start with PING 
         * which is located at PARAM Block 2. */
        if (CSL_edma3HwChannelSetupParam(hChannel, 2) != CSL_SOK) 
        {
            printf ("Error: EDMA channel setup param failed\n");    
            return -1;
        }    
        
        /* Obtain a handle to parameter set 2 */
        hParamPing = CSL_edma3GetParamHandle(hChannel, 2, &status);
        if (hParamPing == NULL) {
            printf ("Error: EDMA get param handle for param entry 2 failed\n");    
            return -1;
        }
        
        /* Obtain a handle to parameter set 1 */
        hParamPong = CSL_edma3GetParamHandle(hChannel, 1, &status);
        if (hParamPong == NULL) {
            printf ("Error: EDMA get param handle for param entry 1 failed\n");        
            return -1;
        }
    
        /* Setup the first param set (Ping buffer) */
        myParamSetup.option = CSL_EDMA3_OPT_MAKE( CSL_EDMA3_ITCCH_DIS, \
                                                  CSL_EDMA3_TCCH_DIS, \
                                                  CSL_EDMA3_ITCINT_DIS, \
                                                  CSL_EDMA3_TCINT_EN,\
                                                  0, CSL_EDMA3_TCC_NORMAL,\
                                                  CSL_EDMA3_FIFOWIDTH_NONE, \
                                                  CSL_EDMA3_STATIC_DIS, \
                                                  CSL_EDMA3_SYNC_A, \
                                                  CSL_EDMA3_ADDRMODE_INCR, \
                                                  CSL_EDMA3_ADDRMODE_INCR
                                                 );
        myParamSetup.srcAddr    = (Uint32)srcBuff1;         
        myParamSetup.aCntbCnt   = CSL_EDMA3_CNT_MAKE(512,1);       
        myParamSetup.dstAddr    = (Uint32)dstBuff1;        
        myParamSetup.srcDstBidx = CSL_EDMA3_BIDX_MAKE(1,1);     
        myParamSetup.linkBcntrld= CSL_EDMA3_LINKBCNTRLD_MAKE(hParamPong,0);     
        myParamSetup.srcDstCidx = CSL_EDMA3_CIDX_MAKE(0,1);     
        myParamSetup.cCnt = 1;
    
        /* Setup the Ping Entry which loaded after the Pong entry gets exhausted */
        if (CSL_edma3ParamSetup(hParamPing,&myParamSetup) != CSL_SOK) 
        {
            printf("Error: EDMA ping parameter entry setup is failed\n");
            return -1;
        }
        
        /* Setup the Pong Entry which loaded after the Ping entry gets exhausted */
        myParamSetup.option = CSL_EDMA3_OPT_MAKE( CSL_EDMA3_ITCCH_DIS, \
                                                  CSL_EDMA3_TCCH_DIS, \
                                                  CSL_EDMA3_ITCINT_DIS, \
                                                  CSL_EDMA3_TCINT_EN, \
                                                  1,CSL_EDMA3_TCC_NORMAL, \
                                                  CSL_EDMA3_FIFOWIDTH_NONE, \
                                                  TRUE,CSL_EDMA3_SYNC_A, \
                                                  CSL_EDMA3_ADDRMODE_INCR, \
                                                  CSL_EDMA3_ADDRMODE_INCR
                                                 );           
        myParamSetup.srcAddr = (Uint32)srcBuff2;
        myParamSetup.dstAddr = (Uint32)dstBuff2;    
        myParamSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_MAKE(hParamPing,0);     
        if (CSL_edma3ParamSetup(hParamPong,&myParamSetup) != CSL_SOK) 
        {
            printf("Error: EDMA pong parameter entry setup is failed\n");
            return -1;
        }
        
        /* Enable channel */
        if (CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_ENABLE, NULL) != CSL_SOK) 
        {
            printf("Error: EDMA channel enable command is failed\n");
            return -1;
        }
        
        /* Initialize data */
        for (loopIndex = 0; loopIndex < 512; loopIndex++) {
            srcBuff1[loopIndex] = loopIndex;
            srcBuff2[loopIndex] = loopIndex;
            dstBuff1[loopIndex] = 0;
            dstBuff2[loopIndex] = 0;        
        }
        
        /* Manually trigger the channel */
        if (CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL) != CSL_SOK) 
        {
            printf("Error: EDMA channel set command is failed\n");
            return -1;
        }
    
        regionIntr.region = regionNum;
        regionIntr.intr = 0;
        regionIntr.intrh = 0;
        
        do {
            /* Poll on interrupt bit 0 */
            CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIntr);
        } while (!(regionIntr.intr & 0x1));
    
        /* Clear interrupt bit 0 */
        if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTRPEND_CLEAR, &regionIntr) != CSL_SOK) 
        {
            printf("Error: EDMA clear interrupt bit 0 command is failed\n");
            return -1;
        }
        
        /* Mapping channel 0 to event queue 1 */
        if (CSL_edma3HwChannelSetupQue(hChannel,CSL_EDMA3_QUE_1) != CSL_SOK) 
        {
            printf("Error: EDMA channel setup queue is failed\n");
            return -1;
        }
    
        /* Manually trigger the channel */
        if (CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL) != CSL_SOK) 
        {
            printf("Error: EDMA channel set command is failed\n");
            return -1;
        }
        
        regionIntr.region = regionNum;
        regionIntr.intr = 0;
        regionIntr.intrh = 0;
        
        /* Poll on interrupt pend bit 1 */
        do {   
            CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIntr);
        } while (!(regionIntr.intr & 0x2));
    
        /* Clear interrupt bit 1 */
        if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTRPEND_CLEAR, &regionIntr) != CSL_SOK) 
        {
            printf("Error: EDMA clear interrupt bit 1 command is failed\n");
            return -1;
        }
        
        /* Verify the data has been transferred correctly. */
        if(Verify_Transfer(512, 1, 1, 0, 0, 0, 0, srcBuff1, dstBuff1,TRUE) == FALSE)
        {
            printf ("Error: Verification (Source1/Destination1) Failed\n");
            return -1;
        }
        if(Verify_Transfer(512, 1, 1, 0, 0, 0, 0, srcBuff2, dstBuff2,TRUE) == FALSE)
        {
            printf ("Error: Verification (Source2/Destination2) Failed\n");
            return -1;
        }
    
        /* Close channel */
        if (CSL_edma3ChannelClose(hChannel) != CSL_SOK) 
        {
            printf("Error: EDMA channel close failed\n");
            return -1;
        }
        
        /* Close EDMA module */
        if (CSL_edma3Close(hModule) != CSL_SOK) 
        {
            printf("Error: EDMA module close failed\n");
            return -1;
        }
    
        /* Test Passed. */
        return 0;
    }
    
    void MemTest_Qdma (UInt32 *grgu32Src, UInt32 *grgu32Dest, UInt32 u32LenDW)
    {
    	Uint8  channelNum;
    	Int32  regionNum = CSL_EDMA3_REGION_GLOBAL;
    	Uint8  instNum = 0;
    	UInt32 ii;
    	for (ii = 0; ii < u32LenDW; ii++)
    	{
    		grgu32Dest[ii] = 0;
    		grgu32Src[ii] = ii;
    	}
    
    	printf ("\nTest QDMA: Source Addr: 0x%08X - Destination Addr: 0x%08X - Len %d\n", (UInt32) grgu32Src, (UInt32) grgu32Dest, (u32LenDW * 4));
    
    	for  (channelNum = 64; channelNum < 72; channelNum++)
    	{
    		if (qdma_link_xfer_region((UInt8*) grgu32Src, (UInt8*) grgu32Dest, (u32LenDW * 4), instNum, channelNum, regionNum) < 0)
    		{
    			printf ("Error: Testing EDMA(%d) Ping-Pong Test (Shadow) Region %d for QDMA Channel %d FAILED\n", instNum, regionNum, channelNum);
    			return;
    		}
    	}
    }
    
    void MemTest_Edma (UInt32 *grgu32Src, UInt32 *grgu32Dest, UInt32 u32LenDW)
    {
        Uint8  channelNum;
    //	Int32  regionNum = CSL_EDMA3_REGION_GLOBAL;
        Uint8  instNum = 0;
        UInt32 ii;
        for (ii = 0; ii < u32LenDW; ii++)
        {
            grgu32Dest[ii] = 0;
            grgu32Src[ii] = ii;
        }
    
        printf ("\nTest EDMA: Source Addr: 0x%08X - Destination Addr: 0x%08X - Len %d\n", (UInt32) grgu32Src, (UInt32) grgu32Dest, (u32LenDW * 4));
    	for (channelNum = 0; channelNum < 16; channelNum++)
    	 {
    		 if (edma_ping_pong_xfer_gbl_region((UInt8*) grgu32Src, (UInt8*) grgu32Dest, (DATA_LEN * 4), instNum, channelNum) < 0)
    		 {
    			 printf ("Error: Testing EDMA(%d) Ping-Pong Test (Global) Region for Channel %d FAILED\n",
    					 instNum, channelNum);
    			 return;
    		 }
    	 }
    }
    
    void MemTest_Main (void)
    {
    	UInt32 uiFreq = platform_get_frequency();
        printf("\nDSP Freq: %d\n", uiFreq);
    
    	/* Test QDMA */
    	MemTest_Qdma ((UInt32*) grgu32ShMemData,			(UInt32*)grgu32ExtMemData, DATA_LEN);
    	MemTest_Qdma ((UInt32*) grgu32ExtMemData,			(UInt32*)grgu32ShMemData, DATA_LEN);
    
    	MemTest_Qdma ((UInt32*) grgu32ShMemData,		    (UInt32*)grgu32L2MemDataDest, DATA_LEN);
    	MemTest_Qdma ((UInt32*) grgu32ExtMemData,			(UInt32*)grgu32L2MemDataDest, DATA_LEN);
    
    	MemTest_Qdma ((UInt32*) grgu32L2MemDataDest,  	    (UInt32*)grgu32ShMemData, DATA_LEN);
    	MemTest_Qdma ((UInt32*) grgu32L2MemDataDest,	    (UInt32*)grgu32ExtMemData, DATA_LEN);
    
    	/* Test EDMA3 */
    	MemTest_Edma ((UInt32*) grgu32ShMemData,		    (UInt32*)grgu32ExtMemData, DATA_LEN);
    	MemTest_Edma ((UInt32*) grgu32ExtMemData,			(UInt32*)grgu32ShMemData, DATA_LEN);
    
    	MemTest_Edma ((UInt32*) grgu32ShMemData,		    (UInt32*)grgu32L2MemDataDest, DATA_LEN);
    	MemTest_Edma ((UInt32*) grgu32ExtMemData,			(UInt32*)grgu32L2MemDataDest, DATA_LEN);
    
    	MemTest_Edma ((UInt32*) grgu32L2MemDataDest,	    (UInt32*)grgu32ShMemData, DATA_LEN);
    	MemTest_Edma ((UInt32*) grgu32L2MemDataDest,	    (UInt32*)grgu32ExtMemData, DATA_LEN);
    
    	return;
    }
    
    // /**
     // *  @b Description
     // *  @n  
     // *      Entry point for the test code.
     // *
     // *  @retval
     // *      Not Applicable.
     // */
    // void main (void)
    // {
        // Uint8  channelNum;
        // Int32  regionNum;
        // Uint8  instNum = 0;
        
        // printf ("**************************************************\n");
        // printf ("******************* EDMA Testing *****************\n");
        // printf ("**************************************************\n");
    
        // /* EDMA Instance 0: Supports only 16 DMA Channels. */
        // for (channelNum = 0; channelNum < 16; channelNum++)
        // {
            // if (edma_ping_pong_xfer_gbl_region(instNum, channelNum) < 0)
            // {
                // printf ("Error: Testing EDMA(%d) Ping-Pong Test (Global) Region for Channel %d FAILED\n", instNum, channelNum);
                // return;
            // }
            // printf ("Debug: Testing EDMA(%d) Ping-Pong Test (Global) Region for Channel %d Passed\n", instNum, channelNum);
        // }    
    
        // /* EDMA Shadow Testing: This is run for all the SHADOW Regions from 0-7 
         // * and on all supported DMA Channels. */
        // for (regionNum = CSL_EDMA3_REGION_0; regionNum <= CSL_EDMA3_REGION_7; regionNum++)
        // {
            // for (channelNum = 0; channelNum < 16; channelNum++)
            // {
                // if (edma_ping_pong_xfer_region(instNum, channelNum, regionNum) < 0)
                // {
                    // printf ("Error: Testing EDMA(%d) Ping-Pong Test Shadow-Region %d for Channel %d FAILED\n", 
                            // instNum, regionNum, channelNum);
                    // return;
                // }
                // printf ("Debug: Testing EDMA(%d) Ping-Pong Test Shadow-Region %d for Channel %d Passed\n", 
                        // instNum, regionNum, channelNum);
            // }
        // }
    
        // /* QDMA Testing: This is run for all SHADOW Regions from 0-7 and on 
         // * all supported QDMA Channels; there are 8 supported. Remember QDMA Channels start after the
         // * DMA Channels which are 16 for Instance 0. */
        // for (regionNum = CSL_EDMA3_REGION_GLOBAL; regionNum <= CSL_EDMA3_REGION_7; regionNum++)
        // {
            // for (channelNum = 16; channelNum < 24; channelNum++)
            // {
                // if (qdma_link_xfer_region(instNum, channelNum, regionNum) < 0)
                // {
                    // printf ("Error: Testing EDMA(%d) Ping-Pong Test (Shadow) Region %d for QDMA Channel %d FAILED\n",
                            // instNum, regionNum, channelNum);
                    // return;
                // }
                // printf ("Debug: Testing EDMA(%d) Ping-Pong Test (Shadow) Region %d for QDMA Channel %d Passed\n",
                        // instNum, regionNum, channelNum);
            // }
        // }
    
        // /* Run the test for EDMA Instance 1 and 2; both have the same limits. */
        // for (instNum = 1; instNum < 3; instNum++)
        // {
            // /* EDMA Instance 1 and 2: Supports 64 DMA Channels. */
            // for (channelNum = 0; channelNum < 64; channelNum++)
            // {
                // if (edma_ping_pong_xfer_gbl_region(instNum, channelNum) < 0)
                // {
                    // printf ("Error: Testing EDMA(%d) Ping-Pong Test (Global) Region for Channel %d FAILED\n", 
                            // instNum, channelNum);
                    // return;
                // }
                // printf ("Debug: Testing EDMA(%d) Ping-Pong Test (Global) Region for Channel %d Passed\n", 
                        // instNum, channelNum);
            // }
    
            // /* EDMA Shadow Testing: This is run for all the SHADOW Regions from 0-7 
             // * and on all supported DMA Channels. */
            // for (regionNum = CSL_EDMA3_REGION_0; regionNum <= CSL_EDMA3_REGION_7; regionNum++)
            // {
                // for (channelNum = 0; channelNum < 64; channelNum++)
                // {
                    // if (edma_ping_pong_xfer_region(instNum, channelNum, regionNum) < 0)
                    // {
                        // printf ("Error: Testing EDMA(%d) Ping-Pong Test Shadow-Region %d for Channel %d FAILED\n",
                                // instNum, regionNum, channelNum);
                        // return;
                    // }
                    // printf ("Debug: Testing EDMA(%d) Ping-Pong Test Shadow-Region %d for Channel %d Passed\n",
                            // instNum, regionNum, channelNum);
                // }
            // }
    
            // /* QDMA Testing: This is run for all SHADOW Regions from 0-7 and on 
             // * all supported QDMA Channels; there are 8 supported. Remember QDMA Channels start after the
             // * DMA Channels which are 64 for Instance 1 and 2 */
            // for (regionNum = CSL_EDMA3_REGION_GLOBAL; regionNum <= CSL_EDMA3_REGION_7; regionNum++)
            // {
                // for (channelNum = 64; channelNum < 72; channelNum++)
                // {
                    // if (qdma_link_xfer_region(instNum, channelNum, regionNum) < 0)
                    // {
                        // printf ("Error: Testing EDMA(%d) Ping-Pong Test (Shadow) Region %d for QDMA Channel %d FAILED\n",
                                // instNum, regionNum, channelNum);
                        // return;
                    // }
                    // printf ("Debug: Testing EDMA(%d) Ping-Pong Test (Shadow) Region %d for QDMA Channel %d Passed\n",
                            // instNum, regionNum, channelNum);
                // }
            // }
        // }
        
        // printf ("**************************************************\n");
        // printf ("************* EDMA Testing Successful ************\n");
        // printf ("**************************************************\n");
       
        // return;
    // }
    

    Thanks.

  • Hi,

    Thanks for providing the test numbers and code example. I will put it into a framework and run it to understand how you get those numbers. There is no DDR3B on C6678, do you mean DDR3A? Then for the K2H, there is DDR3A and DDR3B, what you tested exactly? From you test code I can't see the global address you defined, must be in a separate file.

    If I looked at the SHMEM (MSMC) to L2 transfer, the EDMA number still differs a lot (QDMA seems OK), I don't expect such big difference. I will run and look into it.

    Regards, Eric

  • Hi,

    I saw you used EDMA CC0, it has BUSWIDTH 32 and DBS 128. This is one of the best CC in all EDMA. This CC has 2 TCs, I saw you allocate all EDMA channels to TC1. This is not the good practice in real usage, it is better to allocate channels to alternating TCs. But in your test, it is OK given this is one channel followed by another channel test, without parallel transfer. TC0 and TC1 has the same property, use either should be OK.

    I tested your code with either TC0 or TC1 on K2H, the results are the same. K2H/C6678 has at least 16 DMA channels, I saw the results looping for 16 channels, and all the channels almost the same results.

    Your EDMA transfer data size is 1024/2=512x4 bytes, I wonder if this is for the test purpose or real usage case. Is that possible that you do much bigger transfer, e.g. 32768 bytes for bench-marking ?

    I modified your code to calculate the ping and pong results separately and also calculated the throughput. For big transfer (32768 bytes), the throughput is about 5000 MB/s, this is the number I expected. For smaller transfer (512x4 bytes), the throughput is about 2xxx MB/s, I am not sure about this number as we typically do big transfer.

    All my test is done on K2H, I set the CPU at 983MHz, approximately 1GHz. I don't have C6678 setup as I work remotely. I would like you to confirm:

    1) DDR3A or DDR3B, as there is no DDR3B in C6678

    2) If you can use much big transfer size for test? 

    Then we can refine my test example. Attached is my test code and log file.

    Regards, Eric 

    1488.testlog.txt
    Test EDMA: Source Addr: 0x0C000000 - Destination Addr: 0x80000000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1256 - 7327 - 6434 - 50; us: 1.256000 - 7.327000 - 6.434000 -0.050000 Throughput in MB/s 4472.226013 - 5092.943736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1234 - 6436 - 7319 - 51; us: 1.234000 - 6.436000 - 7.319000 -0.051000 Throughput in MB/s 5091.361094 - 4477.114360 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1234 - 6436 - 6434 - 51; us: 1.234000 - 6.436000 - 6.434000 -0.051000 Throughput in MB/s 5091.361094 - 5092.943736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1234 - 6436 - 7496 - 51; us: 1.234000 - 6.436000 - 7.496000 -0.051000 Throughput in MB/s 5091.361094 - 4371.398079 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1236 - 6436 - 7319 - 51; us: 1.236000 - 6.436000 - 7.319000 -0.051000 Throughput in MB/s 5091.361094 - 4477.114360 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1234 - 6436 - 6434 - 51; us: 1.234000 - 6.436000 - 6.434000 -0.051000 Throughput in MB/s 5091.361094 - 5092.943736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1235 - 6436 - 6434 - 51; us: 1.235000 - 6.436000 - 6.434000 -0.051000 Throughput in MB/s 5091.361094 - 5092.943736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1235 - 6436 - 7319 - 51; us: 1.235000 - 6.436000 - 7.319000 -0.051000 Throughput in MB/s 5091.361094 - 4477.114360 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1234 - 6436 - 6434 - 51; us: 1.234000 - 6.436000 - 6.434000 -0.051000 Throughput in MB/s 5091.361094 - 5092.943736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1236 - 6436 - 6434 - 51; us: 1.236000 - 6.436000 - 6.434000 -0.051000 Throughput in MB/s 5091.361094 - 5092.943736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1235 - 6436 - 6434 - 51; us: 1.235000 - 6.436000 - 6.434000 -0.051000 Throughput in MB/s 5091.361094 - 5092.943736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1236 - 6436 - 7319 - 51; us: 1.236000 - 6.436000 - 7.319000 -0.051000 Throughput in MB/s 5091.361094 - 4477.114360 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1235 - 6436 - 7319 - 51; us: 1.235000 - 6.436000 - 7.319000 -0.051000 Throughput in MB/s 5091.361094 - 4477.114360 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1236 - 6436 - 7319 - 51; us: 1.236000 - 6.436000 - 7.319000 -0.051000 Throughput in MB/s 5091.361094 - 4477.114360 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1234 - 6436 - 7496 - 51; us: 1.234000 - 6.436000 - 7.496000 -0.051000 Throughput in MB/s 5091.361094 - 4371.398079 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1236 - 7321 - 6434 - 51; us: 1.236000 - 7.321000 - 6.434000 -0.051000 Throughput in MB/s 4475.891272 - 5092.943736 
    
    Test EDMA: Source Addr: 0x80000000 - Destination Addr: 0x0C000000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0Error: Verification (Source2/Destination2) Failed
    Error: Testing EDMA(0) Ping-Pong Test (Global) Region for Channel 0 FAILED
    
    Test EDMA: Source Addr: 0x0C000000 - Destination Addr: 0x10840000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0Error: Verification (Source2/Destination2) Failed
    Error: Testing EDMA(0) Ping-Pong Test (Global) Region for Channel 0 FAILED
    
    Test EDMA: Source Addr: 0x80000000 - Destination Addr: 0x10840000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1255 - 6796 - 6836 - 57; us: 1.255000 - 6.796000 - 6.836000 -0.057000 Throughput in MB/s 4821.659800 - 4793.446460 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1234 - 6790 - 7673 - 52; us: 1.234000 - 6.790000 - 7.673000 -0.052000 Throughput in MB/s 4825.920471 - 4270.559103 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1234 - 7675 - 6788 - 52; us: 1.234000 - 7.675000 - 6.788000 -0.052000 Throughput in MB/s 4269.446254 - 4827.342369 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1235 - 6790 - 6788 - 52; us: 1.235000 - 6.790000 - 6.788000 -0.052000 Throughput in MB/s 4825.920471 - 4827.342369 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1236 - 7321 - 6788 - 52; us: 1.236000 - 7.321000 - 6.788000 -0.052000 Throughput in MB/s 4475.891272 - 4827.342369 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1235 - 6790 - 6788 - 52; us: 1.235000 - 6.790000 - 6.788000 -0.052000 Throughput in MB/s 4825.920471 - 4827.342369 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1235 - 7675 - 6788 - 52; us: 1.235000 - 7.675000 - 6.788000 -0.052000 Throughput in MB/s 4269.446254 - 4827.342369 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1235 - 6790 - 6788 - 52; us: 1.235000 - 6.790000 - 6.788000 -0.052000 Throughput in MB/s 4825.920471 - 4827.342369 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1235 - 6790 - 7865 - 52; us: 1.235000 - 6.790000 - 7.865000 -0.052000 Throughput in MB/s 4825.920471 - 4166.306421 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1235 - 7675 - 6788 - 52; us: 1.235000 - 7.675000 - 6.788000 -0.052000 Throughput in MB/s 4269.446254 - 4827.342369 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1235 - 6790 - 7721 - 52; us: 1.235000 - 6.790000 - 7.721000 -0.052000 Throughput in MB/s 4825.920471 - 4244.009843 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1236 - 6790 - 7850 - 52; us: 1.236000 - 6.790000 - 7.850000 -0.052000 Throughput in MB/s 4825.920471 - 4174.267516 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1236 - 6790 - 6788 - 52; us: 1.236000 - 6.790000 - 6.788000 -0.052000 Throughput in MB/s 4825.920471 - 4827.342369 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1235 - 6790 - 6788 - 52; us: 1.235000 - 6.790000 - 6.788000 -0.052000 Throughput in MB/s 4825.920471 - 4827.342369 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1234 - 6967 - 6788 - 52; us: 1.234000 - 6.967000 - 6.788000 -0.052000 Throughput in MB/s 4703.315631 - 4827.342369 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1236 - 6790 - 6788 - 52; us: 1.236000 - 6.790000 - 6.788000 -0.052000 Throughput in MB/s 4825.920471 - 4827.342369 
    
    Test EDMA: Source Addr: 0x10840000 - Destination Addr: 0x0C000000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1243 - 6613 - 6614 - 52; us: 1.243000 - 6.613000 - 6.614000 -0.052000 Throughput in MB/s 4955.088462 - 4954.339280 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1234 - 6613 - 6611 - 52; us: 1.234000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1234 - 6613 - 6611 - 52; us: 1.234000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1236 - 6613 - 6611 - 52; us: 1.236000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1236 - 6613 - 6611 - 52; us: 1.236000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1234 - 6613 - 6611 - 52; us: 1.234000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1236 - 6613 - 6611 - 52; us: 1.236000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    
    Test EDMA: Source Addr: 0x10840000 - Destination Addr: 0x80000000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1243 - 6613 - 6617 - 52; us: 1.243000 - 6.613000 - 6.617000 -0.052000 Throughput in MB/s 4955.088462 - 4952.093094 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1236 - 6613 - 6611 - 52; us: 1.236000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1236 - 6613 - 6611 - 52; us: 1.236000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1235 - 7321 - 6611 - 52; us: 1.235000 - 7.321000 - 6.611000 -0.052000 Throughput in MB/s 4475.891272 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1236 - 6613 - 6611 - 52; us: 1.236000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1234 - 6613 - 7496 - 52; us: 1.234000 - 6.613000 - 7.496000 -0.052000 Throughput in MB/s 4955.088462 - 4371.398079 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1235 - 6613 - 7496 - 52; us: 1.235000 - 6.613000 - 7.496000 -0.052000 Throughput in MB/s 4955.088462 - 4371.398079 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1235 - 6613 - 7496 - 52; us: 1.235000 - 6.613000 - 7.496000 -0.052000 Throughput in MB/s 4955.088462 - 4371.398079 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1235 - 7321 - 6611 - 52; us: 1.235000 - 7.321000 - 6.611000 -0.052000 Throughput in MB/s 4475.891272 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1234 - 6613 - 6611 - 52; us: 1.234000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1235 - 6613 - 6611 - 52; us: 1.235000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1236 - 6613 - 6611 - 52; us: 1.236000 - 6.613000 - 6.611000 -0.052000 Throughput in MB/s 4955.088462 - 4956.587506 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1235 - 6613 - 7496 - 52; us: 1.235000 - 6.613000 - 7.496000 -0.052000 Throughput in MB/s 4955.088462 - 4371.398079 
    
    Test EDMA: Source Addr: 0x0C000000 - Destination Addr: 0x80000000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1258 - 778 - 770 - 50; us: 1.258000 - 0.778000 - 0.770000 -0.050000 Throughput in MB/s 2632.390746 - 2659.740260 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1236 - 772 - 770 - 51; us: 1.236000 - 0.772000 - 0.770000 -0.051000 Throughput in MB/s 2652.849741 - 2659.740260 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1234 - 772 - 770 - 51; us: 1.234000 - 0.772000 - 0.770000 -0.051000 Throughput in MB/s 2652.849741 - 2659.740260 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1236 - 772 - 770 - 51; us: 1.236000 - 0.772000 - 0.770000 -0.051000 Throughput in MB/s 2652.849741 - 2659.740260 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1236 - 772 - 770 - 51; us: 1.236000 - 0.772000 - 0.770000 -0.051000 Throughput in MB/s 2652.849741 - 2659.740260 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1234 - 772 - 770 - 51; us: 1.234000 - 0.772000 - 0.770000 -0.051000 Throughput in MB/s 2652.849741 - 2659.740260 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1235 - 772 - 1301 - 51; us: 1.235000 - 0.772000 - 1.301000 -0.051000 Throughput in MB/s 2652.849741 - 1574.173713 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1236 - 772 - 770 - 51; us: 1.236000 - 0.772000 - 0.770000 -0.051000 Throughput in MB/s 2652.849741 - 2659.740260 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1236 - 772 - 593 - 51; us: 1.236000 - 0.772000 - 0.593000 -0.051000 Throughput in MB/s 2652.849741 - 3453.625632 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1234 - 1480 - 770 - 51; us: 1.234000 - 1.480000 - 0.770000 -0.051000 Throughput in MB/s 1383.783784 - 2659.740260 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1234 - 772 - 770 - 51; us: 1.234000 - 0.772000 - 0.770000 -0.051000 Throughput in MB/s 2652.849741 - 2659.740260 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1234 - 772 - 770 - 51; us: 1.234000 - 0.772000 - 0.770000 -0.051000 Throughput in MB/s 2652.849741 - 2659.740260 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1234 - 772 - 770 - 51; us: 1.234000 - 0.772000 - 0.770000 -0.051000 Throughput in MB/s 2652.849741 - 2659.740260 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1235 - 772 - 593 - 51; us: 1.235000 - 0.772000 - 0.593000 -0.051000 Throughput in MB/s 2652.849741 - 3453.625632 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1236 - 772 - 770 - 51; us: 1.236000 - 0.772000 - 0.770000 -0.051000 Throughput in MB/s 2652.849741 - 2659.740260 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1234 - 772 - 593 - 51; us: 1.234000 - 0.772000 - 0.593000 -0.051000 Throughput in MB/s 2652.849741 - 3453.625632 
    
    Test EDMA: Source Addr: 0x80000000 - Destination Addr: 0x0C000000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1242 - 949 - 947 - 51; us: 1.242000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1234 - 949 - 947 - 51; us: 1.234000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1236 - 949 - 947 - 51; us: 1.236000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1235 - 949 - 947 - 51; us: 1.235000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1234 - 949 - 947 - 51; us: 1.234000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1236 - 949 - 947 - 51; us: 1.236000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1235 - 949 - 947 - 51; us: 1.235000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1236 - 949 - 947 - 51; us: 1.236000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1236 - 949 - 947 - 51; us: 1.236000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1235 - 1657 - 947 - 51; us: 1.235000 - 1.657000 - 0.947000 -0.051000 Throughput in MB/s 1235.968618 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1235 - 949 - 947 - 51; us: 1.235000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1234 - 949 - 947 - 51; us: 1.234000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1234 - 949 - 947 - 51; us: 1.234000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1234 - 949 - 947 - 51; us: 1.234000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1235 - 949 - 947 - 51; us: 1.235000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1234 - 949 - 947 - 51; us: 1.234000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    
    Test EDMA: Source Addr: 0x0C000000 - Destination Addr: 0x10840000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1243 - 949 - 947 - 52; us: 1.243000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    
    Test EDMA: Source Addr: 0x80000000 - Destination Addr: 0x10840000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1241 - 955 - 947 - 51; us: 1.241000 - 0.955000 - 0.947000 -0.051000 Throughput in MB/s 2144.502618 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1236 - 949 - 953 - 52; us: 1.236000 - 0.949000 - 0.953000 -0.052000 Throughput in MB/s 2158.061117 - 2149.003148 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1235 - 1126 - 947 - 52; us: 1.235000 - 1.126000 - 0.947000 -0.052000 Throughput in MB/s 1818.827709 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1235 - 2014 - 947 - 52; us: 1.235000 - 2.014000 - 0.947000 -0.052000 Throughput in MB/s 1016.881827 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1236 - 1303 - 947 - 52; us: 1.236000 - 1.303000 - 0.947000 -0.052000 Throughput in MB/s 1571.757483 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1235 - 1126 - 947 - 52; us: 1.235000 - 1.126000 - 0.947000 -0.052000 Throughput in MB/s 1818.827709 - 2162.618796 
    
    Test EDMA: Source Addr: 0x10840000 - Destination Addr: 0x0C000000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1241 - 949 - 947 - 51; us: 1.241000 - 0.949000 - 0.947000 -0.051000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    
    Test EDMA: Source Addr: 0x10840000 - Destination Addr: 0x80000000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1243 - 949 - 947 - 52; us: 1.243000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1236 - 1480 - 947 - 52; us: 1.236000 - 1.480000 - 0.947000 -0.052000 Throughput in MB/s 1383.783784 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1236 - 949 - 947 - 52; us: 1.236000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1234 - 949 - 947 - 52; us: 1.234000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1235 - 949 - 947 - 52; us: 1.235000 - 0.949000 - 0.947000 -0.052000 Throughput in MB/s 2158.061117 - 2162.618796 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1234 - 949 - 1124 - 52; us: 1.234000 - 0.949000 - 1.124000 -0.052000 Throughput in MB/s 2158.061117 - 1822.064057 
    

    0028.QdmaTest.c
    /**
     *   @file  edma_test.c
     *
     *   @brief   
     *      This is the Example test code for the EDMA CSL Functional layer.
     *
     *  \par
     *  NOTE:
     *      (C) Copyright 2009 Texas Instruments, Inc.
     * 
     *  Redistribution and use in source and binary forms, with or without 
     *  modification, are permitted provided that the following conditions 
     *  are met:
     *
     *    Redistributions of source code must retain the above copyright 
     *    notice, this list of conditions and the following disclaimer.
     *
     *    Redistributions in binary form must reproduce the above copyright
     *    notice, this list of conditions and the following disclaimer in the 
     *    documentation and/or other materials provided with the   
     *    distribution.
     *
     *    Neither the name of Texas Instruments Incorporated nor the names of
     *    its contributors may be used to endorse or promote products derived
     *    from this software without specific prior written permission.
     *
     *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
     *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
     *  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     *  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 
     *  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
     *  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
     *  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     *  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     *  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
     *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
     *  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     *
    */
    
    #include <stdio.h>
    #include <c6x.h> 
    
    #include <ti/csl/csl_edma3.h>
    #include <ti/csl/csl_edma3Aux.h>
    #include <ti/csl/csl_cacheAux.h>
    
    //#include "Generic.h"
    #define grgu32ShMemData      0x0c000000
    #define grgu32ExtMemData     0x80000000
    #define grgu32L2MemDataDest  0x10840000
    
    
    #define DATA_LEN             0x400
    
    unsigned int memory_addr_convert(unsigned int address) {
        if (address < 0x00900000) {
            return (address&0xFFFFFF) | (1 << 28) | (DNUM << 24);
        } else {
            return address;
        }
    }
    
    /**********************************************************************
     ******************************* Extern *******************************
     **********************************************************************/
    
    /**********************************************************************
     ************************** Global Variables **************************
     **********************************************************************/
    
    /* Global Variables which are used to dump the TPCC register overlay in the 
     * debugger... */
    CSL_TpccRegs*  gEDMACC0Regs  = (CSL_TpccRegs*)CSL_EDMACC_0_REGS;
    CSL_TpccRegs*  gEDMACC1Regs  = (CSL_TpccRegs*)CSL_EDMACC_1_REGS;
    CSL_TpccRegs*  gEDMACC2Regs  = (CSL_TpccRegs*)CSL_EDMACC_2_REGS;
    
    /* Global Buffers (Source and Destination) for PING-PONG */
    Uint8 *srcBuff1;
    Uint8 *srcBuff2;
    Uint8 *dstBuff1;
    Uint8 *dstBuff2;
    
    #if 0
    #pragma DATA_SECTION(srcBuff1,		".my_SDRAM")
    #pragma DATA_SECTION(srcBuff2,		".my_SDRAM")
    #pragma DATA_SECTION(dstBuff1,		".my_ShRAM")
    #pragma DATA_SECTION(dstBuff2,		".my_ShRAM")
    #endif
    
    /**********************************************************************
     ************************ EDMA TEST FUNCTIONS *************************
     **********************************************************************/
    
    /**
     *  @b Description
     *  @n  
     *      This is utility function used by the EDMA example to verify the 
     *      Data transfer. 
     *
     *  @retval
     *      Success -   TRUE
     *  @retval
     *      Error -   FALSE
     */
    static Bool Verify_Transfer (Uint16 aCnt, Uint16 bCnt, Uint16 cCnt,
    							Uint16 srcBIdx, Uint16 dstBIdx, Uint16 srcCIdx, Uint16 dstCIdx,
    							Uint8 *srcBuff, Uint8 *dstBuff, Bool abSync)
    {
        Uint32      loopIndex1, loopIndex2, loopIndex3;
        Uint8*      srcArrayPtr = (Uint8*)srcBuff;
        Uint8*      dstArrayPtr = (Uint8*)dstBuff;
        Uint8*      srcFramePtr = (Uint8*)srcBuff;
        Uint8*      dstFramePtr = (Uint8*)dstBuff;
        Uint16      key;
    
        /* Invalidate the cache before verification */
        /* Disable Interrupts */
        key = _disable_interrupts();
        CACHE_invL1d	((void *) srcBuff, aCnt, CACHE_WAIT);
        CACHE_invL2		((void *) srcBuff, aCnt, CACHE_WAIT);
        CACHE_invL1d	((void *) dstBuff, aCnt, CACHE_WAIT);
        CACHE_invL2		((void *) dstBuff, aCnt, CACHE_WAIT);
        _mfence();
        /* Re-enable Interrupts. */
        _restore_interrupts(key);
    
        for (loopIndex1 = 0; loopIndex1 < cCnt; loopIndex1++)
    	{
            for (loopIndex2 = 0; loopIndex2 < bCnt; loopIndex2++)
    		{
                for (loopIndex3 = 0; loopIndex3 < aCnt; loopIndex3++)
    			{
                    if (srcArrayPtr[loopIndex3] != dstArrayPtr[loopIndex3])
                        return FALSE;
    			}
                srcArrayPtr = srcArrayPtr + srcBIdx;
                dstArrayPtr = dstArrayPtr + dstBIdx;
            }
    
            if (abSync)
    		{
                srcFramePtr = srcFramePtr + srcCIdx;
                srcArrayPtr = srcFramePtr;
                dstFramePtr = dstFramePtr + dstCIdx;
                dstArrayPtr = dstFramePtr;
            }
            else
    		{   
                srcFramePtr = srcArrayPtr + srcCIdx - srcBIdx;
                srcArrayPtr = srcFramePtr;
                dstFramePtr = dstArrayPtr + dstCIdx - dstBIdx;
                dstArrayPtr = dstFramePtr;      
            }       
        }
    
        return TRUE;
    }
    
    /**
     *  @b Description
     *  @n  
     *      This is the example routine which perform EDMA ping pong buffer transfer
     *      using a QDMA Channel.
     *      It implements following steps:-
     *          - Initializes and Opens the EDMA module
     *          - Sets up the Module and gets the module setup values
     *          - Enables the DMA and QDMA regions
     *          - Opens the specified QDMA channel 'channelNum'
     *          - PING uses PARAM Entry 1
     *          - PONG uses PARAM Entry 2
     *          - Configures the PARAM Blocks.
     *          - Enables the channel 
     *          - Initiates the QDMA Transfer by setting the Trigger Word. 
     *          - Poll on the IPR bit
     *          - Clear the pending bit
     *          - Compares the transfered data
     *          - Closes EDMA module
     *
     *  @param[in]  instNum
     *      EDMA Instance Number on which the test is executed. 
     *  @param[in]  channelNum
     *      EDMA Channel Number on which the test is executed
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Failure -   <0
     */
    Int32 qdma_link_xfer_region (UInt8* pu8SrcAddr, UInt8* pu8DesAddr, UInt32 u32LenInByte, Int32 instNum, UInt8 channelNum, Int32 regionNum)
    {
        CSL_Edma3Handle             hModule;
        CSL_Edma3Obj                edmaObj;
        CSL_Edma3ParamHandle        hParamPong, hParamPing;
        CSL_Edma3ChannelObj         chObj;
        CSL_Edma3CmdIntr            regionIntr;
        CSL_Edma3CmdDrae            regionAccess;
        CSL_Edma3ChannelHandle      hChannel;
        CSL_Edma3ParamSetup         myParamSetup;
        CSL_Edma3Context            context;
        CSL_Edma3ChannelAttr        chAttr;
        CSL_Edma3CmdQrae            qraeSetup;
        CSL_Status                  status;
    
    	// For timing measurement
    	UInt32 u32SetupTimeCnt, u32TransTimeCnt, u32CleanupTimeCnt;
    	UInt64 u64TimeA, u64TimeB, u64TimeC, u64TimeD;
    	double dSetupTimeUs, dTransTimeUs, dCleanupTimeUs;
    
    	UInt32 u32Freq = 1000;
    
        /* Start the EDMA PING-PONG test over the SHADOW Region. */
        printf ("Testing EDMA(%d) Ping-Pong Test Region %d for QDMA Channel %d", instNum, regionNum, channelNum);
    
        /* Module initialization */
        if (CSL_edma3Init(&context) != CSL_SOK) 
        {
            printf ("\nError: EDMA module initialization failed\n");   
            return -1;
        }
    
    	UInt32 u32Len1 = u32LenInByte / 2;
    	UInt32 u32Len2 = u32LenInByte - u32Len1;
    
    	UInt8 *srcBuff1 = pu8SrcAddr;
    	UInt8 *srcBuff2 = pu8SrcAddr + u32Len1;
    	UInt8 *dstBuff1 = pu8DesAddr;
    	UInt8 *dstBuff2 = pu8DesAddr + u32Len1;
    
    	u64TimeA = _itoll(TSCH, TSCL);
    
        /* Module level open */
        hModule = CSL_edma3Open (&edmaObj, instNum, NULL, &status);
        if ((hModule == NULL) || (status != CSL_SOK)) 
        {
            printf ("Error: EDMA module open failed\n");
            return -1;
        }
    
        /* Is this for GLOBAL or SHADOW Region */
        if (regionNum != CSL_EDMA3_REGION_GLOBAL)
        {
            /* Shadow Region: Enable DRAE enable(Bits 0-15) it. */
            regionAccess.region = regionNum;
            regionAccess.drae   = 0xFFFF;   
            regionAccess.draeh  = 0x0000;
            if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_DMAREGION_ENABLE, &regionAccess) != CSL_SOK) 
            {
                 printf ("\nError: EDMA region enable command failed\n");
                 return -1;
            }
    
            /* Enable access for all QDMA channels in the SHADOW Region. */
            qraeSetup.region = regionNum;
            qraeSetup.qrae   = 0xFF;
            if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_QDMAREGION_ENABLE, &qraeSetup) != CSL_SOK) 
            {
                 printf ("\nError: EDMA QDMA region enable command failed\n");
                 return -1;
            }
        }
    
        /* QDMA Channel Open */
        chAttr.regionNum = regionNum;
        chAttr.chaNum    = channelNum;
        hChannel = CSL_edma3ChannelOpen(&chObj, instNum, &chAttr, &status);   
        if ((hChannel == NULL) || (status != CSL_SOK)) 
        {
            printf ("\nError: EDMA channel open failed\n");    
            return -1;
        }
    
        /* Map QDMA Channel to the PING Param Block i.e. 1 */
        CSL_edma3HwChannelSetupParam (hChannel, 1);
    
        /* Setup the trigger word for the QDMA Channel. */
        CSL_edma3HwChannelSetupTriggerWord(hChannel, 7);
    
        /* PING Parameter Entry Handle */
        hParamPing = CSL_edma3GetParamHandle(hChannel, 1, &status);
        if (hParamPing == NULL) 
        {
            printf ("\nError: EDMA get handle for param entry 1 failed\n");    
            return -1;
        }
    
        /* PONG Parameter Entry Handle */
        hParamPong = CSL_edma3GetParamHandle(hChannel, 2, &status);
        if (hParamPong == NULL)
        {
            printf ("\nError: EDMA get handle for param entry 2 failed\n");    
            return -1;
        }
    
        /* Setup param entry */                                     
        myParamSetup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS, \
                                                 CSL_EDMA3_TCCH_DIS, \
                                                 CSL_EDMA3_ITCINT_DIS, \
                                                 CSL_EDMA3_TCINT_DIS,\
                                                 0,CSL_EDMA3_TCC_NORMAL,\
                                                 CSL_EDMA3_FIFOWIDTH_NONE, \
                                                 CSL_EDMA3_STATIC_DIS, \
                                                 CSL_EDMA3_SYNC_A, \
                                                 CSL_EDMA3_ADDRMODE_INCR, \
                                                 CSL_EDMA3_ADDRMODE_INCR);
        myParamSetup.srcDstBidx = CSL_EDMA3_BIDX_MAKE(1,1);     
        myParamSetup.linkBcntrld= CSL_EDMA3_LINKBCNTRLD_MAKE(hParamPong,0);     
        myParamSetup.srcDstCidx = CSL_EDMA3_CIDX_MAKE(0,1);
        myParamSetup.cCnt       = 1;
    
    	myParamSetup.srcAddr    = (UInt32) memory_addr_convert ((UInt32) srcBuff1);
    	myParamSetup.aCntbCnt   = CSL_EDMA3_CNT_MAKE(u32Len1,1);
    	myParamSetup.dstAddr    = (UInt32) memory_addr_convert ((UInt32) dstBuff1);
    
        /* Setup PING to operate with this PARAM Entry. */
        if (CSL_edma3ParamSetup(hParamPing, &myParamSetup) != CSL_SOK) 
        {
             printf ("\nError: EDMA param setup failed\n");
             return -1;
        }
    
        /* Setting up the next entry */
        myParamSetup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS, \
                                                 CSL_EDMA3_TCCH_DIS, \
                                                 CSL_EDMA3_ITCINT_DIS, \
                                                 CSL_EDMA3_TCINT_EN,\
                                                 1,CSL_EDMA3_TCC_NORMAL,\
                                                 CSL_EDMA3_FIFOWIDTH_NONE, \
                                                 CSL_EDMA3_STATIC_EN, \
                                                 CSL_EDMA3_SYNC_A, \
                                                 CSL_EDMA3_ADDRMODE_INCR, \
                                                 CSL_EDMA3_ADDRMODE_INCR);
    	myParamSetup.srcAddr = (UInt32) memory_addr_convert ((UInt32) srcBuff2);
    	myParamSetup.aCntbCnt   = CSL_EDMA3_CNT_MAKE(u32Len2,1);
    	myParamSetup.dstAddr = (Uint32) memory_addr_convert ((UInt32) dstBuff2);    
    
        /* Setup for the Pong buffer */
        if (CSL_edma3ParamSetup(hParamPong,&myParamSetup) != CSL_SOK) 
        {
             printf ("\nError: EDMA param setup failed\n");
             return -1;
        }
    
        /* Enable Channel */
        if (CSL_edma3HwChannelControl (hChannel,CSL_EDMA3_CMD_CHANNEL_ENABLE, NULL) != CSL_SOK) 
        {
             printf ("\nError: EDMA channel enable command failed\n");
             return -1;
        }
    
    	u64TimeB = _itoll(TSCH, TSCL);
    
        /* Trigger the word by writing to the trigger word... */    
        if (CSL_edma3ParamWriteWord(hParamPing,7,1) != CSL_SOK)
    	{
             printf ("\nError: EDMA param write word failed\n");
             return -1;
        }
    
        /* Poll IPR bit */ 
        regionIntr.region = regionNum;
        do
    	{
            CSL_edma3GetHwStatus(hModule, CSL_EDMA3_QUERY_INTRPEND, &regionIntr);
        }
    	while (!(regionIntr.intr & 0x2));
    
        /* Clear pending interrupt */
        if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTRPEND_CLEAR, &regionIntr) != CSL_SOK) 
        {
             printf ("\nError: EDMA clear interrupt pend command failed\n");
             return -1;
        }
    
    	u64TimeC = _itoll(TSCH, TSCL);
        
        /* Disable the channel */
        CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_DISABLE, NULL);
    
        /* Close channel */
        if (CSL_edma3ChannelClose(hChannel) != CSL_SOK) 
        {
            printf("\nError: EDMA channel close failed\n");
            return -1;
        }
     
        /* Close EDMA module */
        if (CSL_edma3Close(hModule) != CSL_SOK) 
        {
            printf("\nError: EDMA module close failed\n");
            return -1;
        }
    
    	u64TimeD = _itoll(TSCH, TSCL);
    
        /* Check transfer by comparing the source and destination buffers */
        if(Verify_Transfer(u32Len1, 1, 1, 0, 0, 0, 0, srcBuff1, dstBuff1,TRUE) == FALSE)
        {
            printf ("\nError: Verification (Source1/Destination1) Failed\n");
            return -1;
        }
        if(Verify_Transfer(u32Len2, 1, 1, 0, 0, 0, 0, srcBuff2, dstBuff2,TRUE) == FALSE)
        {
            printf ("Error: Verification (Source2/Destination2) Failed\n");
            return -1;        
        }
    
    	u32SetupTimeCnt		= (UInt32) (u64TimeB - u64TimeA);
    	u32TransTimeCnt		= (UInt32) (u64TimeC - u64TimeB);
    	u32CleanupTimeCnt	= (UInt32) (u64TimeD - u64TimeC);
    
    	dSetupTimeUs		= (u32SetupTimeCnt		* 1.0) / (u32Freq * 1.0);
    	dTransTimeUs		= (u32TransTimeCnt		* 1.0) / (u32Freq * 1.0);
    	dCleanupTimeUs		= (u32CleanupTimeCnt	* 1.0) / (u32Freq * 1.0);
    
    	printf (" - Passed - Time Cnt: %d - %d - %d ; us: %f - %f - %f\n",
    											u32SetupTimeCnt, u32TransTimeCnt, u32CleanupTimeCnt,
    											dSetupTimeUs, dTransTimeUs, dCleanupTimeUs);
    	
        /* Test Passed. */
        return 0;
    }
    
    /**
     *  @b Description
     *  @n  
     *      This is the example routine which perform EDMA ping pong buffer transfer
     *      where channel is open in the global region.
     *      It implements following steps
     *          - Intializes and Opens the EDMA Module .
     *          - Sets up the interrupt for the EDMA global region.
     *          - Sets up the EDMA module using the API csl_edma3Hwsetup () 
     *          - Enables the EDMA global region
     *          - Opens the channel 'channelNum' get the param handle for PARAM 1, 2
     *          - PING is mapped to PARAM Entry 1
     *          - PONG is mapped to PARAM Entry 2
     *          - PING is Linked with PONG...
     *          - Enables the EDMA interrupt using CSL_EDMA3_CMD_INTR_ENABLE. 
     *          - Enables Interrupt (Bit 0-2) for the global region interrupts
     *          - Manually triggers the DMA channel 'channelNum'(This should be PING)
     *          - Polls on IPR bit 0 (Since TCC for PING is 0)
     *          - Clear the pending bit
     *          - Manually triggers the channel 'channelNum' (This should be PONG)
     *          - Polls on IPR bit 1 (Since TCC for PONG is 1)
     *          - Clears the pending bit
     *          - Compares the data in the destination buffer is proper or not.
     *          - Closes the EDMA module and channel.
     *
     *  @param[in]  instNum
     *      EDMA Instance Number on which the test is executed. 
     *  @param[in]  channelNum
     *      EDMA Channel Number on which the test is executed
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Failure -   <0
     */
    Int32 edma_ping_pong_xfer_gbl_region (UInt8* pu8SrcAddr, UInt8* pu8DesAddr, UInt32 u32LenInByte, Int32 instNum, UInt8 channelNum)
    {    
        CSL_Edma3Handle                 hModule;
        CSL_Edma3Obj                    edmaObj;
        CSL_Edma3ParamHandle            hParamPing;
        CSL_Edma3ParamHandle            hParamPong;
        CSL_Edma3ChannelObj             chObj;
        CSL_Edma3CmdIntr                regionIntr;
        CSL_Edma3ChannelHandle          hChannel;
        CSL_Edma3ParamSetup             myParamSetup;
        CSL_Edma3Context                context;
        CSL_Edma3ChannelAttr            chAttr;
        CSL_Status                      status;
    //	Uint32                          loopIndex;
    
        /* Start the EDMA PING-PONG test over the Global Region. */
        printf ("Testing EDMA(%d) Ping-Pong Test Global Region for Channel %d", instNum, channelNum);
    
    	// For timing measurement
    	UInt32 u32SetupTimeCnt, u32TransTimeCntPing, u32TransTimeCntPong, u32CleanupTimeCnt;
    	UInt64 u64TimeA, u64TimeB, u64TimeC, u64TimeD, u64TimeE, u64TimeF;
    	double dSetupTimeUs, dTransTimeUsPing, dTransTimeUsPong, dCleanupTimeUs, th1, th2;
    
    	UInt32 u32Freq = 1000;   //in unit of us, assuming 1GHz CPU
    
        /* Initialize data  */
    	UInt32 u32Len1 = u32LenInByte / 2;
    	UInt32 u32Len2 = u32LenInByte - u32Len1;
    
    	UInt8 *srcBuff1 = pu8SrcAddr;
    	UInt8 *srcBuff2 = pu8SrcAddr + u32Len1;
    	UInt8 *dstBuff1 = pu8DesAddr;
    	UInt8 *dstBuff2 = pu8DesAddr + u32Len1;
     
        /* Module initialization */
        if (CSL_edma3Init(&context) != CSL_SOK) 
        {
            printf ("Error: EDMA module initialization failed\n");
            return -1;
        }
    
    	u64TimeA = _itoll(TSCH, TSCL);
    
        /* Open the EDMA Module using the provided instance number */
        hModule = CSL_edma3Open(&edmaObj, instNum, NULL, &status);
        if ( (hModule == NULL) || (status != CSL_SOK))
        {
            printf ("Error: EDMA module open failed\n");
            return -1;
        }
    
    	/* Channel open */
    	chAttr.regionNum = CSL_EDMA3_REGION_GLOBAL;
    	chAttr.chaNum    = channelNum;
    	hChannel = CSL_edma3ChannelOpen(&chObj, instNum, &chAttr, &status);
    	if ((hChannel == NULL) || (status != CSL_SOK))
    	{
    		printf ("Error: Unable to open EDMA Channel:%d\n", channelNum);
    		return -1;
    	}
    
    	if(!instNum)
    	{
    		/* For first EDMA instance there are only 2 TCs and 2 event queues 
             * Modify the channel default queue setup from 0 to 1 
             */
             if (CSL_edma3HwChannelSetupQue(hChannel,CSL_EDMA3_QUE_0) != CSL_SOK)
            {
                printf ("Error: EDMA channel setup queue failed\n");    
                return -1;
            }
        }
        else
        {
            /* For EDMA instance 1 and 2 maximum of 4 TCs and 4 event queues are supported
             * Change Channel Default queue setup from 0 to 3  
             */
            if (CSL_edma3HwChannelSetupQue(hChannel,CSL_EDMA3_QUE_3) != CSL_SOK)
            {
                printf ("Error: EDMA channel setup queue failed\n");    
                return -1;
            }
        }
    
        /* Map the DMA Channel to PARAM Block 2. */
        CSL_edma3MapDMAChannelToParamBlock (hModule, channelNum, 2);
    
        /* Obtain a handle to parameter set 2 */
        hParamPing = CSL_edma3GetParamHandle(hChannel, 2, &status);
        if (hParamPing == NULL) 
        {
            printf ("Error: EDMA Get Parameter Entry failed for 2.\n");
            return -1;
        }
    
        /* Obtain a handle to parameter set 1 */
        hParamPong = CSL_edma3GetParamHandle(hChannel, 1, &status);
        if (hParamPong == NULL) 
        {
            printf ("Error: EDMA Get Parameter Entry failed for 1.\n");
            return -1;
        }
    
        /* Setup the parameter entry parameters (Ping buffer) */
        myParamSetup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS, \
                                                 CSL_EDMA3_TCCH_DIS, \
                                                 CSL_EDMA3_ITCINT_DIS, \
                                                 CSL_EDMA3_TCINT_EN, \
                                                 0, CSL_EDMA3_TCC_NORMAL,\
                                                 CSL_EDMA3_FIFOWIDTH_NONE, \
                                                 CSL_EDMA3_STATIC_DIS, \
                                                 CSL_EDMA3_SYNC_A, \
                                                 CSL_EDMA3_ADDRMODE_INCR, \
                                                 CSL_EDMA3_ADDRMODE_INCR );
        myParamSetup.srcDstBidx = CSL_EDMA3_BIDX_MAKE(1,1);
        myParamSetup.linkBcntrld= CSL_EDMA3_LINKBCNTRLD_MAKE(hParamPong,0);
        myParamSetup.srcDstCidx = CSL_EDMA3_CIDX_MAKE(0,1);
        myParamSetup.cCnt = 1;
    
    	myParamSetup.srcAddr    = (UInt32) memory_addr_convert ((UInt32) srcBuff1);
    	myParamSetup.aCntbCnt   = CSL_EDMA3_CNT_MAKE(u32Len1,1);
    	myParamSetup.dstAddr    = (UInt32) memory_addr_convert ((UInt32) dstBuff1);
    
        /* Ping setup */
        if (CSL_edma3ParamSetup(hParamPing,&myParamSetup) != CSL_SOK)
        {
            printf ("Error: EDMA Parameter Entry Setup failed\n");
            return -1;
        }
    
        /* Pong setup */    
        myParamSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_MAKE(hParamPing,0);
        myParamSetup.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS, \
                                                 CSL_EDMA3_TCCH_DIS, \
                                                 CSL_EDMA3_ITCINT_DIS, \
                                                 CSL_EDMA3_TCINT_EN,\
                                                 1, CSL_EDMA3_TCC_NORMAL,\
                                                 CSL_EDMA3_FIFOWIDTH_NONE, \
                                                 CSL_EDMA3_STATIC_EN, \
                                                 CSL_EDMA3_SYNC_A, \
                                                 CSL_EDMA3_ADDRMODE_INCR, \
                                                 CSL_EDMA3_ADDRMODE_INCR );
    	myParamSetup.srcAddr    = (UInt32) memory_addr_convert ((UInt32) srcBuff2);
    	myParamSetup.aCntbCnt   = CSL_EDMA3_CNT_MAKE(u32Len2, 1);
    	myParamSetup.dstAddr    = (UInt32) memory_addr_convert ((UInt32) dstBuff2);
    
        if (CSL_edma3ParamSetup(hParamPong,&myParamSetup) != CSL_SOK)
        {
            printf ("Error: EDMA Parameter Entry Setup failed\n");
            return -1;
        }
    
        /* Interrupt enable (Bits 0-1)  for the global region interrupts */
        regionIntr.region = CSL_EDMA3_REGION_GLOBAL;
        regionIntr.intr   = 0x3;
        regionIntr.intrh  = 0x0000;
        CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTR_ENABLE,&regionIntr);
    	
        regionIntr.region = CSL_EDMA3_REGION_GLOBAL;
        regionIntr.intr   = 0;
        regionIntr.intrh  = 0;
    
    
    	u64TimeB = _itoll(TSCH, TSCL);
    
        /* Trigger channel */
        CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL);
    
    
        /* Poll on IPR bit 0 */
        do
    	{
    		CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIntr);
        }
    	while (!(regionIntr.intr & 0x1));
    	
    	u64TimeC = _itoll(TSCH, TSCL);
    
        /* Clear the pending bit */
        CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTRPEND_CLEAR,&regionIntr);
    	
    	u64TimeD = _itoll(TSCH, TSCL);
    
        /* Trigger Channel */
        CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL);
    
        /* Poll on IPR bit 2 */
        do
    	{
            CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIntr);
        }
    	while (!(regionIntr.intr & 0x2));
    
    	u64TimeE = _itoll(TSCH, TSCL);
    
        /* Close channel */
        if (CSL_edma3ChannelClose(hChannel) != CSL_SOK) 
        {
            printf("Error: EDMA Channel Close failed\n");
            return -1;
        }
    
        /* Close EDMA module */
        if (CSL_edma3Close(hModule) != CSL_SOK) 
        {
            printf("Error: EDMA Module Close failed\n");
            return -1;
        }
    
    	u64TimeF = _itoll(TSCH, TSCL);
    
        /* Check transfer by comparing the source and destination buffers */
        if(Verify_Transfer(u32Len1, 1, 1, 0, 0, 0, 0, srcBuff1, dstBuff1,TRUE) == FALSE)
        {
            printf ("\nError: Verification (Source1/Destination1) Failed\n");
            return -1;
        }
        if(Verify_Transfer(u32Len2, 1, 1, 0, 0, 0, 0, srcBuff2, dstBuff2,TRUE) == FALSE)
        {
            printf ("Error: Verification (Source2/Destination2) Failed\n");
            return -1;        
        }
    
    	u32SetupTimeCnt		= (UInt32) (u64TimeB - u64TimeA);
    	u32TransTimeCntPing		= (UInt32) (u64TimeC - u64TimeB);
    	u32TransTimeCntPong		= (UInt32) (u64TimeE - u64TimeD);
    	u32CleanupTimeCnt	= (UInt32) (u64TimeF - u64TimeE);
    
    	dSetupTimeUs		= (u32SetupTimeCnt		* 1.0) / (u32Freq * 1.0);
    	dTransTimeUsPing		= (u32TransTimeCntPing		* 1.0) / (u32Freq * 1.0);
    	dTransTimeUsPong		= (u32TransTimeCntPong		* 1.0) / (u32Freq * 1.0);
    	dCleanupTimeUs		= (u32CleanupTimeCnt	* 1.0) / (u32Freq * 1.0);
    
    	printf (" - Passed - Time Cnt: %d - %d - %d - %d; us: %f - %f - %f -%f",
    											u32SetupTimeCnt, u32TransTimeCntPing, u32TransTimeCntPong, u32CleanupTimeCnt,
    											dSetupTimeUs, dTransTimeUsPing, dTransTimeUsPong, dCleanupTimeUs);
    
        /* The test passed. */
    	
    	th1 = (u32Len1*1.0)/dTransTimeUsPing;
    	th2 = (u32Len1*1.0)/dTransTimeUsPong;	
    	printf (" Throughput in MB/s %f - %f \n", th1, th2);  
    	
        return 0;
    }
     
    /**
     *  @b Description
     *  @n  
     *      This is the example routine which performs the EDMA ping pong buffer transfer in
     *      the specified SHADOW Region.
     *
     *      It implements following steps
     *          - Intializes and Opens the EDMA Module .
     *          - Sets up the interrupt for the EDMA SHADOW region.
     *          - Opens the channel 'channelNum' get the param handle for PARAM 1, 2
     *          - PING is mapped to PARAM Entry 1
     *          - PONG is mapped to PARAM Entry 2
     *          - PING is Linked with PONG...
     *          - Enables the EDMA interrupts for the specific SHADOW Region. 
     *          - Manually triggers the DMA channel 'channelNum'(This should be PING)
     *          - Polls on IPR bit 0 (Since TCC for PING is 0)
     *          - Clear the pending bit
     *          - Manually triggers the channel 'channelNum' (This should be PONG)
     *          - Polls on IPR bit 1 (Since TCC for PONG is 1)
     *          - Clears the pending bit
     *          - Compares the data in the destination buffer is proper or not.
     *          - Closes the EDMA module and channel.
     *
     *  @param[in]  instNum
     *      EDMA Instance Number on which the test is executed. 
     *  @param[in]  channelNum
     *      EDMA Channel Number on which the test is executed
     *  @param[in]  regionNum
     *      Shadown Region Number on which the test is executed.
     *
     *  @retval
     *      Success -   0
     *  @retval
     *      Failure -   <0
     */
    Int32 edma_ping_pong_xfer_region (Int32 instNum, Uint8 channelNum, Int32 regionNum)
    {
        CSL_Edma3Handle             hModule;
        CSL_Edma3Obj                edmaObj;
        CSL_Edma3ParamHandle        hParamPing;
        CSL_Edma3ParamHandle        hParamPong;
        CSL_Edma3ChannelObj         chObj;
        CSL_Edma3CmdIntr            regionIntr;
        CSL_Edma3CmdDrae            regionAccess;
        CSL_Edma3ChannelHandle      hChannel;
        CSL_Edma3ParamSetup         myParamSetup;
        CSL_Edma3Context            context;
        CSL_Edma3ChannelAttr        chAttr;
        CSL_Status                  status;
        Uint32                      loopIndex;
        
        /* Start the EDMA PING-PONG test over the Shadow Region. */
        printf ("Debug: Testing EDMA(%d) Ping-Pong Test Shadow-Region %d for Channel %d...\n", instNum, regionNum, channelNum);
     
        /* Module Initialization */
        if (CSL_edma3Init(&context) != CSL_SOK) 
        {
            printf ("Error: EDMA module initialization failed\n");
            return -1;
        }
        
        /* Module level open */
        hModule = CSL_edma3Open(&edmaObj, instNum, NULL, &status);
        if ((hModule == NULL) || (status != CSL_SOK))
        {
            printf ("Error: EDMA module open failed\n");
            return -1;
        }
    
        /* Determine the number of channels we need to enable. Is this Instance 0? */
        if (instNum == 0)
        {
            /* YES. DRAE enable(Bits 0-15) for the shadow region; since there are 16 channels. */
            regionAccess.region = regionNum;
            regionAccess.drae   = 0xFFFF;
            regionAccess.draeh  = 0x0;
            if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_DMAREGION_ENABLE, &regionAccess) != CSL_SOK)
            {
                printf ("Error: EDMA region enable command failed\n");
                return -1;
            }
        }
        else
        {
            /* YES. DRAE enable(Bits 0-63) for the shadow region; since there are 64 channels. */
            regionAccess.region = regionNum;
            regionAccess.drae   = 0xFFFFFFFF;
            regionAccess.draeh  = 0xFFFFFFFF;
            if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_DMAREGION_ENABLE, &regionAccess) != CSL_SOK)
            {
                printf ("Error: EDMA region enable command failed\n");
                return -1;
            }            
        }
     
        /* Interrupt enable (Bits 0-11)  for the shadow region 5 */
        regionIntr.region = regionNum;
        regionIntr.intr   = 0x0FFF;   
        regionIntr.intrh  = 0x0000;
        if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTR_ENABLE, &regionIntr) != CSL_SOK)
        {
            printf ("Error: EDMA interrupts enable command failed\n");
            return -1;
        }
    
        /* Open the channel in context of the specified region number. */
        chAttr.regionNum = regionNum;
        chAttr.chaNum    = channelNum;
        hChannel = CSL_edma3ChannelOpen(&chObj, instNum, &chAttr, &status);   
        if ((hChannel == NULL) || (status != CSL_SOK))
        {
            printf ("Error: EDMA channel open failed\n");
            return -1;
        }
    
        /* Map the DMA Channel to the appropriate PARAM Block. We start with PING 
         * which is located at PARAM Block 2. */
        if (CSL_edma3HwChannelSetupParam(hChannel, 2) != CSL_SOK) 
        {
            printf ("Error: EDMA channel setup param failed\n");    
            return -1;
        }    
        
        /* Obtain a handle to parameter set 2 */
        hParamPing = CSL_edma3GetParamHandle(hChannel, 2, &status);
        if (hParamPing == NULL) {
            printf ("Error: EDMA get param handle for param entry 2 failed\n");    
            return -1;
        }
        
        /* Obtain a handle to parameter set 1 */
        hParamPong = CSL_edma3GetParamHandle(hChannel, 1, &status);
        if (hParamPong == NULL) {
            printf ("Error: EDMA get param handle for param entry 1 failed\n");        
            return -1;
        }
    
        /* Setup the first param set (Ping buffer) */
        myParamSetup.option = CSL_EDMA3_OPT_MAKE( CSL_EDMA3_ITCCH_DIS, \
                                                  CSL_EDMA3_TCCH_DIS, \
                                                  CSL_EDMA3_ITCINT_DIS, \
                                                  CSL_EDMA3_TCINT_EN,\
                                                  0, CSL_EDMA3_TCC_NORMAL,\
                                                  CSL_EDMA3_FIFOWIDTH_NONE, \
                                                  CSL_EDMA3_STATIC_DIS, \
                                                  CSL_EDMA3_SYNC_A, \
                                                  CSL_EDMA3_ADDRMODE_INCR, \
                                                  CSL_EDMA3_ADDRMODE_INCR
                                                 );
        myParamSetup.srcAddr    = (Uint32)srcBuff1;         
        myParamSetup.aCntbCnt   = CSL_EDMA3_CNT_MAKE(512,1);       
        myParamSetup.dstAddr    = (Uint32)dstBuff1;        
        myParamSetup.srcDstBidx = CSL_EDMA3_BIDX_MAKE(1,1);     
        myParamSetup.linkBcntrld= CSL_EDMA3_LINKBCNTRLD_MAKE(hParamPong,0);     
        myParamSetup.srcDstCidx = CSL_EDMA3_CIDX_MAKE(0,1);     
        myParamSetup.cCnt = 1;
    
        /* Setup the Ping Entry which loaded after the Pong entry gets exhausted */
        if (CSL_edma3ParamSetup(hParamPing,&myParamSetup) != CSL_SOK) 
        {
            printf("Error: EDMA ping parameter entry setup is failed\n");
            return -1;
        }
        
        /* Setup the Pong Entry which loaded after the Ping entry gets exhausted */
        myParamSetup.option = CSL_EDMA3_OPT_MAKE( CSL_EDMA3_ITCCH_DIS, \
                                                  CSL_EDMA3_TCCH_DIS, \
                                                  CSL_EDMA3_ITCINT_DIS, \
                                                  CSL_EDMA3_TCINT_EN, \
                                                  1,CSL_EDMA3_TCC_NORMAL, \
                                                  CSL_EDMA3_FIFOWIDTH_NONE, \
                                                  TRUE,CSL_EDMA3_SYNC_A, \
                                                  CSL_EDMA3_ADDRMODE_INCR, \
                                                  CSL_EDMA3_ADDRMODE_INCR
                                                 );           
        myParamSetup.srcAddr = (Uint32)srcBuff2;
        myParamSetup.dstAddr = (Uint32)dstBuff2;    
        myParamSetup.linkBcntrld = CSL_EDMA3_LINKBCNTRLD_MAKE(hParamPing,0);     
        if (CSL_edma3ParamSetup(hParamPong,&myParamSetup) != CSL_SOK) 
        {
            printf("Error: EDMA pong parameter entry setup is failed\n");
            return -1;
        }
        
        /* Enable channel */
        if (CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_ENABLE, NULL) != CSL_SOK) 
        {
            printf("Error: EDMA channel enable command is failed\n");
            return -1;
        }
        
        /* Initialize data */
        for (loopIndex = 0; loopIndex < 512; loopIndex++) {
            srcBuff1[loopIndex] = loopIndex;
            srcBuff2[loopIndex] = loopIndex;
            dstBuff1[loopIndex] = 0;
            dstBuff2[loopIndex] = 0;        
        }
        
        /* Manually trigger the channel */
        if (CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL) != CSL_SOK) 
        {
            printf("Error: EDMA channel set command is failed\n");
            return -1;
        }
    
        regionIntr.region = regionNum;
        regionIntr.intr = 0;
        regionIntr.intrh = 0;
        
        do {
            /* Poll on interrupt bit 0 */
            CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIntr);
        } while (!(regionIntr.intr & 0x1));
    
        /* Clear interrupt bit 0 */
        if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTRPEND_CLEAR, &regionIntr) != CSL_SOK) 
        {
            printf("Error: EDMA clear interrupt bit 0 command is failed\n");
            return -1;
        }
        
        /* Mapping channel 0 to event queue 1 */
        if (CSL_edma3HwChannelSetupQue(hChannel,CSL_EDMA3_QUE_1) != CSL_SOK) 
        {
            printf("Error: EDMA channel setup queue is failed\n");
            return -1;
        }
    
        /* Manually trigger the channel */
        if (CSL_edma3HwChannelControl(hChannel,CSL_EDMA3_CMD_CHANNEL_SET,NULL) != CSL_SOK) 
        {
            printf("Error: EDMA channel set command is failed\n");
            return -1;
        }
        
        regionIntr.region = regionNum;
        regionIntr.intr = 0;
        regionIntr.intrh = 0;
        
        /* Poll on interrupt pend bit 1 */
        do {   
            CSL_edma3GetHwStatus(hModule,CSL_EDMA3_QUERY_INTRPEND,&regionIntr);
        } while (!(regionIntr.intr & 0x2));
    
        /* Clear interrupt bit 1 */
        if (CSL_edma3HwControl(hModule,CSL_EDMA3_CMD_INTRPEND_CLEAR, &regionIntr) != CSL_SOK) 
        {
            printf("Error: EDMA clear interrupt bit 1 command is failed\n");
            return -1;
        }
        
        /* Verify the data has been transferred correctly. */
        if(Verify_Transfer(512, 1, 1, 0, 0, 0, 0, srcBuff1, dstBuff1,TRUE) == FALSE)
        {
            printf ("Error: Verification (Source1/Destination1) Failed\n");
            return -1;
        }
        if(Verify_Transfer(512, 1, 1, 0, 0, 0, 0, srcBuff2, dstBuff2,TRUE) == FALSE)
        {
            printf ("Error: Verification (Source2/Destination2) Failed\n");
            return -1;
        }
    
        /* Close channel */
        if (CSL_edma3ChannelClose(hChannel) != CSL_SOK) 
        {
            printf("Error: EDMA channel close failed\n");
            return -1;
        }
        
        /* Close EDMA module */
        if (CSL_edma3Close(hModule) != CSL_SOK) 
        {
            printf("Error: EDMA module close failed\n");
            return -1;
        }
    
        /* Test Passed. */
        return 0;
    }
    
    void MemTest_Qdma (UInt32 *grgu32Src, UInt32 *grgu32Dest, UInt32 u32LenDW)
    {
    	Uint8  channelNum;
    	Int32  regionNum = CSL_EDMA3_REGION_GLOBAL;
    	Uint8  instNum = 0;
    	UInt32 ii;
    	for (ii = 0; ii < u32LenDW; ii++)
    	{
    		grgu32Dest[ii] = 0;
    		grgu32Src[ii] = ii;
    	}
    
    	printf ("\nTest QDMA: Source Addr: 0x%08X - Destination Addr: 0x%08X - Len %d\n", (UInt32) grgu32Src, (UInt32) grgu32Dest, (u32LenDW * 4));
    
    	for  (channelNum = 64; channelNum < 72; channelNum++)
    	{
    		if (qdma_link_xfer_region((UInt8*) grgu32Src, (UInt8*) grgu32Dest, (u32LenDW * 4), instNum, channelNum, regionNum) < 0)
    		{
    			printf ("Error: Testing EDMA(%d) Ping-Pong Test (Shadow) Region %d for QDMA Channel %d FAILED\n", instNum, regionNum, channelNum);
    			return;
    		}
    	}
    }
    
    void MemTest_Edma (UInt32 *grgu32Src, UInt32 *grgu32Dest, UInt32 u32LenDW)
    {
        Uint8  channelNum;
    //	Int32  regionNum = CSL_EDMA3_REGION_GLOBAL;
        Uint8  instNum = 0;
        UInt32 ii;
        for (ii = 0; ii < u32LenDW; ii++)
        {
            grgu32Dest[ii] = 0;
            grgu32Src[ii] = ii;
        }
    
        printf ("\nTest EDMA: Source Addr: 0x%08X - Destination Addr: 0x%08X - Len %d\n", (UInt32) grgu32Src, (UInt32) grgu32Dest, (u32LenDW * 4));
    	for (channelNum = 0; channelNum < 16; channelNum++)
    	 {
    		 if (edma_ping_pong_xfer_gbl_region((UInt8*) grgu32Src, (UInt8*) grgu32Dest, (DATA_LEN * 4), instNum, channelNum) < 0)
    		 {
    			 printf ("Error: Testing EDMA(%d) Ping-Pong Test (Global) Region for Channel %d FAILED\n",
    					 instNum, channelNum);
    			 return;
    		 }
    	 }
    }
    
    void main (void)
    {
    //	UInt32 uiFreq = platform_get_frequency();
    //    printf("\nDSP Freq: %d\n", uiFreq);
    
        TSCL = 0;
    
        //Setup L1P, L1D, L2 cache, DDR cache
        *(unsigned int*)0x01840000 = 0x3;  //64KB L2 cache
        *(unsigned int*)0x01840020 = 0x7;  
        *(unsigned int*)0x01840040 = 0x7;
        *(unsigned int*)0x01848200 = 0xD;
    
    #if 0
    	/* Test QDMA */
    	MemTest_Qdma ((UInt32*) grgu32ShMemData,			(UInt32*)grgu32ExtMemData, DATA_LEN);
    	MemTest_Qdma ((UInt32*) grgu32ExtMemData,			(UInt32*)grgu32ShMemData, DATA_LEN);
    
    	MemTest_Qdma ((UInt32*) grgu32ShMemData,		    (UInt32*)grgu32L2MemDataDest, DATA_LEN);
    	MemTest_Qdma ((UInt32*) grgu32ExtMemData,			(UInt32*)grgu32L2MemDataDest, DATA_LEN);
    
    	MemTest_Qdma ((UInt32*) grgu32L2MemDataDest,  	    (UInt32*)grgu32ShMemData, DATA_LEN);
    	MemTest_Qdma ((UInt32*) grgu32L2MemDataDest,	    (UInt32*)grgu32ExtMemData, DATA_LEN);
    #endif
    
    	/* Test EDMA3 */
    	MemTest_Edma ((UInt32*) grgu32ShMemData,		    (UInt32*)grgu32ExtMemData, DATA_LEN);
    	MemTest_Edma ((UInt32*) grgu32ExtMemData,			(UInt32*)grgu32ShMemData, DATA_LEN);
    
    	MemTest_Edma ((UInt32*) grgu32ShMemData,		    (UInt32*)grgu32L2MemDataDest, DATA_LEN);
    	MemTest_Edma ((UInt32*) grgu32ExtMemData,			(UInt32*)grgu32L2MemDataDest, DATA_LEN);
    
    	MemTest_Edma ((UInt32*) grgu32L2MemDataDest,	    (UInt32*)grgu32ShMemData, DATA_LEN);
    	MemTest_Edma ((UInt32*) grgu32L2MemDataDest,	    (UInt32*)grgu32ExtMemData, DATA_LEN);
    
    	return;
    }
    
    // /**
     // *  @b Description
     // *  @n  
     // *      Entry point for the test code.
     // *
     // *  @retval
     // *      Not Applicable.
     // */
    // void main (void)
    // {
        // Uint8  channelNum;
        // Int32  regionNum;
        // Uint8  instNum = 0;
        
        // printf ("**************************************************\n");
        // printf ("******************* EDMA Testing *****************\n");
        // printf ("**************************************************\n");
    
        // /* EDMA Instance 0: Supports only 16 DMA Channels. */
        // for (channelNum = 0; channelNum < 16; channelNum++)
        // {
            // if (edma_ping_pong_xfer_gbl_region(instNum, channelNum) < 0)
            // {
                // printf ("Error: Testing EDMA(%d) Ping-Pong Test (Global) Region for Channel %d FAILED\n", instNum, channelNum);
                // return;
            // }
            // printf ("Debug: Testing EDMA(%d) Ping-Pong Test (Global) Region for Channel %d Passed\n", instNum, channelNum);
        // }    
    
        // /* EDMA Shadow Testing: This is run for all the SHADOW Regions from 0-7 
         // * and on all supported DMA Channels. */
        // for (regionNum = CSL_EDMA3_REGION_0; regionNum <= CSL_EDMA3_REGION_7; regionNum++)
        // {
            // for (channelNum = 0; channelNum < 16; channelNum++)
            // {
                // if (edma_ping_pong_xfer_region(instNum, channelNum, regionNum) < 0)
                // {
                    // printf ("Error: Testing EDMA(%d) Ping-Pong Test Shadow-Region %d for Channel %d FAILED\n", 
                            // instNum, regionNum, channelNum);
                    // return;
                // }
                // printf ("Debug: Testing EDMA(%d) Ping-Pong Test Shadow-Region %d for Channel %d Passed\n", 
                        // instNum, regionNum, channelNum);
            // }
        // }
    
        // /* QDMA Testing: This is run for all SHADOW Regions from 0-7 and on 
         // * all supported QDMA Channels; there are 8 supported. Remember QDMA Channels start after the
         // * DMA Channels which are 16 for Instance 0. */
        // for (regionNum = CSL_EDMA3_REGION_GLOBAL; regionNum <= CSL_EDMA3_REGION_7; regionNum++)
        // {
            // for (channelNum = 16; channelNum < 24; channelNum++)
            // {
                // if (qdma_link_xfer_region(instNum, channelNum, regionNum) < 0)
                // {
                    // printf ("Error: Testing EDMA(%d) Ping-Pong Test (Shadow) Region %d for QDMA Channel %d FAILED\n",
                            // instNum, regionNum, channelNum);
                    // return;
                // }
                // printf ("Debug: Testing EDMA(%d) Ping-Pong Test (Shadow) Region %d for QDMA Channel %d Passed\n",
                        // instNum, regionNum, channelNum);
            // }
        // }
    
        // /* Run the test for EDMA Instance 1 and 2; both have the same limits. */
        // for (instNum = 1; instNum < 3; instNum++)
        // {
            // /* EDMA Instance 1 and 2: Supports 64 DMA Channels. */
            // for (channelNum = 0; channelNum < 64; channelNum++)
            // {
                // if (edma_ping_pong_xfer_gbl_region(instNum, channelNum) < 0)
                // {
                    // printf ("Error: Testing EDMA(%d) Ping-Pong Test (Global) Region for Channel %d FAILED\n", 
                            // instNum, channelNum);
                    // return;
                // }
                // printf ("Debug: Testing EDMA(%d) Ping-Pong Test (Global) Region for Channel %d Passed\n", 
                        // instNum, channelNum);
            // }
    
            // /* EDMA Shadow Testing: This is run for all the SHADOW Regions from 0-7 
             // * and on all supported DMA Channels. */
            // for (regionNum = CSL_EDMA3_REGION_0; regionNum <= CSL_EDMA3_REGION_7; regionNum++)
            // {
                // for (channelNum = 0; channelNum < 64; channelNum++)
                // {
                    // if (edma_ping_pong_xfer_region(instNum, channelNum, regionNum) < 0)
                    // {
                        // printf ("Error: Testing EDMA(%d) Ping-Pong Test Shadow-Region %d for Channel %d FAILED\n",
                                // instNum, regionNum, channelNum);
                        // return;
                    // }
                    // printf ("Debug: Testing EDMA(%d) Ping-Pong Test Shadow-Region %d for Channel %d Passed\n",
                            // instNum, regionNum, channelNum);
                // }
            // }
    
            // /* QDMA Testing: This is run for all SHADOW Regions from 0-7 and on 
             // * all supported QDMA Channels; there are 8 supported. Remember QDMA Channels start after the
             // * DMA Channels which are 64 for Instance 1 and 2 */
            // for (regionNum = CSL_EDMA3_REGION_GLOBAL; regionNum <= CSL_EDMA3_REGION_7; regionNum++)
            // {
                // for (channelNum = 64; channelNum < 72; channelNum++)
                // {
                    // if (qdma_link_xfer_region(instNum, channelNum, regionNum) < 0)
                    // {
                        // printf ("Error: Testing EDMA(%d) Ping-Pong Test (Shadow) Region %d for QDMA Channel %d FAILED\n",
                                // instNum, regionNum, channelNum);
                        // return;
                    // }
                    // printf ("Debug: Testing EDMA(%d) Ping-Pong Test (Shadow) Region %d for QDMA Channel %d Passed\n",
                            // instNum, regionNum, channelNum);
                // }
            // }
        // }
        
        // printf ("**************************************************\n");
        // printf ("************* EDMA Testing Successful ************\n");
        // printf ("**************************************************\n");
       
        // return;
    // }
    

  • Hi Eric,

    Thanks for you reply.

    lding said:
    1) DDR3A or DDR3B, as there is no DDR3B in C6678

    For K2H I am using DDR3B, for C6678 I am using DDR3.

    I understand that from the architecture, DDR3A from K2H is more similar to DDR3 on C6678, DDR3A is conected to MSMC while DDR3B is connected to TeraNet. However, I do some searching and what I found is that on K2H, usually DDR3B is used for DSP and DDR3A is used for ARM (expecially if ARM is runing Linux). And if DSP want to access DDR3A, we need to use XMC to map the 40 bit address of DDR3A to 32 bit logical address. I also find that for EDMA, DDR3B should have better performance than DDR3A since it is more near to EDMA controller.

    Please correct me if my understand is wrong.

    lding said:
    2) If you can use much big transfer size for test? 

    I will redo the test by your program with same data size as yours.

    FYI, the data size that I used is for testing only, in real application we do not have a fixed data lenght transfer, but usually we do not transfer very big amount of data such as 32768 bytes.

  • Hi,

    1. Your understanding for DDR3A/3B is correct.  DDR3A is conected to MSMC while DDR3B is connected to TeraNet. For throughput, the DDR3B is a little bit higher than DDR3A. The information can be found on SPRABK5B, Tables 9 and 10, 14, 15. 

    For majority of customers, they still use DDR3A. It is true typically they run Linux on ARM core from the DDR3A memory. But 512MB should be sufficient for Linux. DDR3A can be up to 8GB, much larger than DDR3B. Many customer use a large portion of DDR3A by DSP, partitioning with ARM core. There also Linux user space diver to manage the data between ARM and DSP. Yes, you have to setup MPAX for DSP.

    If you want to DDR3A for ARM and DDR3B for DSP, then you have to have two DDR chips. And you have to move the data between to chips. This may not be very efficient.

    2. For the EDMA efficiency when using smaller ACNT*BCNT, you may see the curve in Figure 8 in the same document. For Keystone I, SPRABK5A1 doesn't provide such curve. But given 512x4 bytes is for just test purpose, and your typical transfer is 32768 bytes, please re-run the test with typical size and record the cycles spent. Hope the K2H and C6678 has little difference. 

    Regards, Eric

  • Hi Eric,

    Thanks for your information regarding DDR3A and DDR3B.

    I have redo the test by your edited test code on EVMK2H board, and I can see similar result like yours. So I think my board setting is ok.

    However, I am facing the problem when connecting the C6678 EVM to my PC, the driver is not installed. (As the image below). I even reinstall the CCS but the issue is stil there. Do you have any suggestion on this?

    Regarding the data size, I have review our application and we have different data to transfer, but the size now is not more than 1kB each transfer. So our focus is still the performance of EDMA in small data size (e.g. 1kB or 4kB). Could you please provide accessment of the benchmark between C6678 and 66AK2H in this data size range.

    Thanks a lot.

    Below is the status when connecting C6678 EVM board:

  • Hi,

    For C6678 emulation, you may look at the Blackhawk website to see if they have new drivers for XDS560v2. Another way is removing the mezzanine card, and just use the on board xds100v1 USB emulator, it is slower. This is how I connect to C6678. 

    For the EDMA performance, I will try to use a C6657 first (I don't have C6678 for now) to get numbers for smaller transfer. Is K2H EDMA slower than C6678 a major concern in your project?

    Regards, Eric

  • Hi Eric,

    Thanks for your suggestion. I also search on the Blackhawk website but seems they do not provide drivers. I will try the on board xds100v1 USB emulator.

    Yes, since we use EDMA for data transfer between L2 and ShMem, L2 and DDR3 in our application, so the EDMA performance is one of our concern. Also we expect that the new 66AK2H processor would have better performance that the C6678 (e.g one point state in datasheet is the Keystone 2 MSMC will run as the same clock as DSP, which is better than Keystone 1). So when we see this result, we want to know if it is the case, and understand why.

    Thanks.

  • Hi,

    I looked at the C6657 datasheet EDMA portion, the buswidth and dbs are inferior to K2H. I decide not using C6657, it is not a good representation of EDMA on C6678. I am working on how to get access to a C6678 board.

    Regards, Eric 

  • Hi,

    Here is the results I got with C6678 and compared with K2H side by side: the unit is CPU cycles. 

    K2H C6678
    SRC DST 2048 bytes 32768 bytes 2048 bytes 32768 bytes
    MSMC DDR3A 781 6436 683 3589
    DDR3A MSMC 949 6613 685 3790
    MSMC L2 949 6613 892 6688
    DDR3A L2 949 6613 892 6688
    L2 MSMC 949 6613 892 6688
    L2 DDR3A 949 6613 892 6688

    When using L2,

    • For 2048 bytes transfer (4K split in ping-pong buffer): C6678 is a bit faster than K2H. Maybe 5%.
    • For 32768 bytes transfer (64K split in ping-pong buffer), C6678 ~= K2H .

    The DDR3A<=======>MSMC transfer look exceptional high for C6678. This needs to be re-checked. But for your usage case, L2<===>MSMC, L2<===>DDR transfer, the cycle are almost the same.

    If my K2H results matched yours, then my C6678 is not as fast as you observed. Can you provide the cycle numbers for comparison?

    Regards, Eric

  • Hi Eric,

    I follow your suggestion and already can use on-board XDS100v1 for my C6678 board.

    Here is my test result for C6678 and 66AK2H:

    Data for 2kB C6678 66AK2H Different Ping (cnt) Different Pong (cnt) Diff Ping
    (%)
    Diff Pong
    (%)
    Ping time (cnt) Pong time (cnt) Ping time (us) Pong time (us) Ping time (cnt) Pong time (cnt) Ping time (us) Pong time (us)
    From MSMC to DDR3 608 570 0.608 0.570 948 910 0.948 0.910 339 340 35.82% 37.34%
    From DDR3 to MSMC 600 570 0.600 0.570 947 910 0.947 0.910 347 340 36.69% 37.36%
    From MSMC to L2 726 699 0.726 0.699 950 913 0.950 0.913 224 214 23.61% 23.44%
    From DDR3 to L2 852 825 0.852 0.825 960 964 0.960 0.964 109 139 11.31% 14.39%
    From L2 to MSMC 726 704 0.726 0.704 947 910 0.947 0.910 221 206 23.38% 22.65%
    From L2 to DDR3 852 822 0.852 0.822 947 910 0.947 0.910 95 88 10.08% 9.67%
    Data for 32 kB C6678 66AK2H Different Ping (cnt) Different Pong (cnt) Different Ping
    (%)
    Different Pong
    (%)
    Ping time (cnt) Pong time (cnt) Ping time (us) Pong time (us) Ping time (cnt) Pong time (cnt) Ping time (us) Pong time (us)
    From MSMC to DDR3 3504 3468 3.504 3.468 6497 6622 6.497 6.622 2993 3154 46.07% 47.63%
    From DDR3 to MSMC Error Error Error Error Error Error Error Error N.A N.A N.A N.A
    From MSMC to L2 6527 6495 6.527 6.495 Error Error Error Error N.A N.A N.A N.A
    From DDR3 to L2 6654 6618 6.654 6.618 6832 6791 6.832 6.791 179 173 2.62% 2.54%
    From L2 toMSMC 6528 6500 6.528 6.500 6665 6633 6.665 6.633 137 133 2.06% 2.01%
    From L2 to DDR3 6528 6492 6.528 6.492 6665 6623 6.665 6.623 137 131 2.06% 1.97%

    I can see that for the data size of 2048 Byte, my 66AK2H is similar to your while my C6678 is faster. How can we explain that?

    Even for your result, can we conclude that DMA on C6678 is faster than 66AK2H when transfer data of 2kB? How should we explain the result?

    As you mentioned, data transfer between DDR3 and MSMC look exceptional, please also advice the reason.

    For the test of 32 kB I see some time there is an error on data validation (I see in your log also has error), may I know what is the cause, and how to prevent that?

    Thanks a lot.

    (My test data are as below):

    66AK2H_Len_4096.txt
    [C66xx_0] 
    DSP Start Testing
    
    Test EDMA: Source Addr: 0x0C000000 - Destination Addr: 0x80000000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1190 - 956 - 910 - 47; us: 1.190000 - 0.956000 - 0.910000 -0.047000 Throughput in MB/s 2142.259414 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    
    Test EDMA: Source Addr: 0x80000000 - Destination Addr: 0x0C000000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1133 - 947 - 910 - 46; us: 1.133000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    
    Test EDMA: Source Addr: 0x0C000000 - Destination Addr: 0x10840000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1132 - 947 - 910 - 46; us: 1.132000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1103 - 950 - 913 - 46; us: 1.103000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1101 - 950 - 913 - 46; us: 1.101000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1102 - 950 - 913 - 46; us: 1.102000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1101 - 950 - 913 - 46; us: 1.101000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1102 - 950 - 913 - 46; us: 1.102000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1102 - 950 - 913 - 46; us: 1.102000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1101 - 950 - 913 - 46; us: 1.101000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1101 - 950 - 913 - 46; us: 1.101000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1103 - 950 - 913 - 46; us: 1.103000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1101 - 950 - 913 - 46; us: 1.101000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1103 - 950 - 913 - 46; us: 1.103000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1101 - 950 - 913 - 46; us: 1.101000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1102 - 950 - 913 - 46; us: 1.102000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1102 - 950 - 913 - 46; us: 1.102000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1103 - 950 - 913 - 46; us: 1.103000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    
    Test EDMA: Source Addr: 0x80000000 - Destination Addr: 0x10840000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1128 - 950 - 916 - 46; us: 1.128000 - 0.950000 - 0.916000 -0.046000 Throughput in MB/s 2155.789474 - 2235.807860 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1103 - 950 - 910 - 46; us: 1.103000 - 0.950000 - 0.910000 -0.046000 Throughput in MB/s 2155.789474 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1101 - 950 - 910 - 46; us: 1.101000 - 0.950000 - 0.910000 -0.046000 Throughput in MB/s 2155.789474 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1102 - 950 - 910 - 46; us: 1.102000 - 0.950000 - 0.910000 -0.046000 Throughput in MB/s 2155.789474 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1101 - 1118 - 1750 - 46; us: 1.101000 - 1.118000 - 1.750000 -0.046000 Throughput in MB/s 1831.842576 - 1170.285714 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1101 - 950 - 910 - 46; us: 1.101000 - 0.950000 - 0.910000 -0.046000 Throughput in MB/s 2155.789474 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1101 - 950 - 910 - 46; us: 1.101000 - 0.950000 - 0.910000 -0.046000 Throughput in MB/s 2155.789474 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1103 - 950 - 913 - 46; us: 1.103000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1101 - 950 - 910 - 46; us: 1.101000 - 0.950000 - 0.910000 -0.046000 Throughput in MB/s 2155.789474 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1103 - 950 - 910 - 46; us: 1.103000 - 0.950000 - 0.910000 -0.046000 Throughput in MB/s 2155.789474 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1101 - 947 - 913 - 46; us: 1.101000 - 0.947000 - 0.913000 -0.046000 Throughput in MB/s 2162.618796 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1101 - 950 - 910 - 46; us: 1.101000 - 0.950000 - 0.910000 -0.046000 Throughput in MB/s 2155.789474 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1101 - 950 - 910 - 46; us: 1.101000 - 0.950000 - 0.910000 -0.046000 Throughput in MB/s 2155.789474 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1102 - 950 - 913 - 46; us: 1.102000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1102 - 950 - 913 - 46; us: 1.102000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    
    Test EDMA: Source Addr: 0x10840000 - Destination Addr: 0x0C000000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1129 - 950 - 913 - 46; us: 1.129000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    
    Test EDMA: Source Addr: 0x10840000 - Destination Addr: 0x80000000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1130 - 950 - 913 - 46; us: 1.130000 - 0.950000 - 0.913000 -0.046000 Throughput in MB/s 2155.789474 - 2243.154436 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1103 - 947 - 910 - 46; us: 1.103000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1102 - 947 - 910 - 46; us: 1.102000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1101 - 947 - 910 - 46; us: 1.101000 - 0.947000 - 0.910000 -0.046000 Throughput in MB/s 2162.618796 - 2250.549451 
     
    66AK2H_Len_65536.txt
    [C66xx_0] 
    DSP Start Testing
    
    Test EDMA: Source Addr: 0x0C000000 - Destination Addr: 0x80000000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1191 - 6500 - 6622 - 47; us: 1.191000 - 6.500000 - 6.622000 -0.047000 Throughput in MB/s 5041.230769 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1120 - 6497 - 6622 - 46; us: 1.120000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1121 - 6497 - 6622 - 46; us: 1.121000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1122 - 6497 - 6622 - 46; us: 1.122000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1121 - 6497 - 6622 - 46; us: 1.121000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1122 - 6497 - 6622 - 46; us: 1.122000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1120 - 6497 - 6622 - 46; us: 1.120000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1122 - 6497 - 6622 - 46; us: 1.122000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1121 - 6497 - 6622 - 46; us: 1.121000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1121 - 6497 - 6622 - 46; us: 1.121000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1121 - 6497 - 6622 - 46; us: 1.121000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1121 - 6497 - 6622 - 46; us: 1.121000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1120 - 6497 - 6622 - 46; us: 1.120000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1121 - 6497 - 6622 - 46; us: 1.121000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1120 - 6497 - 6622 - 46; us: 1.120000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1122 - 6497 - 6622 - 46; us: 1.122000 - 6.497000 - 6.622000 -0.046000 Throughput in MB/s 5043.558565 - 4948.353972 
    
    Test EDMA: Source Addr: 0x80000000 - Destination Addr: 0x0C000000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0Error: Verification (Source2/Destination2) Failed
    Error: Testing EDMA(0) Ping-Pong Test (Global) Region for Channel 0 FAILED
    
    Test EDMA: Source Addr: 0x0C000000 - Destination Addr: 0x10840000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0Error: Verification (Source2/Destination2) Failed
    Error: Testing EDMA(0) Ping-Pong Test (Global) Region for Channel 0 FAILED
    
    Test EDMA: Source Addr: 0x80000000 - Destination Addr: 0x10840000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1155 - 6824 - 6790 - 46; us: 1.155000 - 6.824000 - 6.790000 -0.046000 Throughput in MB/s 4801.875733 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1122 - 6833 - 6790 - 46; us: 1.122000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1120 - 6833 - 6793 - 46; us: 1.120000 - 6.833000 - 6.793000 -0.046000 Throughput in MB/s 4795.551002 - 4823.789195 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1120 - 6833 - 6790 - 46; us: 1.120000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1120 - 6833 - 6790 - 46; us: 1.120000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1120 - 6833 - 6790 - 46; us: 1.120000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1122 - 6833 - 6790 - 46; us: 1.122000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1121 - 6833 - 6790 - 46; us: 1.121000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1122 - 6833 - 6790 - 46; us: 1.122000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1121 - 6833 - 6790 - 46; us: 1.121000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1121 - 6833 - 6790 - 46; us: 1.121000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1120 - 6833 - 6790 - 46; us: 1.120000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1122 - 6833 - 6790 - 46; us: 1.122000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1121 - 6833 - 6790 - 46; us: 1.121000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1122 - 6833 - 6790 - 46; us: 1.122000 - 6.833000 - 6.790000 -0.046000 Throughput in MB/s 4795.551002 - 4825.920471 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1122 - 6833 - 6799 - 46; us: 1.122000 - 6.833000 - 6.799000 -0.046000 Throughput in MB/s 4795.551002 - 4819.532284 
    
    Test EDMA: Source Addr: 0x10840000 - Destination Addr: 0x0C000000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1139 - 6665 - 6799 - 46; us: 1.139000 - 6.665000 - 6.799000 -0.046000 Throughput in MB/s 4916.429107 - 4819.532284 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1121 - 6665 - 6622 - 46; us: 1.121000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1121 - 6665 - 6622 - 46; us: 1.121000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1122 - 6665 - 6622 - 46; us: 1.122000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1122 - 6665 - 6622 - 46; us: 1.122000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1121 - 6665 - 6622 - 46; us: 1.121000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1121 - 6665 - 6622 - 46; us: 1.121000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1122 - 6665 - 6622 - 46; us: 1.122000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1122 - 6665 - 6622 - 46; us: 1.122000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1122 - 6665 - 6622 - 46; us: 1.122000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    
    Test EDMA: Source Addr: 0x10840000 - Destination Addr: 0x80000000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1141 - 6665 - 6631 - 46; us: 1.141000 - 6.665000 - 6.631000 -0.046000 Throughput in MB/s 4916.429107 - 4941.637762 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1121 - 6665 - 6622 - 46; us: 1.121000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1121 - 6665 - 6622 - 46; us: 1.121000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1122 - 6665 - 6622 - 46; us: 1.122000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1121 - 6665 - 6622 - 46; us: 1.121000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1121 - 6665 - 6622 - 46; us: 1.121000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1122 - 6665 - 6622 - 46; us: 1.122000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1121 - 6665 - 6622 - 46; us: 1.121000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1122 - 6665 - 6622 - 46; us: 1.122000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1120 - 6665 - 6622 - 46; us: 1.120000 - 6.665000 - 6.622000 -0.046000 Throughput in MB/s 4916.429107 - 4948.353972
     
    C6678_Len_4096.txt
    [C66xx_0] 
    DSP Start Testing
    
    Test EDMA: Source Addr: 0x0C000000 - Destination Addr: 0x80000000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1236 - 620 - 574 - 47; us: 1.236000 - 0.620000 - 0.574000 -0.047000 Throughput in MB/s 3303.225806 - 3567.944251 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1124 - 599 - 570 - 51; us: 1.124000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1125 - 599 - 570 - 51; us: 1.125000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1122 - 599 - 570 - 51; us: 1.122000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1126 - 599 - 570 - 51; us: 1.126000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1127 - 599 - 570 - 51; us: 1.127000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1123 - 725 - 570 - 51; us: 1.123000 - 0.725000 - 0.570000 -0.051000 Throughput in MB/s 2824.827586 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1122 - 599 - 570 - 51; us: 1.122000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1125 - 599 - 570 - 51; us: 1.125000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1124 - 599 - 570 - 51; us: 1.124000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1125 - 599 - 570 - 51; us: 1.125000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1123 - 599 - 570 - 51; us: 1.123000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1127 - 599 - 570 - 51; us: 1.127000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1125 - 599 - 570 - 51; us: 1.125000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1125 - 599 - 570 - 51; us: 1.125000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1122 - 599 - 570 - 51; us: 1.122000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    
    Test EDMA: Source Addr: 0x80000000 - Destination Addr: 0x0C000000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1123 - 608 - 570 - 51; us: 1.123000 - 0.608000 - 0.570000 -0.051000 Throughput in MB/s 3368.421053 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1122 - 599 - 570 - 51; us: 1.122000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1127 - 599 - 570 - 51; us: 1.127000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1122 - 599 - 570 - 51; us: 1.122000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1126 - 599 - 570 - 51; us: 1.126000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1124 - 599 - 570 - 51; us: 1.124000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1126 - 599 - 570 - 51; us: 1.126000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1126 - 599 - 570 - 51; us: 1.126000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1126 - 599 - 570 - 51; us: 1.126000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1125 - 599 - 570 - 51; us: 1.125000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1127 - 599 - 570 - 51; us: 1.127000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1126 - 599 - 570 - 51; us: 1.126000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1126 - 599 - 570 - 51; us: 1.126000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1126 - 599 - 570 - 51; us: 1.126000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1123 - 599 - 570 - 51; us: 1.123000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1123 - 599 - 570 - 51; us: 1.123000 - 0.599000 - 0.570000 -0.051000 Throughput in MB/s 3419.031720 - 3592.982456 
    
    Test EDMA: Source Addr: 0x0C000000 - Destination Addr: 0x10840000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1126 - 734 - 696 - 52; us: 1.126000 - 0.734000 - 0.696000 -0.052000 Throughput in MB/s 2790.190736 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1125 - 725 - 699 - 52; us: 1.125000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1123 - 725 - 699 - 52; us: 1.123000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1123 - 725 - 699 - 52; us: 1.123000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1123 - 725 - 699 - 52; us: 1.123000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1126 - 725 - 699 - 52; us: 1.126000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1122 - 725 - 699 - 52; us: 1.122000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1124 - 725 - 699 - 52; us: 1.124000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1123 - 725 - 699 - 52; us: 1.123000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1126 - 725 - 699 - 52; us: 1.126000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1122 - 725 - 699 - 52; us: 1.122000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1122 - 725 - 699 - 52; us: 1.122000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1123 - 725 - 699 - 52; us: 1.123000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1124 - 725 - 699 - 52; us: 1.124000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1122 - 725 - 699 - 52; us: 1.122000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1125 - 725 - 699 - 52; us: 1.125000 - 0.725000 - 0.699000 -0.052000 Throughput in MB/s 2824.827586 - 2929.899857 
    
    Test EDMA: Source Addr: 0x80000000 - Destination Addr: 0x10840000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1131 - 860 - 825 - 52; us: 1.131000 - 0.860000 - 0.825000 -0.052000 Throughput in MB/s 2381.395349 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1126 - 851 - 825 - 52; us: 1.126000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1126 - 851 - 825 - 52; us: 1.126000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1127 - 851 - 825 - 52; us: 1.127000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1124 - 851 - 825 - 52; us: 1.124000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1122 - 851 - 825 - 52; us: 1.122000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1126 - 851 - 825 - 52; us: 1.126000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1124 - 851 - 825 - 52; us: 1.124000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1125 - 851 - 825 - 52; us: 1.125000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1126 - 851 - 825 - 52; us: 1.126000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1126 - 851 - 825 - 52; us: 1.126000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1125 - 851 - 825 - 52; us: 1.125000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1126 - 851 - 825 - 52; us: 1.126000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1123 - 851 - 825 - 52; us: 1.123000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1125 - 851 - 825 - 52; us: 1.125000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1126 - 851 - 825 - 52; us: 1.126000 - 0.851000 - 0.825000 -0.052000 Throughput in MB/s 2406.580494 - 2482.424242 
    
    Test EDMA: Source Addr: 0x10840000 - Destination Addr: 0x0C000000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1129 - 737 - 825 - 52; us: 1.129000 - 0.737000 - 0.825000 -0.052000 Throughput in MB/s 2778.833107 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1122 - 725 - 696 - 52; us: 1.122000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1124 - 725 - 696 - 52; us: 1.124000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1127 - 725 - 696 - 52; us: 1.127000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1125 - 725 - 696 - 52; us: 1.125000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1127 - 725 - 696 - 52; us: 1.127000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1126 - 725 - 696 - 52; us: 1.126000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1124 - 725 - 696 - 52; us: 1.124000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1125 - 725 - 696 - 52; us: 1.125000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1126 - 725 - 696 - 52; us: 1.126000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1124 - 725 - 696 - 52; us: 1.124000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1126 - 725 - 696 - 52; us: 1.126000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1123 - 725 - 696 - 52; us: 1.123000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1125 - 725 - 696 - 52; us: 1.125000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1123 - 725 - 696 - 52; us: 1.123000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1124 - 725 - 696 - 52; us: 1.124000 - 0.725000 - 0.696000 -0.052000 Throughput in MB/s 2824.827586 - 2942.528736 
    
    Test EDMA: Source Addr: 0x10840000 - Destination Addr: 0x80000000 - Len 4096
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1131 - 863 - 825 - 51; us: 1.131000 - 0.863000 - 0.825000 -0.051000 Throughput in MB/s 2373.117034 - 2482.424242 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1127 - 851 - 822 - 52; us: 1.127000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1122 - 851 - 822 - 52; us: 1.122000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1122 - 851 - 822 - 52; us: 1.122000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1124 - 851 - 822 - 52; us: 1.124000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1127 - 851 - 822 - 52; us: 1.127000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1123 - 851 - 822 - 52; us: 1.123000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1123 - 851 - 822 - 52; us: 1.123000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1127 - 851 - 822 - 52; us: 1.127000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1127 - 851 - 822 - 52; us: 1.127000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1122 - 851 - 822 - 52; us: 1.122000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1126 - 851 - 822 - 52; us: 1.126000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1123 - 851 - 822 - 52; us: 1.123000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1125 - 851 - 822 - 52; us: 1.125000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1122 - 851 - 822 - 52; us: 1.122000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1122 - 851 - 822 - 52; us: 1.122000 - 0.851000 - 0.822000 -0.052000 Throughput in MB/s 2406.580494 - 2491.484185
     
    C6678_Len_65536.txt
    [C66xx_0] 
    DSP Start Testing
    
    Test EDMA: Source Addr: 0x0C000000 - Destination Addr: 0x80000000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1237 - 3518 - 3472 - 47; us: 1.237000 - 3.518000 - 3.472000 -0.047000 Throughput in MB/s 9314.383172 - 9437.788018 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1123 - 3503 - 3468 - 51; us: 1.123000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1125 - 3503 - 3468 - 51; us: 1.125000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1127 - 3503 - 3468 - 51; us: 1.127000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1124 - 3503 - 3468 - 51; us: 1.124000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1125 - 3503 - 3468 - 51; us: 1.125000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1125 - 3503 - 3468 - 51; us: 1.125000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1122 - 3503 - 3468 - 51; us: 1.122000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1124 - 3503 - 3468 - 51; us: 1.124000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1126 - 3503 - 3468 - 51; us: 1.126000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1123 - 3503 - 3468 - 51; us: 1.123000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1127 - 3503 - 3468 - 51; us: 1.127000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1124 - 3503 - 3468 - 51; us: 1.124000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1126 - 3503 - 3468 - 51; us: 1.126000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1126 - 3503 - 3468 - 51; us: 1.126000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1126 - 3503 - 3468 - 51; us: 1.126000 - 3.503000 - 3.468000 -0.051000 Throughput in MB/s 9354.267770 - 9448.673587 
    
    Test EDMA: Source Addr: 0x80000000 - Destination Addr: 0x0C000000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0Error: Verification (Source2/Destination2) Failed
    Error: Testing EDMA(0) Ping-Pong Test (Global) Region for Channel 0 FAILED
    
    Test EDMA: Source Addr: 0x0C000000 - Destination Addr: 0x10840000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1116 - 6533 - 6492 - 52; us: 1.116000 - 6.533000 - 6.492000 -0.052000 Throughput in MB/s 5015.766111 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1124 - 6527 - 6495 - 52; us: 1.124000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1127 - 6527 - 6495 - 52; us: 1.127000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1126 - 6527 - 6495 - 52; us: 1.126000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1124 - 6527 - 6495 - 52; us: 1.124000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1125 - 6527 - 6495 - 52; us: 1.125000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1126 - 6527 - 6495 - 52; us: 1.126000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1125 - 6527 - 6495 - 52; us: 1.125000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1124 - 6527 - 6495 - 52; us: 1.124000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1125 - 6527 - 6495 - 52; us: 1.125000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1122 - 6527 - 6495 - 52; us: 1.122000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1126 - 6527 - 6495 - 52; us: 1.126000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1122 - 6527 - 6495 - 52; us: 1.122000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1127 - 6527 - 6495 - 52; us: 1.127000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1125 - 6527 - 6495 - 52; us: 1.125000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1124 - 6527 - 6495 - 52; us: 1.124000 - 6.527000 - 6.495000 -0.052000 Throughput in MB/s 5020.376896 - 5045.111624 
    
    Test EDMA: Source Addr: 0x80000000 - Destination Addr: 0x10840000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1132 - 6665 - 6621 - 52; us: 1.132000 - 6.665000 - 6.621000 -0.052000 Throughput in MB/s 4916.429107 - 4949.101344 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1123 - 6653 - 6618 - 52; us: 1.123000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1125 - 6653 - 6618 - 52; us: 1.125000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1127 - 6653 - 6618 - 52; us: 1.127000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1123 - 6653 - 6618 - 52; us: 1.123000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1123 - 6653 - 6618 - 52; us: 1.123000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1124 - 6653 - 6618 - 52; us: 1.124000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1122 - 6653 - 6618 - 52; us: 1.122000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1127 - 6653 - 6618 - 52; us: 1.127000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1127 - 6653 - 6618 - 52; us: 1.127000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1124 - 6653 - 6618 - 52; us: 1.124000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1126 - 6653 - 6618 - 52; us: 1.126000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1124 - 6653 - 6618 - 52; us: 1.124000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1126 - 6653 - 6618 - 52; us: 1.126000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1127 - 6653 - 6618 - 52; us: 1.127000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1123 - 6653 - 6618 - 52; us: 1.123000 - 6.653000 - 6.618000 -0.052000 Throughput in MB/s 4925.296859 - 4951.344817 
    
    Test EDMA: Source Addr: 0x10840000 - Destination Addr: 0x0C000000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1129 - 6539 - 6621 - 52; us: 1.129000 - 6.539000 - 6.621000 -0.052000 Throughput in MB/s 5011.163787 - 4949.101344 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1127 - 6527 - 6492 - 52; us: 1.127000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1126 - 6527 - 6492 - 52; us: 1.126000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1124 - 6527 - 6492 - 52; us: 1.124000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1123 - 6527 - 6492 - 52; us: 1.123000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1126 - 6527 - 6492 - 52; us: 1.126000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1123 - 6527 - 6492 - 52; us: 1.123000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1122 - 6527 - 6492 - 52; us: 1.122000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1123 - 6527 - 6492 - 52; us: 1.123000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1124 - 6527 - 6492 - 52; us: 1.124000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1123 - 6527 - 6492 - 52; us: 1.123000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1122 - 6527 - 6492 - 52; us: 1.122000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1124 - 6527 - 6492 - 52; us: 1.124000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1124 - 6527 - 6492 - 52; us: 1.124000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1127 - 6527 - 6492 - 52; us: 1.127000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1124 - 6527 - 6492 - 52; us: 1.124000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    
    Test EDMA: Source Addr: 0x10840000 - Destination Addr: 0x80000000 - Len 65536
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 0 - Passed - Time Cnt: 1131 - 6539 - 6492 - 52; us: 1.131000 - 6.539000 - 6.492000 -0.052000 Throughput in MB/s 5011.163787 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 1 - Passed - Time Cnt: 1125 - 6527 - 6492 - 52; us: 1.125000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 2 - Passed - Time Cnt: 1122 - 6527 - 6492 - 52; us: 1.122000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 3 - Passed - Time Cnt: 1125 - 6527 - 6492 - 52; us: 1.125000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 4 - Passed - Time Cnt: 1124 - 6527 - 6492 - 52; us: 1.124000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 5 - Passed - Time Cnt: 1123 - 6527 - 6492 - 52; us: 1.123000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 6 - Passed - Time Cnt: 1124 - 6527 - 6492 - 52; us: 1.124000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 7 - Passed - Time Cnt: 1124 - 6527 - 6492 - 52; us: 1.124000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 8 - Passed - Time Cnt: 1127 - 6527 - 6492 - 52; us: 1.127000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 9 - Passed - Time Cnt: 1123 - 6527 - 6492 - 52; us: 1.123000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 10 - Passed - Time Cnt: 1126 - 6527 - 6492 - 52; us: 1.126000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 11 - Passed - Time Cnt: 1122 - 6527 - 6492 - 52; us: 1.122000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 12 - Passed - Time Cnt: 1126 - 6527 - 6492 - 52; us: 1.126000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 13 - Passed - Time Cnt: 1122 - 6527 - 6492 - 52; us: 1.122000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 14 - Passed - Time Cnt: 1125 - 6527 - 6492 - 52; us: 1.125000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    Testing EDMA(0) Ping-Pong Test Global Region for Channel 15 - Passed - Time Cnt: 1124 - 6527 - 6492 - 52; us: 1.124000 - 6.527000 - 6.492000 -0.052000 Throughput in MB/s 5020.376896 - 5047.443007 
    

  • Hi,

    I update my findings here:

    1. Why my yesterday's C6678 2048 bytes EDMA is slower than yours? (Mine is ~900, your is ~700)

    Your code is CSL level code, so I have to link with a CSL library to build the application. Yesterday when I built K2H, I linked with the  pdk_k2hk_4_0_16\packages\ti\csl\lib\k2h\c66\release\ti.csl.ae66, then I used the same binary to run on K2H and C6678. I got the similar results (~900).

    Today, I linked the C6678 application with pdk_c667x_2_0_16\packages\ti\csl\lib\c6678\c66\release\ti.csl.ae66, I also got the same ~700 numbers as yours.

    I also thought EDMA part code K2H is a super-set of C6678 and the library should be interchange-able. It looks that I am wrong. So I assume you used respective CSL libraries for C6678 and K2H.

    Now our numbers are aligned. For 2048 bytes, C6678 is ~700, K2H is ~900. For 32768 bytes, both are ~6600. The test is based on your code linked with respective CSL library.

    If your test case is standalone, would you be able to use the K2H CSL library application running on C6678 to confirm my finding? I assume that when you moved to K2H later, you have must to use the CSL library for maximum code re-use. 

    Regards, Eric

  • Hi,

    2. Why K2H is slower than C6678 for 2048 bytes?

    I wrote a bare-metal code here and attached:

    • The code is pure EDMA register level programing so I don't need any libraries to link with.
    • The only thing I have to reply on CSL is a header file #include <ti/csl/csl_cacheAux.h>, that is for cache coherency to verify the EDMA DST==SRC or not. If you don't care about data correctness or totally disable the cache, such include is not needed.
    • I have a outer loop for different EDMA channel controller and Transfer controller. I mapped paramSet 0, 1, 2, 3, .... to DMA Chanel 0, 1, 2, 3..... As you test always use EDMA 0, channel 0, you don't have to change it.
    • Then I have an inner loop for different size, like 1024, 2048, 4096, .... 
    • Further inner loop for different SRC and DST, to match your 6 test cases. 
    • The code has #define C6678 or K2H in the beginning, that is only related for K2H has additional EDMA CC3 and CC4, CPU is 983MHz vs 1GHz. You can just use the same binary for test given you only use EDMA CC0.  

    This is a simple EDMA test code for your reference purpose. It is not intended for any production.

    On C6678, 

    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte): 2048, Cycles: 686, throughput: 2847.12 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte): 2048, Cycles: 686, throughput: 2847.12 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte): 2048, Cycles: 686, throughput: 2847.12 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte): 2048, Cycles: 686, throughput: 2847.12 MB/s ... Verify Pass

    On K2H:

    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte): 2048, Cycles: 707, throughput: 2762.55 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte): 2048, Cycles: 776, throughput: 2516.91 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte): 2048, Cycles: 706, throughput: 2766.47 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte): 2048, Cycles: 705, throughput: 2770.39 MB/s ... Verify Pass

    That is ~3% different. 

    If you can confirm the number with my bare metal code, ~700 cycles for both. Then the K2H CSL library has problem to look into. Attached is my code and linker (everything in core 0 L2)

    Regards, Eric

     

    2570.edma.c
    #include <stdio.h>
    #include <stdint.h>
    #include <stdlib.h>
    #include <c6x.h>
    #include <ti/csl/csl_cacheAux.h>
    
    #define DEVICE_REG32_W(x,y)   *(volatile unsigned int *)(x)=(y)
    #define DEVICE_REG32_R(x)    (*(volatile unsigned int *)(x))
    
    unsigned int DMA_SRC[6] = { 0x0C000000, 0x80000000, 0x0C000000, 0x80000000, 0x14840000, 0x14840000 };
    unsigned int DMA_DST[6] = { 0x80000000, 0x0C000000, 0x14840000, 0x14840000, 0x0C000000, 0x80000000 };
    unsigned int overhead = 0;
    
    #define CACHE_FENCE_WAIT                        ((uint32_t) 2U)
    
    /*******************************************************************************************************
     C6678 Data Sheet
    
     Table 7-33 EDMA3 Channel Controller Configuration
     	 	 	 	  EDMA3 CC0 EDMA3 CC1 EDMA3 CC2
     No# channels     16        64        64
    
     Table 7-34 EDMA3 Transfer Controller Configuration
     	 	 	 EDMA3 CC0    EDMA3 CC1               EDMA3 CC2
     	 	 	 TC0   TC1    TC0   TC1  TC2   TC3    TC0   TC1  TC2  TC3
     FIFOSIZE    1024  1024   1024  512  1024  512    1024  512  512  1024
     BUSWIDTH    32    32     16    16   16    16     16    16   16   16
     DSTREGDEPTH 4     4      4     4    4     4      4     4    4    4
     DBS         128   128    128   64   128   64     128   64   64   128
     ********************************************************************************************************/
    
    /********************************************************************************************************
     66AK2H12/14 Data Sheet
    
     Table 6-32 EDMA3 Channel Controller Configuration
     	 	 	 	  EDMA3 CC0 EDMA3 CC1 EDMA3 CC2 EDMA3 CC3 EDMA3 CC4
     No# channels     64        64        64        64        64
    
     Table 6-33 EDMA3 Transfer Controller Configuration
     	 	 	 EDMA3 CC0    EDMA3 CC1                EDMA3 CC2				EDMA3 CC3       EDMA3 CC4
     	 	 	 TC0   TC1    TC0   TC1   TC2   TC3    TC0   TC1   TC2   TC3    TC0   TC1       TC0   TC1
     FIFOSIZE    1024  1024   1024  1024  1024  1024   1024  1024  1024  1024	1024  1024 		1024  1024
     BUSWIDTH    32    32     16    16    16    16     16    16    16    16     16    16        32    32
     DSTREGDEPTH 4     4      4     4     4     4      4     4     4     4      4     4         4     4
     DBS         128   128    128   128   128   128    128   128   128   128    64    64        128   128
     **********************************************************************************************************/
    
    /**********************************************************************************************************
     * User configurable */
    
    /* Can only define one of the SOC */
    #define C6678
    //#define K2H
    
    #ifdef C6678
    #define CPU_HZ 1000000000   //1GHz 
    #define N      2            
    #endif
    
    #ifdef K2H
    #define CPU_HZ  983040000   //983.04MHz
    #define N       2           
    #endif
    
    unsigned int EDMA_CC_BASE_ADDRESS[5] = {
    			0x02700000,
    			0x02720000,
    			0x02740000,
    #ifdef C6678
    			0x00000000,
    			0x00000000
    #endif
    #ifdef K2H
    			0x02728000,
    			0x02708000
    #endif
    };
    
    unsigned int EDMA_TC_BASE_ADDRESS[14] = {
    			0x02760000,
    			0x02768000,
    			0x02770000,
    			0x02778000,
    			0x02780000,
    			0x02788000,
    			0x02790000,
    			0x02798000,
    			0x027A0000,
    			0x027A8000,
    #ifdef C6678
                0x00000000,
    			0x00000000,
    			0x00000000,
    			0x00000000
    #endif
    #ifdef K2H
                0x027B0000,
    			0x027B8000,
    			0x027B8400,
    			0x027B8800
    #endif
    };
    
    #define DCHMAP(n)                    (0x0100 + 4*n)     /* 0 .... 63 */
    #define DMAQNUM(n)                   (0x0240 + 4*n)     /* 0 .... 7 */
    #define QUEPRI                       0x0284
    #define EMR                          0x0300
    #define EMRH                         0x0304
    #define EMCR                         0x0308
    #define EMCRH                        0x030C
    #define CCERRCLR                     0x031C
    
    #define ER                           0x1000
    #define ERH                          0x1004
    #define ECR                          0x1008
    #define ECRH                         0x100C
    #define ESR                          0x1010
    #define ESRH                         0x1014
    #define EER                          0x1020
    #define EERH                         0x1024
    #define EECR                         0x1028
    #define EECRH                        0x102C
    #define EESR                         0x1030
    #define EESRH                        0x1034
    
    #define IER                          0x1050
    #define IERH                         0x1054
    #define IECR                         0x1058
    #define IECRH                        0x105C
    #define IESR                         0x1060
    #define IESRH                        0x1064
    #define IPR                          0x1068
    #define IPRH                         0x106C
    #define ICR                          0x1070
    #define ICRH                         0x1074
    
    #define PARAM_OPT(n)                  (0x4000 + 0x20*n)
    #define PARAM_SRC(n)                  (0x4004 + 0x20*n)
    #define PARAM_A_B_CNT(n)              (0x4008 + 0x20*n)
    #define PARAM_DST(n)                  (0x400C + 0x20*n)
    #define PARAM_SRC_DST_BIDX(n)         (0x4010 + 0x20*n)
    #define PARAM_LINK_BCNTRLD(n)         (0x4014 + 0x20*n)
    #define PARAM_SRC_DST_CIDX(n)         (0x4018 + 0x20*n)
    #define PARAM_CCNT(n)                 (0x401C + 0x20*n)
    
    #define RDRATE                       0x0140 
    
    volatile unsigned int counter = 0;
    #define L1DCFG                       0x01840040
    #define L1PCFG                       0x01840020
    #define L2CFG                        0x01840000
    #define MAR(n)                      (0x01848000 + 0x4*n)
    
    void cache_setup()
    {
        unsigned int i, temp;
    
        DEVICE_REG32_W(L1PCFG, 4); /*L1P 32KB cache */
        DEVICE_REG32_W(L1DCFG, 4); /*L1D 32KB cache */
    
        DEVICE_REG32_W(L2CFG, 4); /*L2 256KB cache */
    
        /* Make whole DDR non-cacheable and non-prefetchable */
        for (i = 128; i < 256; i++)
        {
            temp = DEVICE_REG32_R(MAR(i));
            //DEVICE_REG32_W(MAR(i), temp & 0xFFFFFFF6);
    		DEVICE_REG32_W(MAR(i), temp | 0xD);
        }
    }
    
    void edmaInit(unsigned int CC)
    {
        unsigned int i, edmaBase;
    
        edmaBase = EDMA_CC_BASE_ADDRESS[CC];
    
        if (edmaBase == 0)
        {
            printf("Wrong EDMA base address\n");
            return;
        }
    
    #ifdef C6678
        if (CC == 0)
        {
            for (i = 0; i < 2; i++)
            {
                DEVICE_REG32_W(edmaBase + DMAQNUM(i), 0x10101010);
            }
        }
        else
        {
            for (i = 0; i < 8; i++)
            {
                DEVICE_REG32_W(edmaBase + DMAQNUM(i), 0x32103210);
            }
        }
    #endif
    
    #ifdef K2H
        if (CC == 0 || CC == 3 || CC == 4)
        {
            for (i = 0; i < 8; i++)
            {
                DEVICE_REG32_W(edmaBase + DMAQNUM(i), 0x10101010);
            }
        }
        else
        {
            for (i = 0; i < 8; i++)
            {
                DEVICE_REG32_W(edmaBase + DMAQNUM(i), 0x32103210);
            }
        }
    #endif
    
        /* Clear the interrupt enable for all Channels (IER). */
        DEVICE_REG32_W(edmaBase + IECR, 0xFFFFFFFF);
        DEVICE_REG32_W(edmaBase + IECRH, 0xFFFFFFFF);
    
        /* Clear any pending interrupt (IPR). */
        DEVICE_REG32_W(edmaBase + ICR, 0xFFFFFFFF);
        DEVICE_REG32_W(edmaBase + ICRH, 0xFFFFFFFF);
    
        /* Clear any missed event (EMR). */
        DEVICE_REG32_W(edmaBase + EMCR, 0xFFFFFFFF);
        DEVICE_REG32_W(edmaBase + EMCRH, 0xFFFFFFFF);
    
        /* Clear any EDMA3CC Error (EMR). */
        DEVICE_REG32_W(edmaBase + CCERRCLR, 0xFFFFFFFF);
    
        /* Clear any event (ER). */
        DEVICE_REG32_W(edmaBase + ECR, 0xFFFFFFFF);
        DEVICE_REG32_W(edmaBase + ECRH, 0xFFFFFFFF);
    
        /* Clear any enabled event (EER). */
        DEVICE_REG32_W(edmaBase + EECR, 0xFFFFFFFF);
        DEVICE_REG32_W(edmaBase + EECRH, 0xFFFFFFFF);
    
        /* Set the interrupt enable for all Channels (IER) */
        DEVICE_REG32_W(edmaBase + IESR, 0xFFFFFFFF);
        DEVICE_REG32_W(edmaBase + IESRH, 0xFFFFFFFF);
    }
    
    void paramConfig(unsigned int CC, unsigned int PaRAM_index, unsigned int src,
                     unsigned int dst, unsigned int size, unsigned int ACNTSize)
    {
        unsigned int tmp, edmaBase;
    
        edmaBase = EDMA_CC_BASE_ADDRESS[CC];
    
        if (edmaBase == 0)
        {
            printf("Wrong EDMA base address\n");
            return;
        }
    	
        /* Map PaRAM set to DMA channel, ParamSet 0, 1, 2, 3 ... to EDMA channel 0, 1, 2, 3 ... */
        DEVICE_REG32_W(edmaBase + DCHMAP(PaRAM_index), PaRAM_index << 5);
    
        /* Populate the Param entry, AB sync, static, TCC for interrupt */
        DEVICE_REG32_W(edmaBase + PARAM_OPT(PaRAM_index), 0x0010000C + PaRAM_index * 0x1000);
    
        DEVICE_REG32_W(edmaBase + PARAM_SRC(PaRAM_index), src);
    
        /* Calculate the A & B count */
        if (size > ACNTSize)
        {
            tmp = size / ACNTSize;
            size -= (tmp * ACNTSize);
            tmp <<= 16;
            tmp |= ACNTSize;
        }
        else
        {
            tmp = 0x10000 | size;
        }
    
        DEVICE_REG32_W(edmaBase + PARAM_A_B_CNT(PaRAM_index), tmp);
        DEVICE_REG32_W(edmaBase + PARAM_DST(PaRAM_index), dst);
    
        DEVICE_REG32_W(edmaBase + PARAM_SRC_DST_BIDX(PaRAM_index), ((ACNTSize << 16) | ACNTSize));
        DEVICE_REG32_W(edmaBase + PARAM_LINK_BCNTRLD(PaRAM_index), 0xFFFF);
        DEVICE_REG32_W(edmaBase + PARAM_SRC_DST_CIDX(PaRAM_index), 0x0);
    
        /* C Count is set to 1 since mostly size will not be more than 1.75GB */
        DEVICE_REG32_W(edmaBase + PARAM_CCNT(PaRAM_index), 0x1);
    
    #ifdef DEBUG_PRINTF
        printf("CC: %d, TC: %d, ACNT: %d, BCNT: %d \n", CC, PaRAM_index, tmp&0xffff, (tmp&0xffff0000)>>16);
    #endif
    }
    
    uint32_t edmaESR(unsigned int CC, unsigned int PaRAM_index)
    {
        /* Set the event set register. */
        unsigned int tmp, bits, edmaBase, stamp1, delta;
    
        edmaBase = EDMA_CC_BASE_ADDRESS[CC];
    
        if (edmaBase == 0)
        {
            printf("Wrong EDMA base address\n");
            return 0;
        }
    
        bits = 0x1 << PaRAM_index;
    	
    	stamp1 =  TSCL;
        DEVICE_REG32_W(edmaBase + ESR, bits);
    
        /* wait for current DMA to finish. */
        while (1)
        {
            tmp = DEVICE_REG32_R(edmaBase + IPR);
            if ((tmp & bits) == bits)
            {
                delta = TSCL - stamp1 - overhead;
    			DEVICE_REG32_W(edmaBase + ICR, bits);
                break;
            }
        }
    
        return delta;
    }
    
    int main(void)
    {
        uint32_t i, j, k, m, cycle;
        uint32_t size;     //bytes for EDMA transfer */
        uint32_t v1, v2;
        float throughput;
    
    #ifdef C6678
        uint32_t CC[N] = {0, 0};
        uint32_t ParamSet[N] = {0, 1};
    #endif
    
    #if K2H
        uint32_t CC[N] = {0, 0};
        uint32_t ParamSet[N] = {0, 1};
    #endif
    
        TSCL = 0;
    	v1 = TSCL;
    	v2 = TSCL;
    	overhead = v2 - v1;
    	
    	printf("Cycle counter access overhead: %d cycles\n", overhead);
    
        if (DNUM == 0)
        {
            edmaInit(0);
            edmaInit(1);
            edmaInit(2);
    
    #ifdef K2H	
            edmaInit(3);
            edmaInit(4);
    #endif	
        }
    
        cache_setup();
    	
    	for (m = 0; m < N; m++)
        {
            size = 1024;
    		for (j = 0; j < 7; j++)   //To increase test size
            {
                for (k = 2; k < 6; k++)  //To change SRC and DST
                {
                    /* put some test pattern */
                    v1 = rand() + DNUM;
    
                    for (i = 0; i < size; i += 4)
                    {
                        DEVICE_REG32_W(DMA_SRC[k] + i, (v1 | (v1 << 16)));
                        DEVICE_REG32_W(DMA_DST[k] + i, 0);
                    }
    
                    CACHE_wbInvL1d((void*)DMA_SRC[k], size, CACHE_FENCE_WAIT);
                    CACHE_wbInvL2((void*)DMA_SRC[k], size, CACHE_FENCE_WAIT);
    
                    printf("EDMA test with CC: %d, Channel: %d, SRC: 0x%08x, DST: 0x%08x, Size (byte): %8d, ",
                           CC[m], ParamSet[m], DMA_SRC[k], DMA_DST[k], size);
    
                    /* Write the pattern */
                    paramConfig(CC[m], ParamSet[m], DMA_SRC[k], DMA_DST[k], size, 1024);
    
                    /* Trigger transfer */
                    cycle = edmaESR(CC[m], ParamSet[m]);
                    throughput = (size * 1.0) / 1024 / 1024 * CPU_HZ / cycle;
    
                    printf("Cycles: %d, throughput: %7.2f MB/s", cycle, throughput);
    
                    /* Then you can compare */
    				
    				uint32_t key;
      			    /* Disable Interrupts */
    				key = _disable_interrupts();
    
    				/*  Cleanup the prefetch buffer also. */
    				CSL_XMC_invalidatePrefetchBuffer();
    
    				CACHE_invL1d ((void*)DMA_DST[k], size, CACHE_FENCE_WAIT);
    				CACHE_invL2  ((void*)DMA_DST[k], size, CACHE_FENCE_WAIT);
    
    				/* Reenable Interrupts. */
    				_restore_interrupts(key);
    
    #if 1
                    for (i = 0; i < size; i += 4)
                    {
                        v1 = DEVICE_REG32_R(DMA_SRC[k] + i);
                        v2 = DEVICE_REG32_R(DMA_DST[k] + i);
                        if (v1 != v2)
                        {
                            printf("DDR Fail expect [%08X]: 0x%08lX, readback [%08X]: 0x%08lX\n",
                                   DMA_SRC[k] + i, v1, DMA_SRC[k] + i, v2);
                            return -1;
                        }
                    }
    #endif
                    printf(" ... Verify Pass\n");
                }
                size *= 2;
            }
        }
    
        printf("=================================================================\n");
        return 0;
    }
    
    edma.cmd

  • 3. Why C6678 DDR3<=====>MSMC is faster than K2H?

    I tested, this is only true for C6678 EDMA CC0, TC0 and TC1. For other EDMA CCx and TCx, the throughput is normal. The highlighted may explain this but not a quantitative way in C6678:

    For K2H, CC0 looks to be the same as CC0 in C6678, but the throughput is normal. 

    I don't have a better explanation of this - what interconnection difference causes this? As you move data between L2 and DDR or MSMC, could we write this down as a note if you want better throughput between MSMC and DDR3A on C6678, please consider using EDMA CC0?

    4. For the test error?

    This comes from data verification. I noticed the failure from time to time. I didn't debug much into your code. You may print out both contents of the source and destination to understand what address failed. Then, look into the CCS memory view with L1D, L2 box checked and unchecked to see what in the cache and what in the physical memory.

    I felt you missed cache_wbinv() in the code for the source buffer. The CPU prepared/wrote the data, but it is inside the cache. EDMA move the physical data, not cache. In the code I shared with you, I have:

    CACHE_wbInvL1d((void*)DMA_SRC[k], size, CACHE_FENCE_WAIT);
    CACHE_wbInvL2((void*)DMA_SRC[k], size, CACHE_FENCE_WAIT);

    Regards, Eric 

  • Hi,

    For 2, "If you can confirm the number with my bare metal code, ~700 cycles for both. Then the K2H CSL library has problem to look into." ======> I used the C6678 binary (linked with C6678 CSL) run on K2H, I saw the number dropped to ~700. So definitely K2H CSL library caused this. 

    There is only two API calls affecting the time benchmarking:

    • CSL_edma3HwChannelControl
    • CSL_edma3GetHwStatus

    How soon you can set the ESR bit and how fast you can pull the IPR bit. I compared the source for both functions on K2H and C6678, there is no difference. 

    However, C6678 CC0 has 16 DMA channels, 

    K2H has 64:

    This results in additional code execution in K2H CSL:

    case CSL_EDMA3_QUERY_INTRPEND:
    {
    CSL_Edma3Obj* ptrEdma3Obj = (CSL_Edma3Obj *)hMod;

    /* Get the low pending interrupts. */
    CSL_edma3GetLoPendingInterrupts(hMod,((CSL_Edma3CmdIntr*)response)->region,
    &((CSL_Edma3CmdIntr*)response)->intr);

    /* Get the high pending interrupts only if they are supported */
    if (ptrEdma3Obj->cfgInfo.numINTChannel > 31)
    {
    CSL_edma3GetHiPendingInterrupts(hMod, ((CSL_Edma3CmdIntr*)response)->region,
    &((CSL_Edma3CmdIntr*)response)->intrh);
    }
    else
    {
    /* Reset the high pending interrupts to 0. */
    ((CSL_Edma3CmdIntr*)response)->intrh = 0;
    }
    break;

    That can explain the additional cycles as it also needs to read high channels, some extra overhead. Perhaps, you can directly pull the IPR register since you know which EDMA CC and channels are used, to replace the CSL call?

    Regards, Eric

  • Hi Eric,

    I change the CSL for 66AK2H project to be as below:

    But I still see the result is not improved. Do I miss any step?

    For your program, I try to run it with my existing project (just replace the source file, keep all the project setting to be the same), I still see the large different on the 2 processor. Can you advice how you test the provided program that has similar result in 2 processor? My test result is as below:

    Test_66AK2H.txt
    [C66xx_0] Cycle counter access overhead: 1 cycles
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     1024, Cycles: 502, throughput: 1912.35 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     1024, Cycles: 610, throughput: 1573.77 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     1024, Cycles: 502, throughput: 1912.35 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     1024, Cycles: 556, throughput: 1726.62 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     2048, Cycles: 664, throughput: 2891.57 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     2048, Cycles: 772, throughput: 2487.05 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     2048, Cycles: 664, throughput: 2891.57 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     2048, Cycles: 880, throughput: 2181.82 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1042, throughput: 3685.22 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1150, throughput: 3339.13 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     4096, Cycles: 1096, throughput: 3503.65 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     4096, Cycles: 1096, throughput: 3503.65 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1852, throughput: 4146.87 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1906, throughput: 4029.38 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     8192, Cycles: 1852, throughput: 4146.87 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     8192, Cycles: 1852, throughput: 4146.87 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3364, throughput: 4565.99 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3472, throughput: 4423.96 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    16384, Cycles: 3364, throughput: 4565.99 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):    16384, Cycles: 3418, throughput: 4493.86 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6442, throughput: 4768.71 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6550, throughput: 4690.08 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    32768, Cycles: 6442, throughput: 4768.71 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):    32768, Cycles: 6496, throughput: 4729.06 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12598, throughput: 4876.96 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12706, throughput: 4835.51 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    65536, Cycles: 12598, throughput: 4876.96 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):    65536, Cycles: 12652, throughput: 4856.15 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     1024, Cycles: 502, throughput: 1912.35 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     1024, Cycles: 556, throughput: 1726.62 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     1024, Cycles: 502, throughput: 1912.35 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     1024, Cycles: 556, throughput: 1726.62 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     2048, Cycles: 664, throughput: 2891.57 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     2048, Cycles: 1312, throughput: 1463.41 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     2048, Cycles: 664, throughput: 2891.57 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     2048, Cycles: 718, throughput: 2674.09 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1042, throughput: 3685.22 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1150, throughput: 3339.13 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     4096, Cycles: 1096, throughput: 3503.65 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     4096, Cycles: 1096, throughput: 3503.65 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1852, throughput: 4146.87 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1906, throughput: 4029.38 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     8192, Cycles: 1852, throughput: 4146.87 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     8192, Cycles: 1906, throughput: 4029.38 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3364, throughput: 4565.99 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3472, throughput: 4423.96 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    16384, Cycles: 3364, throughput: 4565.99 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):    16384, Cycles: 3418, throughput: 4493.86 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6442, throughput: 4768.71 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6766, throughput: 4540.35 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    32768, Cycles: 6442, throughput: 4768.71 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):    32768, Cycles: 6496, throughput: 4729.06 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12598, throughput: 4876.96 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12706, throughput: 4835.51 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    65536, Cycles: 12598, throughput: 4876.96 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):    65536, Cycles: 13678, throughput: 4491.88 MB/s ... Verify Pass
    =================================================================
    
    Test_C6678.txt
    [C66xx_0] Cycle counter access overhead: 1 cycles
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     1024, Cycles: 428, throughput: 2281.69 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     1024, Cycles: 495, throughput: 1972.85 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     1024, Cycles: 426, throughput: 2292.40 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     1024, Cycles: 495, throughput: 1972.85 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     2048, Cycles: 633, throughput: 3085.51 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     2048, Cycles: 702, throughput: 2782.23 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     2048, Cycles: 633, throughput: 3085.51 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     2048, Cycles: 702, throughput: 2782.23 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1047, throughput: 3730.90 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1047, throughput: 3730.90 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     4096, Cycles: 1047, throughput: 3730.90 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     4096, Cycles: 1047, throughput: 3730.90 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1806, throughput: 4325.86 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1875, throughput: 4166.67 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     8192, Cycles: 1806, throughput: 4325.86 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     8192, Cycles: 1806, throughput: 4325.86 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3324, throughput: 4700.66 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3462, throughput: 4513.29 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    16384, Cycles: 3324, throughput: 4700.66 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):    16384, Cycles: 3393, throughput: 4605.07 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6429, throughput: 4860.79 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6498, throughput: 4809.17 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    32768, Cycles: 6429, throughput: 4860.79 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):    32768, Cycles: 6429, throughput: 4860.79 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12570, throughput: 4972.16 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12639, throughput: 4945.01 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    65536, Cycles: 12570, throughput: 4972.16 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):    65536, Cycles: 12570, throughput: 4972.16 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     1024, Cycles: 426, throughput: 2292.40 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     1024, Cycles: 495, throughput: 1972.85 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     1024, Cycles: 426, throughput: 2292.40 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     1024, Cycles: 495, throughput: 1972.85 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     2048, Cycles: 633, throughput: 3085.51 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     2048, Cycles: 702, throughput: 2782.23 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     2048, Cycles: 633, throughput: 3085.51 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     2048, Cycles: 702, throughput: 2782.23 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1047, throughput: 3730.90 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1116, throughput: 3500.22 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     4096, Cycles: 1047, throughput: 3730.90 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     4096, Cycles: 1047, throughput: 3730.90 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1806, throughput: 4325.86 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1875, throughput: 4166.67 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     8192, Cycles: 1806, throughput: 4325.86 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     8192, Cycles: 1806, throughput: 4325.86 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3324, throughput: 4700.66 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3393, throughput: 4605.07 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    16384, Cycles: 3324, throughput: 4700.66 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):    16384, Cycles: 3393, throughput: 4605.07 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6429, throughput: 4860.79 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6429, throughput: 4860.79 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    32768, Cycles: 6429, throughput: 4860.79 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):    32768, Cycles: 6429, throughput: 4860.79 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12570, throughput: 4972.16 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12639, throughput: 4945.01 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    65536, Cycles: 12570, throughput: 4972.16 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):    65536, Cycles: 12570, throughput: 4972.16 MB/s ... Verify Pass
    =================================================================
    

    Thanks a lot.

  • Hi,

    You did what I asked to do, I am not sure why the results are different.

    I attached my CCS project, it also has a binary file built today, I used this file to re-run on C6678 EVM and K2H EVM and I also attached results. I didn't do anything special to build the project. Both test were on TI EVM in no-boot mode and with the default GEL file for SOC initialization. 

    Are you able to load and run standalone without your other codes? And if the results are different, can you run a few more times?

    Regards, Eric 

    K2H_0601.log
    [C66xx_0] Cycle counter access overhead: 2 cycles
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     1024, Cycles: 498, throughput: 1960.97 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     1024, Cycles: 567, throughput: 1722.33 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     1024, Cycles: 500, throughput: 1953.13 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     1024, Cycles: 499, throughput: 1957.04 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     2048, Cycles: 707, throughput: 2762.55 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     2048, Cycles: 775, throughput: 2520.16 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     2048, Cycles: 706, throughput: 2766.47 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     2048, Cycles: 705, throughput: 2770.39 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1119, throughput: 3490.84 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1189, throughput: 3285.32 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     4096, Cycles: 1119, throughput: 3490.84 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     4096, Cycles: 1121, throughput: 3484.61 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1879, throughput: 4157.80 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1948, throughput: 4010.52 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     8192, Cycles: 1880, throughput: 4155.58 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     8192, Cycles: 1948, throughput: 4010.52 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3397, throughput: 4599.65 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):    16384, Cycles: 4431, throughput: 3526.29 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    16384, Cycles: 3398, throughput: 4598.29 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):    16384, Cycles: 3397, throughput: 4599.65 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6433, throughput: 4857.76 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):    32768, Cycles: 7743, throughput: 4035.90 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    32768, Cycles: 6501, throughput: 4806.95 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):    32768, Cycles: 6503, throughput: 4805.47 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12575, throughput: 4970.18 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):    65536, Cycles: 13679, throughput: 4569.05 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    65536, Cycles: 12643, throughput: 4943.45 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):    65536, Cycles: 13194, throughput: 4737.00 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     1024, Cycles: 500, throughput: 1953.13 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     1024, Cycles: 567, throughput: 1722.33 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     1024, Cycles: 500, throughput: 1953.13 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     1024, Cycles: 499, throughput: 1957.04 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     2048, Cycles: 707, throughput: 2762.55 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     2048, Cycles: 774, throughput: 2523.42 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     2048, Cycles: 706, throughput: 2766.47 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     2048, Cycles: 705, throughput: 2770.39 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1121, throughput: 3484.61 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1190, throughput: 3282.56 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     4096, Cycles: 1119, throughput: 3490.84 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     4096, Cycles: 1121, throughput: 3484.61 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1879, throughput: 4157.80 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1948, throughput: 4010.52 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     8192, Cycles: 1880, throughput: 4155.58 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     8192, Cycles: 1879, throughput: 4157.80 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3398, throughput: 4598.29 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3466, throughput: 4508.08 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    16384, Cycles: 3398, throughput: 4598.29 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):    16384, Cycles: 3397, throughput: 4599.65 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6433, throughput: 4857.76 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6779, throughput: 4609.82 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    32768, Cycles: 6501, throughput: 4806.95 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):    32768, Cycles: 6503, throughput: 4805.47 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12573, throughput: 4970.97 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12711, throughput: 4917.00 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    65536, Cycles: 12643, throughput: 4943.45 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):    65536, Cycles: 12642, throughput: 4943.84 MB/s ... Verify Pass
    =================================================================
    

    C6678_0601.log
    [C66xx_0] Cycle counter access overhead: 2 cycles
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     1024, Cycles: 434, throughput: 2250.14 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     1024, Cycles: 518, throughput: 1885.26 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     1024, Cycles: 434, throughput: 2250.14 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     1024, Cycles: 518, throughput: 1885.26 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     2048, Cycles: 686, throughput: 2847.12 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     2048, Cycles: 686, throughput: 2847.12 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     2048, Cycles: 686, throughput: 2847.12 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     2048, Cycles: 686, throughput: 2847.12 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1022, throughput: 3822.16 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1106, throughput: 3531.87 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     4096, Cycles: 1022, throughput: 3822.16 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     4096, Cycles: 1106, throughput: 3531.87 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1778, throughput: 4393.98 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1862, throughput: 4195.76 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     8192, Cycles: 1778, throughput: 4393.98 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):     8192, Cycles: 1862, throughput: 4195.76 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3374, throughput: 4631.00 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3374, throughput: 4631.00 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    16384, Cycles: 3374, throughput: 4631.00 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):    16384, Cycles: 3374, throughput: 4631.00 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6398, throughput: 4884.34 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6482, throughput: 4821.04 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    32768, Cycles: 6398, throughput: 4884.34 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):    32768, Cycles: 6482, throughput: 4821.04 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12530, throughput: 4988.03 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x80000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12614, throughput: 4954.81 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    65536, Cycles: 12530, throughput: 4988.03 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 0, SRC: 0x14840000, DST: 0x80000000, Size (byte):    65536, Cycles: 12614, throughput: 4954.81 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     1024, Cycles: 434, throughput: 2250.14 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     1024, Cycles: 518, throughput: 1885.26 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     1024, Cycles: 434, throughput: 2250.14 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     1024, Cycles: 518, throughput: 1885.26 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     2048, Cycles: 686, throughput: 2847.12 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     2048, Cycles: 686, throughput: 2847.12 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     2048, Cycles: 686, throughput: 2847.12 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     2048, Cycles: 686, throughput: 2847.12 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1022, throughput: 3822.16 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     4096, Cycles: 1106, throughput: 3531.87 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     4096, Cycles: 1022, throughput: 3822.16 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     4096, Cycles: 1106, throughput: 3531.87 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1778, throughput: 4393.98 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):     8192, Cycles: 1862, throughput: 4195.76 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):     8192, Cycles: 1778, throughput: 4393.98 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):     8192, Cycles: 1862, throughput: 4195.76 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3374, throughput: 4631.00 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):    16384, Cycles: 3374, throughput: 4631.00 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    16384, Cycles: 3374, throughput: 4631.00 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):    16384, Cycles: 3374, throughput: 4631.00 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6398, throughput: 4884.34 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):    32768, Cycles: 6482, throughput: 4821.04 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    32768, Cycles: 6398, throughput: 4884.34 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):    32768, Cycles: 6482, throughput: 4821.04 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x0c000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12530, throughput: 4988.03 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x80000000, DST: 0x14840000, Size (byte):    65536, Cycles: 12614, throughput: 4954.81 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x0c000000, Size (byte):    65536, Cycles: 12530, throughput: 4988.03 MB/s ... Verify Pass
    EDMA test with CC: 0, Channel: 1, SRC: 0x14840000, DST: 0x80000000, Size (byte):    65536, Cycles: 12614, throughput: 4954.81 MB/s ... Verify Pass
    =================================================================
    

    4670.EDMA.zip

  • Hi Eric,

    I compile your program as BareMetal code (I comment out those cache-related codes, as I get compilation error), I also use the same source code but compile with the BIOS project that I used before.

    The Bare Metal result as below:

    And the Bios result is as below:

    From the two results, I observe the higher difference compared to your result, and the overall view is that K2H will be slower than C66 about from 2% to 20%.

    I also use the gel file to set up to processor only.

    By the way, can I use the same program on ARM core on K2H? As I see all the DMA register addresses are the same for DSP and ARM.

    Thanks.

  • Hi,

    I assumed you ran 3 times and took the average. The KS I and KS II architecture are different. When the data movement are out of the corepac, if the difference is 3-5% probably we can ignore. But you saw a few cases with >10%, we need to find out why.

    I used the pre-defined symbol "SOC_C6678" for the cache related code, otherwise they don't know the register base address and overlay. Removing it should not affect EDMA throughput. Only you can't verify the data integrity if cache is on.

    Your C6678 results are almost the same as mine. But K2H is mostly slower. Are you able to use the binary I included last time and run as it is? Or you can send me your binary I can try on my K2H?

    For the code on A15, it should work. From A15 core, I saw the same EDMA register contents as from C66x core.

    Regards, Eric 

  • Hi Eric,

    Yes, I run the test 3 times and take the average.

    I also run your provided Bin file, and rebuild your project with CGT 8.3.4 (I do not have CGT 8.3.5). the result are as below:

    Below is my project (with the Bin file) for K2H Bare Metal and Bios, and also the Gel file I use to setup the board:

    K2H_DSP_BareMetal_Proj.zip

    K2H_DSP_Bios_Proj.zip

    1588.xtcievmk2x.gel

    Thanks.

  • Hi,

    Your GEL file is the same as I used. 

    Your Baremetal code is my test code built with #define K2H, the only difference I used 983.02 for throughput calculation instead of 1000 for C6678, this will make the K2H 1.7% slow down when comparing MB/s.

    I would like to use the cycle to compare C6678 and K2H, so we don't care about what CPU speed is. I ran the baremetal code you provided for K2H, the results are below:

      

    So, my K2H results for 4096, 8192, 16384 bytes are same as yours. For those 1024 and 2048 bytes where you have lower numbers, my results are better than yours. We exchanged the binary and source code, it is more likely the setup makes difference.

    Are you using TI K2H EVM? What is the silicon revision of the SOC? You can check the silicon errata document. And decode 0x0181_2000 and 0x0262_0018, my chip is PG 3.1.

    Regards, Eric 

  • Hi Eric,

    For your result provided in the previous post for the size of 1kB, C66 also faster than K2H about 10%:

    Size (Byte) C66 (MB/s) K2H(MB/s) Difference Difference (%)
    1024 2250.14 1960.97 289.17 12.85%
    1024 1885.26 1722.33 162.93 8.64%
    1024 2250.14 1953.13 297.01 13.20%
    1024 1885.26 1957.04 -71.78 -3.81%

    This one should be review as well.

    And when I do the test multiple time, I observe if the test involves DDR3, test result's repeatability is not high. E.g. Data of 1kB from 0x80000000 to 0x14840000 has throughput for 3 times are 1716.28, 1535.48, and 1719.3 Is it the performance characteristic of DDR3?

    I am using EVMK2H board, reading from the 2 address mentioned shows my board is PG1.0. The tag on my evaluation board said it is Rev1.1.

      

    Thanks a lot.

  • Hi,

    I thought we both put many efforts on this, with CSL level code, bare metal or SYSBIOS and with different runs to average the results. There is also some difference between my number and your number on K2H. I put my June 01 number below, yes, C6678 is faster than K2H in smaller transfer and this diminishing as transfer size growth. Regardless of different runs or your side or my side, we saw the same trend. 

    SRC DST Tran Size (Bytes) C6678 CPU cycle K2H CPU cycle Diff
    0x0c000000 0x14840000 1024 434 500 13.20%
    0x80000000 0x14840000 1024 518 567 8.64%
    0x14840000 0x0c000000 1024 434 500 13.20%
    0x14840000 0x80000000 1024 518 499 -3.81%
    0x0c000000 0x14840000 2048 686 707 2.97%
    0x80000000 0x14840000 2048 686 774 11.37%
    0x14840000 0x0c000000 2048 686 706 2.83%
    0x14840000 0x80000000 2048 686 705 2.70%
    0x0c000000 0x14840000 4096 1022 1121 8.83%
    0x80000000 0x14840000 4096 1106 1190 7.06%
    0x14840000 0x0c000000 4096 1022 1119 8.67%
    0x14840000 0x80000000 4096 1106 1121 1.34%
    0x0c000000 0x14840000 8192 1778 1879 5.38%
    0x80000000 0x14840000 8192 1862 1948 4.41%
    0x14840000 0x0c000000 8192 1778 1880 5.43%
    0x14840000 0x80000000 8192 1862 1879 0.90%
    0x0c000000 0x14840000 16384 3374 3398 0.71%
    0x80000000 0x14840000 16384 3374 3466 2.65%
    0x14840000 0x0c000000 16384 3374 3398 0.71%
    0x14840000 0x80000000 16384 3374 3397 0.68%
    0x0c000000 0x14840000 32768 6398 6433 0.54%
    0x80000000 0x14840000 32768 6482 6779 4.38%
    0x14840000 0x0c000000 32768 6398 6501 1.58%
    0x14840000 0x80000000 32768 6482 6503 0.32%
    0x0c000000 0x14840000 65536 12530 12573 0.34%
    0x80000000 0x14840000 65536 12614 12711 0.76%
    0x14840000 0x0c000000 65536 12530 12643 0.89%
    0x14840000 0x80000000 65536 12614 12642 0.22%

    The DMA performance in the steady state are determined by the following factors:

    1. Speed and bus width of the memory end point (MSMC is CPU/2 in C6678, CPU/1 in K2H, DDR3 differs)
    2. TC’s bus width, burst size and FiFO size (we keep this the same)
    3. The intermediate path between source and destination with equal or higher BW provided for the memory end point

    If all three points are the same between two SoC, then the EDMA performance should be the same when it gets into steady state. 

    For the particular one that MSMC<========>L2 showed +13% difference. I looked at the topology (you can find it in the system interconnect chapter of the datasheet):

    • For C6678, EDMA_0/TC0 is on TeraNet 2_A CPU/2 and MSMC SES on the same. L2 is on TeraNet 3_A CPU/3.
    • For K2H, EDMA_0/TC0 is on TeraNet 3_C CPU/3 and MSMC SMS on the same. L2 is on TeraNet 3_A-2 CPU/3.

    This is different inter-connection and can’t compare the numbers directly. Certainly, the slower of K2H on small transfer is not what you expected, but that is only dozens of cycles on a 1GHz CPU. 

    One thing to highlight is that the SoC arch is intended to optimize the aggregate throughput and capacity for multiple concurrent traffic streams through the switch fabric, as well as the ability for activity to be separated to both maximize this concurrency and also meet critical deadlines. So looking at an individual data transfer doesn’t give a complete performance picture. Hawking has higher overall transfer capacity, more processing, and more memory.

    In addition, we are doing a SW-triggered transfer, so any additional cycle delay on the VBUSP path to the ESR will add an initial startup delay. If there is a change in VBUSM:M bridging between the TC master ports and the memory endpoint slave ports that will add to the start and end of the transfer. From a jitter standpoint, we are polling the EDMA ISR over VBUSP, so that’s a high-delay read. You’d expect this to average out over multiple runs though. But we could remove that part if routing to the CPU and polling the ISR.

    Let me know if you have further concern.

    Regards, Eric

  • Hi Eric,

    Thanks for your exlpaination. In this case I think we can conclude the finding for EDMA performance in the low data size transfer.

    Just a few questions I want to clarify about EDMA and memory access.

    1. For you program provided in previous post, in function paramConfig I see wqe can specify EDMA CC, and DMA channel PaRAM_index. How can I specify which TC is using?

    2. If I use XMC MPAX for mapping physical address to logic address, what should I specify the input address of EDMA? E.g. For example if I want to use DDR3A on DSP, I will map 40 bit physical address 0x0A 0000 0000 to 32 bit logical address 0xA000 0000.

    3. For this question, since it is related to the memory also, so I think it is more suitalbe to ask here rather than create new thread.

    I do another memory test to copy the data between different memory, and I see if the 2 processor is runing at 1GHz, and the cache setting is as below:

    CACHE_setL1PSize(CACHE_L1_8KCACHE);
    CACHE_setL1DSize(CACHE_L1_0KCACHE);
    CACHE_setL2Size(CACHE_0KCACHE);

    I see that the copy from MSMC to L2 on K2H is 10% slower than C6678. E.g. for 256 DW (e.g. 1kB), if I use for loop to copy every DW, C6678 take 6679 count while K2H take 7320 count. Is it because of the different in interconnection as you mentioned above? As for K2 MSMC clock should be faster than K1.

    Thanks.

  • Hi,

    Thanks for the concluding the EDMA throughput for small transfer issue.

    >>>>1. For you program provided in previous post, in function paramConfig I see wqe can specify EDMA CC, and DMA channel PaRAM_index. How can I specify which TC is using?>>>>

    See EDMA user guide (https://www.ti.com/lit/ug/sprugs5b/sprugs5b.pdf

    2.11.1 DMA/QDMA Channel to Event Queue Mapping
    Each DMA channel and QDMA channel is independently programmed to map to a
    specific queue using the DMA queue number register (DMAQNUMn) and the QDMA
    queue number register (QDMANUM).

    >>>>

    >>>>2. If I use XMC MPAX for mapping physical address to logic address, what should I specify the input address of EDMA? E.g. For example if I want to use DDR3A on DSP, I will map 40 bit physical address 0x0A 0000 0000 to 32 bit logical address 0xA000 0000.>>>>>>>

    The EDMA uses 32-bit logical address.

    >>>>3. 

    memory test to copy the data between different memory, and I see if the 2 processor is runing at 1GHz, and the cache setting is as below:

    CACHE_setL1PSize(CACHE_L1_8KCACHE);
    CACHE_setL1DSize(CACHE_L1_0KCACHE);
    CACHE_setL2Size(CACHE_0KCACHE); >>>>

    I saw you put 8K for L1P cache and L1D is 0 cache, is this your typically usage or just test case? MSMC is cached into L1D, so it is good to put L1D as cache. You can set L2 0 cache, no problem for MSMC. But if you use DDR3, you need to set part of L2 as cache so DDR3 is cached into L2. Overall, it is good use L1D, L1P as 32-KB cache and part of L2 as cache for best performance.

    For your test case, I haven't study it. Please provide a small project if you can so I can look into it.

    Regards, Eric

  • Hi Eric,

    The cache setting is an existing setting in my application. The purpose is to prevent the mishandling of cache invalidate and write back that may cause some problems in our multi-core program.

    The test programs are as below:

    WS_EDMA_66AK2H_BIOS_200609.zip

    WS_EDMA_C6678_BIOS_200609.zip

    Thanks.

  • Hi,

    I saw you did this:

    // Use "-" to split data when processing
    pSrc = (unsigned int *) MEM_SRC[k];
    pDes = (unsigned int *) MEM_DST[k];
    printf("Memtest - SRC to DST - 0x%08x - 0x%08x - Size (byte) - %d - ", (unsigned int) pSrc, (unsigned int) pDes, size);
    sizeInDW = size / 4;
    v1 = TSCL;
    for (m = 0; m < sizeInDW; m++)
    {
    pDes[m] = pSrc[m];
    }
    v2 = TSCL;

    Is this your code of benchmarking memcpy? The rest are my EDMA test code. 

    What is your goal here? To see performance difference between K2H and C6678? Or, you want to get the best number of CPU copy? I thought there are C66x intrinsic for this purpose.

    Also, disable L1D while using L2, MSMC is not the right approach.  "The purpose is to prevent the mishandling of cache invalidate and write back that may cause some problems in our multi-core program." =======> If you worry about this, you need do semaphore but using L1D cache.

    Regards, Eric 

  • Hi Eric,

    Yes that is my test code. The purpose is to have the idea on the memory access performance between C6678 and 66AK2H.

    Due to maintaince reason (e.g. to support different processor, modification effort) we are not using intrinsic in our application, and I also see some test program also use for loop to test the memory copy.

    Thanks for you advise on the semaphore and caching, in future we will also evaluate this direction.

  • Hi,

    Thanks for confirmation. If you don't use code optimization, I ran the code and noted down the cycles taken:

                      with L1D disabled, L1D 32KB cache 

    C6678              6691                        1716

    K2H                 7579                         1719

    It is true that K2H is slower than C6678 moving 1024 bytes from MSMC to L2, if L1D is disabled. But when L1D is enabled, there is no difference. I don't think in a real application you will disable the L1D, as L2 and MSMC always cached into L1D. So using K2H or C6678 shouldn't have difference when do a small data copy using CPU with L1D cached.

    Regards, Eric

  • Hi Eric,

    Thanks for the finding. However our application now is not using L1D and L2 cache.

    Btw, may I know if the reason of the different is still because of the different in interconnection?

    Thanks.

  • Hi,

    The connection is different:

    C6678: MSMC ---- TeraNet_2_A (CPU/2) ---- Bridge ---- TeraNet_3_A (CPU/3) ---- Corepac
    K2H: MSMC ---- TeraNet 3_C (CPU/3) ---- Bridge ----- TeraNet 3_A-2 (CPU/3) ---- Corepac

    There may be more bridges in between. This will contribute to some difference.

    In the real application, please keep at least L1D partially cached. With L1D cache totally disabled has negative impacts to performance.

    Regards, Eric

  • Hi Eric,

    Regarding the result different on your board and my board when runing same program/setting, what could be the cause on that? Will it be because of silicon version different? I go through the silicon erata (sprz402f) but could not find any detail regarding the performance different.

    Beside those issue listed on the table, is there any advantage of PG3.1 compare to PG1.0?

    Thanks.

  • Chanh

    We strongly encourage you to get the latest EVM. 

    If you are considering K2H for final application development and production, you will be using PG3.1 as PG1.x is no longer available/supported.

    There are some erratas, but we could not see any direct correlation. However it would be best to minimize any hardware and software differences, if you are still trying to dig deeper on this.

    We think we have provided sufficient guidance on this topic - and we definitely appreciate the thoroughness of your evaluation.
    Regards

    Mukul 

  • Hi Eric and Mukul,

    Thanks for your advice.