Hi TI folks
I'm debugging a legacy design for the C6655, and have detected EDMA3 CC missed events (using ERRINT) steadily occurring over time on chained DMA channels. There were no losses from the Transfer Controller. I'm looking for ideas to get rid of these missed events completely. I am quite close, but need advice regarding EDMA event prioritisations.
------ Let me explain the DMA architecture
There is a DMA process (lets call it DMA0) that performs a total of 256K A-Synchronised transfers in just over one second. The triggering event is from an external GPIO (0) every 4us. The array size is 16 bits (aCnt = 2); frame size = bCnt = 32. The 16 bits are transferred from a static location within an external FPGA buffer, lets call it FPGA[0] to an incrementing location in DDR external memory, lets call it location DDR[0]. I dont see any missed events on this DMA channel. However, DMA0 is chained (normal completion) to another DMA process, DMA1 (transfers data from FPGA[1] to DDR[1]), which in turn is chained to DMA2 (transfers data from FPGA[2] to DDR[2]), then DMA3(etc), and DMA4(etc). So there can be 5 concurrent DMA processes.
I am detecting missed DMA events on DMA1 mainly, with less on DMA2,3 and 4. There are no losses on DMA0, which is externally triggered. So, the losses only occur on the chained DMA channels, particularly the first one, DMA1.
There are also a couple of QDMA channels that are very active during this period (no missed events on those), and also some asynchronous HWI ISR that are occur infrequently.
------ Now, a couple of things that I dont understand
1) There is a trigger priority in the EDMA CC, which prioritises external events over chained events. But its not clear why the QDMA channels would not loose events BEFORE the chained EDMA3 CC events.
2) I have tried breaking the chaining, and instead of triggering from a single GPIO external interrupt, triggering from three external interrupts instead. This works initially, but stops after a short while.
Any advice on either 1, or 2. Or ideas on what might cause the EDMA3 Missed Events?
Thanks
Jim