I've got a simple Starterware GPMC project running with Beaglebone Black. I configured EDMA to transfer an array (ACNT=32, BCNT=1, CCN =1) of bytes from memory to GPMC and it's very fast. The GPMC is configured as 8-bit, non-multiplexed A/D, and with the GPMC timing I specified it sustains 8 MBytes/sec. No delays are introduced by EDMA and as far as I can tell, the GPMC transfers are 100% back-to-back.
However, when I use an external event (XDMA_EVENT_INTR2) for an "A" synchronized transfer with ACNT=1, BCNT=32, CCNT=1, there is an additional 375 nsec between GPMC bytes. How can I reduce or eliminate this delay? That delay is about what I can achieve with programmed IO!
My project only allocates one DMA channel (with crossbar map to XDMA_EVENT_INTR2) so there shouldn't be anything else delaying the request. Please tell me it shouldn't be that slow! Could you explain section 11.3.12.1.3 in the reference manual and how this could apply or be optimized for my application?
My transfer complete interrupt does get called at the end and I'm not using intermediate transfer complete or chaining and no event miss are reported.