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.

cycles numbers measurment of EDMA based SYS/BIOS examples under EDMA_LLD

I based on the code of edma3 with sysbois provided  by TI  to transfer a 32-bit integer data block MSMCSRAM memory of a DSP6678 to MSMCSRAM  memory of another DSP6678 with PCIE protocol, and I want to know the locations where I should put the counters to measure the number of cycles consumed.

  • Hi,

    Thanks for your post.

    In general, if the goal is to measure the number of CPU cycles expired... a simple (and I think most accurate) option , please see to look for any timestamp counter register values available for C66x devices.  In case, if available, note these register values, run to a breakpoint, and note the new cycle counts.

    We have C66x PCIE throughput results under www.ti.com/lit/pdf/sprabk8, the EDMA result is around 5-6 Gbps and there is no CPU results, because for high throughput EDMA is needed.

    Thanks & regards,

    Sivaraj K

    -------------------------------------------------------------------------------------------------------

    Please click the Verify Answer button on this post if it answers your question

    -------------------------------------------------------------------------------------------------------

  • Thank you for your reply, please in fact i use edma3_test function provided by TI and want to know the locations where I should put the counters in it. I puted them as below, but it me gives for 256 bytes 12747 cycles with ACNT=128 bytes things that me appear illogical .The question is, are the counters in correct places or no ?


    Nbefore = Timestamp_get32();

    result = EDMA3_DRV_enableTransfer (hEdma, chId,
    EDMA3_DRV_TRIG_MODE_MANUAL);

    if (result != EDMA3_DRV_SOK)
    {
    printf ("edma3_test: EDMA3_DRV_enableTransfer " \
    "Failed, error code: %d\r\n", result);
    break;
    }

    /* Wait for the Completion ISR. */
    while (irqRaised1 == 0u)
    {
    /* Wait for the Completion ISR. */
    printf ("waiting for interrupt...\n");
    }

    Nafter = Timestamp_get32();