Hello,
I need to perform a raw memory copy using IPU DMA and without modifying the data. I am using IPU because I need the DMA to PCIe space.
How do I use an IPU processing sub-block which falls-through and does a 1:1 transfer of data to and from a buffer in ram?
Best Regards,
Jose
I don't think IPU DMA can be used that way. Doesn't PCIe have DMA channel?
Hello JayTu,
According to the i.MX6DQ reference manual and discussions with Freescale support, the i.MX6 PCIe core does not have a DMA channel.
On the other hand, I have seen an example for using IPU DMA Bus master for PCIe transactions here: https://community.freescale.com/docs/DOC-95014
My application requires DMA support to achieve the necessary transfer rates. The standard PCIe RC, non-DMA, transfers are too slow for my application and the operations are split into multiple TLP's.
Unfortunately, I have been unable to properly configure the IPU channel to achieve a one-to-one memory transfer operation from system RAM to PCIe EP space using IPU DMA. The data is modified when it is transferred across the IPU channel.
I suspect this is due to IPU configuration settings (rotation, scaling, etc).
I look forward to any input anyone has on this topic.
Best regards,
Jose Rios
Dear M Rios,
I am actually stuck to the same problem than you. I have to perform DMA through PCI and I arrive to the same conclusion : PCIe does not have DMA channel.
I then have to use the IPU DMA (which is IDMAC) to do the transaction. But I don't really have idea about how to do it. So my questions are :
1) Did you finally manage to find a solution to your problem ?
2) Could you help me, and give me some tips about how to do it ? I mean that you give me highlight of how to do it ?
Thanks in advance for your help,
Best regards,
Yann Tinaugus
Did you manage to implement IPU DMA transfers to PCIe address space without modification, eg 1:1 mapping?