当前位置:  技术问答>linux和unix

关于V4L2驱动中V4L2_MEMORY_USERPTR的问题

    来源: 互联网  发布时间:2016-10-10

    本文导语:  在V4L2驱动中,有三种使用方式,其中的一种就是V4L2_MEMORY_USERPTR。V4L2_MEMORY_USERPTR表示使用用户空间内存。编程者在用户空间申请了内存后,可以通过这种方式,将该空间送到kernel空间使用。 我的问题是:在用户空间...

在V4L2驱动中,有三种使用方式,其中的一种就是V4L2_MEMORY_USERPTR。V4L2_MEMORY_USERPTR表示使用用户空间内存。编程者在用户空间申请了内存后,可以通过这种方式,将该空间送到kernel空间使用。
我的问题是:在用户空间申请的内存是逻辑空间,其物理上未必是连续的;而在kernel空间使用的内存应该是物理上连续,尤其是在kernel空间将该内存空间送给底层的硬件,比如视频编解码器使用(它们需要的是物理上连续的空间)。在这种情况下,用户空间的不连续空间如何与kernel里的要求的连续空间兼容的?用户空间的逻辑地址是如何转换成kernel空间的物理地址的?
望高手指点,谢谢了先。

|
楼主,请注意几个概念:
在用户空间申请的内存是逻辑空间(注,是线性地址),其物理上未必是连续的;
而在kernel空间使用的内存应该是物理上连续(注,也不一定是连续的物理内存)。

逻辑地址(logical address):包含在机器语言指令中用来指定一个操作数或者一条指令的地址。即程序编译后形成的地址。

线性地址(linear address)或也叫虚拟地址(virtual address): 
逻辑地址,经过MMU的分段单元的硬件电路转换后,形成线性地址,接着被子第二个称为分页单元的硬件电路把线性地址转换成物理地址。

物理地址(physical address):
用于内存芯片级的单元寻址,与处理器和CPU连接的地址总线相对应。

参《ULK》第三版,page 40 to 41.

|
本帖最后由 wenxy1 于 2010-10-25 21:04:47 编辑
在用户空间申请的内存是逻辑空间(注,是线性地址),其物理上未必是连续的;
举个例子:
char *p1 = (char *) malloc(sizeof(short));  /* 分配的heap memory物理上连续 */
char *p2 = *char *) malloc(1024 *10); /* 这10K heap meory极不可能在物理上连续,若以1个内存页以1K计算,即有10个内存页 */

而在kernel空间使用的内存应该是物理上连续(注,也不一定是连续的物理内存)。 
举个例子:
kmalloc分配的内存在物理上是连续的;
vmalloc分配的内存在物理上可能不是连续的。

到底物理是否连续,依赖CPU的MMU(内存管理单元)的实现,以IA32体系为例,一般是段页式管理方式。

|
http://linux.chinaunix.net/bbs/thread-919019-1-7.html

这是CU上不错的文章,仅供参考!

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • v4l2输出格式的问题
  • 关于v4l2摄像头的问题
  • V4L2 抓取图像出问题
  • v4l2视频采集 问题
  • V4L2获取摄像头图像问题
  • v4l2和h.264的问题
  • .net/c#/asp.net iis7站长之家
  • v4l2参数问题
  • v4l2 视频采集 监控 问题
  • linux V4L2 问题 fd=::open(dev_name,O_RDWR) 中的 =:: 什么意思??与=有什么区别(在一个.cpp文件中)??
  • v4l2的安装问题
  • v4l2的input/output 错误问题
  • 关于V4L2与vpfe的关系
  • v4l2视频采集直接读取帧缓冲
  • 请问论坛上有没有对LINUX下的视频接口V4L2了解的吗?
  • v4l2亮度 饱和度 对比度在videodev2.h中对应那个结构体啊?
  • linux下V4L2编程,ioctl VIDIOC_DQBUF时,Invalid Argument出错信息,什么原因呢?
  • 高分求教,如何用v4l或者v4l2 截取mpeg 或者mpeg4 文件~~
  • 关于v4l2的一点疑问
  • linux下V4L2编程,ioctl VIDIOC_DQBUF时,为什么总是返回-1呢?如何解决?
  • 如何用V4L2编程接受电视盒采集到的视频信号,以及如何在GTK中实时显示


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3