I'm using iMX6Q Sabre Lite board running linux 3.0.35, and a CSI camera to capture 5MP video using the IPU/V4L2 interface.
The video arrives at about 12fps, which for YUV pixel format means about 120MB are copied to the memory via DMA each second.
I'm attempting to save all the frames to an SSD HD, which benchmarks show is capable of handling about 150MB/s.
However it seems that the RAM, which benchmarks show is capable of 900MB/s of read-write transactions, is not fast enough to handle all this, and is currently the bottleneck I'm trying to solve.
I understand that the IPU is using DMA to transfer the frames, and that disk writes are using DMA as well, and that since the DMA buffers are not shared, the frames are copied between them when I issue a write() function.
I also understand that there's some sort of caching going on, which means there's more memory copying going on.
How can I make this procedure more efficient?
Is it possible to use the same DMA buffer for both capturing and saving to eliminate memory copying?
Is there a recommended way to configure the DMA/mmap/HD mounting?