12-08-2018 03:56 PM
Is it possible to use the CDMA IP to transfer data from the config QSPI flash to DDR3?
I would like to store a bitmap in the upper portion of the config QSPI flash and DMA it to a section of DDR3 on powerup for later use.
I have the CDMA working, it transfers very nicely from one section of DDR3 to another, but I get an error when I try to use the SPI flash address as the source address. The error is 0x00000040 - DMADecErr - invalid location.
I can manually read the data from the QSPI flash within the program, so I know the address is good and the data is there. I've tried both AXI-Lite and XIP modes on the QSPI IP, and tried various different AXI interconnects to make sure the CDMA has a path to both the DDR3 and QSPI AXI bus. I checked the address editor and noticed the CDMA had the QSPI under the "Excluded Address Segments", so I tried including it, but that didn't change anything.
Any help would be greatly appreciated!
12-10-2018 03:32 PM
This is possible, but there are a lot of details to making it work.
AXI CDMA has a key hole feature that enables FIXED address AXI commands. FIXED mode commands are necessary to burst data from the AXI Quad SPI IP when the user enables Performance Mode.
Where this gets tricky is when the AXI Read/Write commands from the AXI CDMA work their way through the AXI Interconnect. If the command has any data width conversion, that can cause troubles with the FIXED mode burst. PG059 details the equations that the Data Width Converter uses. It's a lot of information, but look for the line about how it converts a FIXED burst into an INCR burst when the SI > MI.
SmartConnect does not support FIXED bursts. If you have a SmartConnect if your system, you cannot do this sort of transfer.