背景: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 这个兄弟分析的很透彻

三.实现

LINUX摄像头驱动分析相关推荐

  1. linux v4l2系统详解,Linux摄像头驱动学习之:(一)V4L2_框架分析

    这段时间开始搞安卓camera底层驱动了,把以前的的Linux视频驱动回顾一下,本篇主要概述一下vfl2(video for linux 2). 一. V4L2框架: video for linux ...

  2. 【Linux驱动】Linux--USB免驱摄像头驱动分析(基于5.4内核)

    Linux--USB免驱摄像头驱动分析(基于5.4内核) Linux摄像头系列文章 Linux--USB免驱摄像头驱动分析 一.UVC简介 二.UVC功能 三.如何写一个USB摄像头驱动 四.Linu ...

  3. 深入学习Linux摄像头(三)虚拟摄像头驱动分析

    深入学习Linux摄像头系列 深入学习Linux摄像头(一)v4l2应用编程 深入学习Linux摄像头(二)v4l2驱动框架 深入学习Linux摄像头(三)虚拟摄像头驱动分析 深入学习Linux摄像头 ...

  4. linux cmos摄像头,Linux摄像头驱动4——CMOS摄像头

    Linux摄像头驱动学习第四篇,对CMOS摄像头进行学习,实现在Tiny4412上使用CMOS摄像头采集图像,在LCD上显示图像. 坚持到了Linux摄像头学习的最后一部分--CMOS摄像头. 写完本 ...

  5. linux摄像头教程,linux 摄像头驱动编写方法教程

    从某个角度来说,摄像头是各个厂家主打的应用功能.那么,linux是如何支持摄像头的,我们可以来看一下?本篇文章主要介绍了详解linux 摄像头驱动编写,小编觉得挺不错的,现在分享给大家,也给大家做个参 ...

  6. Linux摄像头驱动1——vivid(转)

    转载自 hceng blog: https://hceng.cn/2018/03/08/Linux%E6%91%84%E5%83%8F%E5%A4%B4%E9%A9%B1%E5%8A%A81%E2%8 ...

  7. Linux摄像头驱动1——vivid

    CSDN仅用于增加百度收录权重,排版未优化,日常不维护.请访问:www.hceng.cn 查看.评论. 本博文对应地址: https://hceng.cn/2018/03/08/Linux摄像头驱动1 ...

  8. linux串口驱动分析

    linux串口驱动分析 硬件资源及描写叙述 s3c2440A 通用异步接收器和发送器(UART)提供了三个独立的异步串行 I/O(SIO)port,每一个port都能够在中断模式或 DMA 模式下操作 ...

  9. Linux spi驱动分析(四)----SPI设备驱动(W25Q32BV)

    一.W25Q32BV芯片简介 W25X是一系列SPI接口Flash芯片的简称,它采用SPI接口和CPU通信,本文使用的W25Q32BV容量为32M,具体特性如下: 1.1.基本特性 该芯片最大支持10 ...

  10. Linux spi驱动分析----SPI设备驱动(W25Q32BV)

    转载地址:http://blog.chinaunix.net/uid-25445243-id-4026974.html 一.W25Q32BV芯片简介 W25X是一系列SPI接口Flash芯片的简称,它 ...

最新文章

  1. 关于OUTLOOK 2007邮件无法打印的问题解决方法
  2. 来学习开发一个网页版马里奥小游戏吧
  3. torch yolov3训练性能优化
  4. C# 执行查询语句,返回DataSet
  5. Django扩展自定义manage命令
  6. 基于百度AI+jquery-webcam+servlet实现人脸识别登录,兼容各主流浏览器
  7. mysql+nest+嵌套事务_MySQL——事务
  8. [PYTHON] 核心编程笔记(14.Python执行环境)
  9. centos7安装详细图解_开封温包规格,电热执行器安装详细图解
  10. oracle除了什么之外,Oracle翻译
  11. 软件测试系统学习流程和常见面试题
  12. windows2003与文件共享有关的几个进程
  13. easyui源码翻译1.32--LinkButton(按钮)
  14. python截取某一段文字分栏_Python文本数据互相转换(pandas and win32com)
  15. java csrf 跨域_使用javascript跨域请求与CSRF
  16. freeswitch安装步骤(源码编译安装)
  17. Hbase+JAVAWeb实现超市仓库管理系统
  18. 音乐节拍自动标记插件 BeatEdit 2 for Pr
  19. vv7无法启动显示发动机故障_启动系统故障引起的发动机无法启动诊断方法
  20. 嵌入式系统开发-麦子学院(12)——ARM Bootloader开发

热门文章

  1. LDA Effect Size分析 LEfSe详解
  2. 蓝桥杯算法训练VIP-调和数列问题
  3. 外卖客户端容器化架构的演进
  4. win10查看服务器共享文件夹,Win10怎么样查看共享文件夹
  5. 惯性导航技术, IMU, AHRS
  6. OneDrive免费5T云盘空间
  7. 计算机C盘空间减少,为何我的C盘空间突然减少好几个G?
  8. 转载:.Net 程序集 签名工具sn.exe 密钥对SNK文件 最基本的用法
  9. ddos应急处理_来看看DDoS攻击应急预案
  10. html中calc属性什么意思,CSS3中新属性calc()的详细介绍