v4l2驱动系列博客,链接 http://www.cnblogs.com/ronnydm/category/867278.html
摘要: 1. vb2_mem_ops 2. vb2_io_modes 对于Camera这种流数据,通常是使用VB2_MMAP或VB2_USERPTR。 3. vb2_buffer_state 4. vb2_buffer 5. vb2_ops 6. vb2_queue
阅读全文
posted @
2016-08-28 21:09若离相惜 阅读(396) |
评论 (0)
编辑
摘要: 关于videobuf,即V4L2如何实现高性能的和用户空间的Buffer交互,这部分内容应该是V4L2中最难以理解的部分了。 看文档:kernel/Documentation/video4linux/videobuf. videobuf的功能是V4L2 driver和user space之间的粘合层
阅读全文
posted @
2016-08-24 11:15若离相惜 阅读(134) |
评论 (0)
编辑
摘要: 我们从代码的角度看看,如何调用到我们设定的ioctl。 1. 我们在驱动程序中,分配了结构体struct video_device,并做了设定,然后调用video_register_device进行注册。在video_device的设置中,存在ioctl的设置。 从上述代码可以看到,我们在驱动中只要
阅读全文
posted @
2016-08-22 19:55若离相惜 阅读(349) |
评论 (0)
编辑
摘要: 通过上两篇文章,我们已经成功的建立了/dev/video0这个字符设备,此时,在UserSpace就可以打开该设备,完成相应的调用。 总结如何使用V4L2架构建立我们自己的设备驱动,其实就是以下3个结构体的设置及注册: 1. struct v4l2_device 2. struct v4l2_sub
阅读全文
posted @
2016-08-19 17:03若离相惜 阅读(382) |
评论 (0)
编辑
摘要: 1. v4l2_device_register 2. v4l2_i2c_new_subdev_board 上边我们说到在加载ov8858 module时,调用了至关重要的函数:v4l2_i2c_subdev_init: 在v4l2_i2c_new_subdev_board中,加载ov8858 mod
阅读全文
posted @
2016-08-19 11:31若离相惜 阅读(155) |
评论 (0)
编辑
摘要: 一. 思路 不管V4L2如何封装,始终是一个Driver,那么Driver必然会提供对User空间的file_operations,所以file_operations是线索起点。 终点就是V4L2可以正确调用到我们注册的关于Sensor和ISP的操作接口. 二. 起点 此时此刻,我们发现V4L2的m
阅读全文
posted @
2016-08-18 18:00若离相惜 阅读(163) |
评论 (0)
编辑
摘要: 在/dev下被创建的真正的设备节点是使用video_device结构体(v4l2-dev.h)。这个结构体同时也可以动态分配或嵌入到一个更大的结构体。 动态分配: 如果你嵌入到一个更大的结构体,你必须设置release()函数回调到你自己的函数: release回调必须设置并且当最后一个使用vide
阅读全文
posted @
2016-08-17 18:01若离相惜 阅读(306) |
评论 (0)
编辑
摘要: v4l2-common.h 对一个I2C驱动添加v4l2_subdev支持的建议方式是将v4l2_subdev嵌入到每一个I2C设备实例的state struct。如果设备非常简单,可以直接创建v4l2_subdev。 典型的state struct类似如下: v4l2_subdev结构体的初始化:
阅读全文
posted @
2016-08-17 14:57若离相惜 阅读(336) |
评论 (0)
编辑
摘要: 除了通过v4l2_subdev_ops结构体暴露kernel API,V4L2 sub-devices也可以被用户空间应用直接控制。 v4l-subdevX的设备节点可以在/dev下被创建来直接访问sub-devices。如果一个sub-device支持用户空间直接配置,必须在注册前设置V4L2_S
阅读全文
posted @
2016-08-17 12:57若离相惜 阅读(209) |
评论 (0)
编辑
摘要: 大多数的驱动程序需要和sub-devices通信。这些设备可以完成各种任务,但是通常是处理音频或视频的muxing,encoding,decoding。webcams通常子设备是:sensor和camera controllers。通常,他们是I2C设备。为了给这些sub-devices提供一致的驱
阅读全文
posted @
2016-08-16 11:05若离相惜 阅读(817) |
评论 (0)
编辑
摘要: 一. 文档位置:linux-3.08/Documentation/video4linux/v4l2-framework.txt 二.翻译总结: V4L2驱动程序往往是很复杂的,其原因是硬件的复杂性:大多数设备有多个IC,从而导出多个设备节点/dev,并且创建了non-V4L2设备如DVB、ALSA,
阅读全文
posted @
2016-08-15 18:05若离相惜 阅读(445) |