hi, in my project using C6747, and I have following work flow of below:
1. an C6747 GPIO pin input generate an interrupt.
2. interrupt sevice start a DMA, which transfer data from EMIFA to L2 RAM, after start DMA, interrupt sevice need to read/write devices's REGS connect at EMIFA.this cause EMIFA access conflict between DSP MDMA and EDMA. after DMA done, an DMA callback function will process the data.
3. so, if I set bus master priority of EDMA TC priority higher than DSP MDMA, the interrupt service(DSP core)will pend until DMA request done. this is not acceptable for latency of other interrupt handling.
if I set bus master priority of EDMA TC priority equal DSP MDMA, interrupt service return before DMA request done. but it seems that if there have 2 DMA request transfering at same time, interrupt service lantency is also unstable.
4. in task level code, I have EMIFA access that not use DMA, in my project, DMA transfer is critical, must be done in a given time, so I can not set bus master priority of EDMA TC priority lower than DSP MDMA, that may cause system failure.
because of up reason, I want to change the DSP MDMA / DSP CFG bus master priority on-the-fly , when enter interrupt, boast it's priority to 1, higer than DMA TC's priority(2), and when leave interrupt, restore orginal priority to 2, same as DMA TC's priority.
C6747 data sheets does not have any informations about dynamic change priority.
will it work ? or there have some potential problems?
help me please, thanks.