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.

prioritization of access to EMIF16 on C66xx

Hi

I am looking for a way to prioritize the acces to EMIF16 so that my EDMA3 transfer gets access to EMIF16 before the Core.

I have a low priority task that writes a large amount of data to EMIF16 using a simple loop like this

low_prio_task()
{
  uint16* EMIF = EMIF_ADDR;
  while(1)
  {
    SEM_PEND(some_semaphore)  
    for(i = 0; i < size; i++)
    {
      EMIF16[i] = data[i];
      index++;
    }
  }
}

And I have setup a EDMA3 channel to read data fra EMIF16 to internal L2_RAM when triggered by an event from a GPIO. The GPIO triggers the EDMA at a relatively high frequency, and it important for the system that the data are read as soon as possible.

The problem is that the EDMA transfer does not begin reading data until the low_prio_task has finished writing its data, and that gives such a large delay in the system data loop that it does not work properly.

I would like to know if there is a way to configure either EMIF og EDMA3 so that the DMA gets access to EMIF at once.

I am running on a C6655 using CCS6.10

Best

Jens

  • Hi,

    Thanks for your post.

    All the packet-DMA-based peripherals also have internal registers to define the priority level of their initiated transactions. Some masters do not have priority allocation register of their own. For these masters, a priority allocation register (PKTDMA_PRI) is provided for them. Please refer section 5.4 from the c6657 datasheet below:

    http://www.ti.com/lit/ds/sprs814b/sprs814b.pdf

    Also, please check the CFG arbitration control register (ECFGARBE) which controls the priority for the configuration bus transactions from extended memory controller (EMC). Kindly refer section 8.3.5, 8.3.6 from c66x corepac user guide as below:

    http://www.ti.com/lit/ug/sprugw0c/sprugw0c.pdf

    Thanks & regards,

    Sivaraj K

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

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

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

  • Hi,
    Thanks for your reply.

    I looked at the user guides you refer to, but I have no idea what to set these registers to in order to get the desired prioritization.

    Can you tell me how these registers should be set in order to make the EDMA controler have highest priority to get access to the EMIF16?

    Thanks
    Jens