Luc*_*cas 10 c linux memory shared-memory v4l2
我可能在这里有一些误解,所以请耐心等待.
我写了一个从相机中捕捉图像的程序.mmap正如我在V4L2文档中找到的那样,我在相机和我的应用程序之间共享内存.这非常有效.现在我的处理器(它是TI的DM3730)也有一个DSP.我想使用DSP,但它需要物理连续的内存.TI提供分配内存的驱动程序.我的问题是,现在我失去了很多时间将mmap的内存复制到物理连续的内存中.有没有办法告诉mmap它本身不应该分配内存,但我告诉mmap使用我分配的内存.
让你知道我在做什么(当然有很多代码缺失,但我非常接近V4L2文档.我希望这足以理解我的问题):
//reserve physical contiguous memory
dsp_buffer = Memory_alloc(buffer_length, &myParams);
...
//reserve memory for buffer, but not contiguous
buffers[n_buffers].start =
mmap (NULL , /* start anywhere */
buf.length,
PROT_READ | PROT_WRITE , /* required */
MAP_SHARED , /* recommended */
fd, buf.m.offset);
Run Code Online (Sandbox Code Playgroud)
之后,每当帧准备就绪时,我将内存从非连续内存复制到连续内存中.
...
//wait until frame is ready in memory
r = select (fd + 1, &fds, NULL, NULL, &tv);
...
//copy the memory over to the physically contiguous memory
memcpy(dsp_buffer,buffers[buf.index].start,size);
...
Run Code Online (Sandbox Code Playgroud)
我怎样才能立即将帧插入物理连续内存?
| 归档时间: |
|
| 查看次数: |
3150 次 |
| 最近记录: |