Part Number: AM625
Hi,
This is a follow up to https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1323189/am625-dma-interrupt-latency-issue.
We are now trying to maximize the DMA transfer frequency to test the limits of our DAQ implementation.
To recap: With the help of Bin Liu we were able to use interrupt driven cyclic DMA transfers of the DMA engine to transfer data from the FPGA to the AM625. The interrupt line was reset in the transfer complete callback function. With core isolation this allowed us to handle up to 1000 DMA transfers per second.
Now we are trying to increase the DMA transfer frequency with some modifications: We modified the FPGA to reset the interrupt line on its own when the DMA transfer starts and the FPGA buffer falls below a given theshold. This way the data transfer can run without any kernel driver code on the AM625. Measuring the width of the DMA interrupt pulse gives us the latency of the DMA transfer, which we found to be about 3 microsecond.
But starting from about 8000 DMA transfers per second we started to see sporadic delays of about 20 microseconds to the start of the DMA transfer. The delay increases with the transfer frequency (up to over 50 microseconds at 10'000 DMA transfers per second).
Since there should be no kernel scheduling involved in the DMA transfer, we are puzzled by this behavior and would like to understand it better.
Chapter 11.1.1.5 "Block Copy DMA (BCDMA)" of the AM62x Reference Manual states: "An internal DMA scheduler is used to control the ordering and rate at which this multiplexing occurs.". Could this be the reason for the sporadic delays?
In the referenced thread in the last message, Bin Liu mentioned that on the AM625 the DMA transfers are distributed to slots by the EDMA driver. Could this be the reason for the sporadic delays?
Any tips on how to optimize or explain the sporadic delays would be welcome.






