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.

EDMA3 Shadow Regions

Hello all,

I am currently reading about the EDMA3 module (to be used on a C6670) and I dont yet fully understand the concept shadow regions. Here are my questions:

1) Ok, so far my understanding is that in each EDMA3 CC we have multiple shadow regions, in other words partitioned ressources. Does this mean to make it simple, for example the C6670 has 3 EDMA3CC HW instances. EDMA3 CC1 has 64 DMA channels and 8 shadow regions. So, region 0 are the channels from 0-7, region 1 are the channels from 8-15 and so on???

2) If my understanding from above is correct, what is actually the benefit by splitting the available channels into multiple groups. If I want to allocate DMA ressources to different applications, I can just assign them different channels to avoid conflict. Why this additional splitting by regions?

Thanks in advance.

Best Regards

Burak

  • Hi Burak,
     First let the concept of shadow regions be clear. Imagine, if I want to perform two different DMA transfer using two different cores(say Core0 and Core1) using the same EDMA instance(say CC 0). I allocate different channels (say ch 0 to Core0 and ch 1 to Core1). If the concept of shadow regions were not there, with only global region how will I route the interrupt specifically to both the cores once the DMA transfer is completed? If I route the EDMA global interrupt to both the cores, and if the DMA by Core0 completes, the EDMA module will interrupt both the cores(with Core1 interrupt unnecessarily). So, if I have shadow regions, I can use region 0 of CC 0 on Core0, and region 1 of CC 0 on Core1. In this way, I can route the region 0 interrupt to Core0 only, and region 1 interrupt to Core1 only so that only the concerned core gets the DMA completion interrupt. I hope this is clear enough.

    Burak said:
    1) Ok, so far my understanding is that in each EDMA3 CC we have multiple shadow regions, in other words partitioned ressources. Does this mean to make it simple, for example the C6670 has 3 EDMA3CC HW instances. EDMA3 CC1 has 64 DMA channels and 8 shadow regions. So, region 0 are the channels from 0-7, region 1 are the channels from 8-15 and so on???

    There is no such things like resource partitioning in the EDMA3 module. Each EDMA CC has defined resources, and user can allocate these resource to different shadow regions. For example, in in EDMA CC 1, I can allocate entire 64 channels to region 0 alone.

    Burak said:
     2) If my understanding from above is correct, what is actually the benefit by splitting the available channels into multiple groups. If I want to allocate DMA ressources to different applications, I can just assign them different channels to avoid conflict. Why this additional splitting by regions?

    As said above, if different cores are using the same EDMA CC with different channels, shadow regions would help us to interrupt the right core after DMA completion.

    Additionally, why I guess each Keystone device supports EDMA module with 8 shadow regions assigned to each EDMA CC is that, we have a max of 8 cores(C6678). So each core can be assigned a separate shadow region.

    Regards

    Sud

  • Hello Sud,

    thanks for your clear explanation!

    BR

    Burak