We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I work on zynq 7000 soc whose the DMA component is the pl330.I am trying to do a "scatter-gather" dma transfer, in a channel thread by programming the debug instruction registers via the APB bus.For example, I load from the source, an entire bloc of 64 bytes using one DMALD instruction.After that, I would like to scatter the data in a custom mapping in the destination buffer.For that I use DMAADDH/DMADNH before DMAST instructions.
Let's take an simple example :
DMAMOV SAR ... ;; address aligned on 64 bytesDMAMOV DAR ... ;; address aligned on 64 bytesDMAMOV CCR SB8 SS8 DB1 DS32 ;; with src_inc = 1 and dst_inc = 1
DMALDDMAST ;; store one 32b wordDMAST ;; store the second 32b wordDMAADDH DAR, 4DMAST ;; KO : this word is not stored and an error occurs DMAWMB DMASEV e3DMAEND
My problem is the third word is not stored and the DMAC raise the error "st_data_unavailable" (bit 13 in the XDMAPS_FTCx_OFFSET register).
The third store works if the offset added to the destination address is a multiple of 8 : DMAADDH DAR, 8 is ok for example.
I think something is unclear for me about mfifo usage.
Thank you for your help.
Hello,
Thank you for your reply. So, could you move my question to the forum " Architectures and Processors forum" please ?
Many thanks.
Guillaume