How to achieve the best IPU copy throughput on i.MX6?

cancel
Showing results for 
Search instead for 
Did you mean: 

How to achieve the best IPU copy throughput on i.MX6?

1,142 Views
FredrikMoller
Contributor III

Use case: Copy buffer from A to B using the IPU's internal DMA engine.

I developed a driver for a RTOS which uses the Image Converter sub-module and IDMAC channels 47 and 50.The ROT, FLR and FUD options are all set to zero (i.e. no actual rotation and no image flipping). Pixel size is three bytes. Buffers are placed in SDRAM.

With these settings a throughput of 120MB/s is achieved for 3MB buffers (== 1024*1024 pixels). This is significantly worse than memcpy() at about 350MB/s as well as the documented pixel rate of 100Mpixels/s (==300MB/s) in the imx6 reference manual ch. 38.1.2.1.5.3.

What can I do to achive better throughput with the IPU? (Note that the SDMA can't be used because that won't work with PCIe, which I want to use).

Labels (2)
Tags (3)
0 Kudos
4 Replies

314 Views
carlpii
Contributor I

Hi Fredrik,

In your initial post, you mentioned your desire to use the IPU to transfer data via PCIe.  Were you able to manage that?  If so, could you describe how you did it and the throughput you achieved?

Thanks,

-Carl

0 Kudos

314 Views
FredrikMoller
Contributor III

By sending the data through the Image Converter's Main Processing Section instead of the Rotation Section, throughput was increased to 350 MB/s. This solution uses IDMAC channels 11 and 22.

0 Kudos

314 Views
igorpadykov
NXP TechSupport
NXP TechSupport

Hi Fredrik

in general Image Converter sub-module is quite slow, it may take up to 4clocks/pixel

processing. One can try to play with using real time channels, marking IPU accesses

with an AXI ID to bypass the PL301’s arbitration. Please check IMX6DQRM

sect.44.5.1.2 Real time channel mode,

36.4.8 GPR (IOMUXC_GPR7),

37.4.2.4.1 Handling real time channels,

Table 37-14. Channel Parameters Memory

AXI Id field

Best regards

igor

314 Views
FredrikMoller
Contributor III

Hi Igor,

Use of real time channels did not have any effect, unfortunately.

I increased the IPU clock frequency to 270 MHz and that increased throughput somewhat.

Do you have any other ideas?

Regards,

Fredrik

0 Kudos