This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Physical to Virtual Memory Mapping

Other Parts Discussed in Thread: OMAP3530

I'd like to get some advice for how to design my OMAP3530 system. I have an OMAP that is receiving data from attached FPGA via the GPMC bus.  The data transfers are driven with the SDMA, so the data that's being DMA'ed into the OMAP is being dumped in a destination physical memory location.   After all my data has been collected and stored in this physical memory location, its time for my Linux user-space application running on the ARM to process it, so I map the DMA's destination physical memory location with mmap() and perform a memcpy of the data into a user-space application buffer.  After my data is in a virtual memory buffer, then I process it.  

I'm wondering if there's a better more efficient way for my application to access this data that is stored in physical memory.  I come to find out that copying memory from physical memory to virtual memory is expensive.  I am searching for alternative methods that would prevent me from moving the data over to virtual space so that I do my processing. I have looked into processing the data from its physical location, but my profiles indicate this method is slower than doing a memcpy and then processing the data in virtual space.

I understand that if I was processing the data with the DSP, I wouldn't have this problem since the DSP does not have this extra layer of virtual memory space, and the data could be EDMA'ed to any location within the chip, but using the DSP is not an option for me at the moment.   

Does anyone have any other idea that could work for me?

 

  • It might be that the CMEM driver interface will be helpful for you - cmemk.ko not only manages memory areas reserved especially for being managed by CMEM but also supports translations between virtual and physical addresses.

    For the first look here: CMEM_Overview

    Feel free to ask,
    regards,
    Joern.