Hello,
I am using EDMA for larger data transfers of variable size from DDR3 to DDR3, but also from PCIe mapped memory to DDR3.
By using the CSL, I try to find reasonable values for the three available EDMA loops. Please correct me if I am thinking the wrong way.
My scenario: Power-of-two biggest possible single EDMA transfer
Without chaining or linking, the biggest possible single transfer should be AB-synchronized. In this scenario, I am lucky to have only sizes of a power of two:
aCnt = 0x4000;
bCnt = 0x8000;
aCntbCnt = CSL_EDMA3_CNT_MAKE(aCnt, bCnt);
srcDstBidx = CSL_EDMA3_BIDX_MAKE(aCnt, aCnt);
cCnt = 1;
The counters are unsigned 16 bit values. For aCnt, I have to care for the "stride" being a signed 16 bit value.
The resulting transfer would be 537 MB - enough for my Scenario
I was able to test up to 8 MB from DDR3 to DDR3 successfully, but copying from PCIe I seem to encounter a limit at 1 MB. I don't yet know what is limiting this.
Are there reasons not to pack all data into a single transfer?
I have thought about using a cCnt > 1, but I am still working on that.