Hi,
I'm implementing a pingpong buffer on M7 and wanted to try a linked channel loop transfer using SDMA, but I can't find any info. Reference manual only mentions that EDMA can do it, but I couldn't find any EDMA related driver either in MCUxpresso SDK. Any idea or example? TIA
Thanks
Hi,
can you please explain, what a "linked channel loop transfer" actually is?
In general it should be possible to use the SDMA from the M7. But you cannot share the SDMA between the Cortex-A and Cortex-M (on i.MX8MP there is a small chance of assigning the 1st SDMA instance to the Cortex-A and 2nd or 3rd SDMA instance to the M7).
regards,
Christian
Hi, I should have provided a detail.. So I didn't mean to ask how to use SDMA itself, rather wanted to know how to do the loop transfer that let DMA do a linked RX-TX channel transfer, such as RX TX always happen in chained manner.(i.e. TX-RX-TX-RX-TX...) The iMX8 reference manual says EDMA can configure loop transfer but couldn't find its driver in the MCUxpresso SDK that built for iMX8 family soc. So I wondered if SDMA can do loop transfer. Thanks for your reply.
The existing SDMA scripts do either memory-to-memory, peripheral-to-memory or memory-to-peripheral transfers.
With a custom SDMA script, you generally can do almost everything (the SDMA is a fully programmable processor). But I think that such applications are mainly useful when not dealing with different (S)DMA events for RX and TX. If you have only a single event (or a pure software event) for triggering the chained transfer, this should be ok.
In case you have different (S)DMA events for TX and RX, using two individual SDMA scripts is the more usual option.
regards,
Christian