Hello,
I have a problem of missed EDMA events using the chaining mechanism. I use the following setup:
The first EDMA channel "A" copies one word within L2 memory and then triggers the second EDMA channel "B". In rare cases, a chaining event for EDMA B is missed. It seems that a race condition occurs when two Transfer Requests of EDMA A are queued up in the priority queue. My guess is that the Channel Controller isn't able to send the Transfer Request of EDMA B for the first chaining event to the priority queue fast enough, before the second chaining event of EDMA A occurs.
There should be room in the priority queue to accept the next TR without stalling. The problem seems to go away if the data source for EDMA A is located in a slower memory. This makes sense, because the second event takes longer to arrive at the Channel Controller.
Is there information available on how long it can take for an EDMA channel between arrival of the first event and the time it will accept the next event (with the assumption that the priority queue is not full)? Could we make sure not to loose any event by using slower source or destination memory for the EDMA A?
Any help is appreciated,
Ralf