LINUX摄像头驱动分析

news/2024/11/30 2:42:30/

背景:RK3288 MIPI OV摄像头 V4L2框架

一.RK MIPI

 

二.V4L2框架

现在,从设备树开始,分析video0是如何构建起来的。
rk3399-linux.dtsi:     compatible = "rockchip,rk3399-cif-isp";在驱动目录下查找rockchip,rk3399-cif-isp
在media/platform/rk-isp10/cif_isp10_v4l2.c-->cif_isp10_v4l2_of_match找到。所以,我这个rk3399 sdk版本下摄像头走rk-isp v4l2框架。
cif_isp10_v4l2_drv_probe-->match = of_match_node(cif_isp10_v4l2_of_match, node); 找到设备树上的cif_isp1: cif_isp@ff920000节点,该节点内容见附录。-->cif_isp10_create 构建ISP-->cif_isp10_pltfrm_soc_init 初始化ISP-->cif_isp10_img_srcs_init 初始化图像源设备(摄像头)-->cif_isp10_pltfrm_get_img_src_device 查找ISP10下cif接口的图像源设备-->phandle = of_get_property(node, "rockchip,camera-modules-attached", &size); //根据该节点内容可知,这里就通过rockchip,camera-modules-attached找到camera4了-->client = of_find_i2c_device_by_node(camera_list_node);-->img_src_array[num_cameras] = cif_isp10_img_src_to_img_src(&client->dev, &(cif_isp10_dev->soc_cfg));-->cif_isp10_img_src_ops[i].ops.to_img_src-->cif_isp10_img_src_v4l2_i2c_subdev_to_img_src //至此核心层就能和摄像头设备驱动绑定了-->i2c_get_clientdata--> v4l2_subdev_call(subdev, core, ioctl, PLTFRM_CIFCAM_ATTACH, (void *)soc_cfg);-->ov_camera_module_ioctl-->ov_camera_module_init-->ov_camera_module_attach-->"custom->check_camera_id(cam_mod)"//将从phandle遍历出来的i2c设备中找到符合条件的client,并将client和当前ISP绑定。-->cif_isp10_v4l2_register_video_device-->vdev->ioctl_ops = ioctl_ops; 使用最后一个参数作为和上层交互的ioctl-->video_register_device 在这里将/dev/videox注册上-->g_cif_isp10_v4l2_dev[g_cif_isp10_v4l2_dev_cnt] =cif_isp10_v4l2_dev; //将设置、注册好的ISP加入核心层中。

引自:(202条消息) rk3399调试ov2659(camera模块@dvp接口)--源码分析_黄进发的博客-CSDN博客_rk3399 v4l2 这个兄弟分析的很透彻

三.实现

 

 


http://www.ppmy.cn/news/363582.html

相关文章

在X86平台上安装摄像头驱动及应用

http://mxhaard.free.fr处下载的需的驱动,内核版本是2.6.11以上的用gspca,2.6.11以下的用spca5xx(这也不是绝对的,因为我曾在2.6.17下也驱动成功过)。 目录 [隐藏] 1 驱动安装 1.1 编译内核1.2 安装驱动1.3 查看摄像头型号 2 安装摄像头应用…

Android网卡网速测试

1.可以使用speedtest.apk测试 2.使用iPerf进行网络吞吐量测试 2.1 unbunt环境 1)apt-get install iperf (安装iperf) 2) iperf -s (作为服务端启动) 3)iperf -c 127.0.0.1 (另起窗口自测命…

3. SpringCloudAlibaba、nacos 实现配置中心

一、微服务中配置文件的问题 1.1 配置文件的问题: 配置文件的数量会随着服务的增加持续递增单个配置文件无法区分多个运行环境配置文件内容无法动态更新,需要重启服务 1.2 引入配置中心 引入配置中心:刚才架构就会成为这样。是由配置中心统…

如何开发wince usb 摄像头的驱动-中星微摄像头驱动

这段时间成功的开发了中星微301H摄像头的wince驱动和视频采集程序。中星微摄像头出来的数据为JPEG格式,我们将其直接读出,交给应用程序来解码,就可以显示图像。中间的过程我们可以参考Linux GSPCA的驱动,将其移植到wince中就可以了…

基于Linux 3.0.8 Samsung FIMC(S5PV210) 的摄像头驱动框架解读(一)

作者:咕唧咕唧liukun321 来自:http://blog.csdn.net/liukun321 FIMC这个名字应该是从S5PC1x0开始出现的,在s5pv210里面的定义是摄像头接口,但是它同样具有图像数据颜色空间转换的作用。而exynos4412对它的定义看起来更清晰些&…

linux系统下 USB 摄像头1080分辨率采集帧率低问题的解决方法

linux系统上一般使用 video4linux2来操作系统摄像。 1.安装一个 v4l2-ctrl工具: sudo apt install v4l-utils 2.查看摄像头支持的视频参数 sudo v4l2-ctl --all --list-formats-ext 显示信息参考如下(这是我的摄像头,不同的摄像头会有区…

Firefly-RK3399 USB摄像头驱动及SimpleCV安装测试

一、USB摄像头驱动 FireFly-RK3399这块板子搭载的摄像头驱动比较多,有两个MIPI-CSI、一个DVP的摄像头接口,此外还支持USB摄像头,功能比较强大,官方支持的摄像头列表如下ː 13M:OV13850/IMX214-0AQH5 8M:OV8…

Linux摄像头驱动第一篇之虚拟摄像头驱动vivi.c

本文学习自韦东山老师的摄像头驱动模块 目录 一 摄像头驱动程序学习切入点以及V4L2模型概览 二 简析虚拟视频驱动 VIVI.C 2.1 初始化、设置、注册过程2.2 简析vivi.c的open,read,write,ioctl过程 三 虚拟摄像头驱动的启动过程简析 3.1 查看虚拟摄像头应用程序启动虚拟摄像…