0

I'm using ARM a53 platform, it has ACP component, and I'm trying to use DMA to transfer data through ACP.

By ARM trm document, if I understand it correctly, the DMA transmission data size limits to 64 bytes for each DMA transfer when using ACP.

If so, does this limitation make DMA not usable? Because it's dumb to configure DMA descriptor but to transfer 64 bytes only each time.

Or DMA should auto divide its transfer length into many ACP size limited(64 bytes) packets, without any software intervention.

Need any expert to explain how ACP and DMA work together.

Leslie Li
  • 407
  • 7
  • 14
  • 1
    It looks like you might mix DMA burst size with DMA transfer size. Anyway would be good if you elaborate what ACP stands for. – 0andriy Nov 25 '17 at 17:23
  • ACP stands for Accelerator Coherency Port. I was told by our hardware engineer of above information, and I have the same concern as you. – Leslie Li Nov 26 '17 at 11:22

1 Answers1

0

Somewhere in the interfaces from the DMA to the ACP's AXI port should auto divide its transfer length as needed into transfers of appropriate length. For the Cortex-A53 ACP, AXI transfers are limited to 64B(perhaps intentionally 1x cacheline).

From https://developer.arm.com/documentation/ddi0500/e/level-2-memory-system/acp/transfer-size-support :

x byte INCR request characterized by:(some list of limitations)

Note the use of INCR instead of FIXED. INCR will automatically increment the address according to the size of the transfer, while FIXED will not. This makes it simple for the peripheral break a large transfer into a series of multiple INCR transfers.

However, do note that on the Cortex-A53, transfer size(x in the quote) is fixed at 16 or 64 byte aligned transfers. If the DMA sends an inappropriate sized transfer(because misconfigured or correct size unsupported), the AXI will emit a SLVERR. If the buffer is not appropriately aligned, I think this also causes a SLVERR.

Lastly, the on-chip network routing must support connecting the DMA to the ACP at chip design time. In my experience this is more commonly done for network accelerators and FPGA fabric glue, but tends to be less often connected for low speed peripherals like UART/SPI/I2C.

rsaxvc
  • 1,675
  • 13
  • 20