---恢复内容开始---

1 先从应用程序入手看看应用流程对驱动做了哪些事情

这个首先对传入的 参数做了处理,用来重写驱动默认给的参数

这里先打开/dev/video3 ,这个设备节点是由驱动创建的。

该函数是一个设置参数的过程,内核接收一些结构体改变自己默认参数

首先进行一个查询能力的函数,传入struct v4l2_capability 这个结构体里面,驱动会设置这个结构体。

如驱动代码所示,这个设备有多个能力,首先是个视频输入设备,还可以进行视频叠加,支持系统IOCTL控制,支持系统调用IO读写。

接着使用VIDIOC_S_INPUT传入了一个参数到驱动,应用程序给的1,那么看驱动做了什么处理。

这个是一个选择数据流向内存的一个路由,驱动框架定义了两个流向,一个是

“CSI IC MEM”  一个是  “CSI MEM”,第一个需要经过IC的处理到内存,另外一个不需要

如驱动代码所示,我们传入的参数为1,于是选择了第一个流向,其中最重要的是.name 用来进行strcmp匹配。

接着

设置这个结构体为视频捕获设备类型,否则驱动会返回错误,

驱动将cam_data的crop_bounds和crop_defrect值传给应用层传来的结构体,驱动的crop_current是根据具体设备来的是设备相关驱动做的,然后传给框架驱动的。

然后根据设备驱动传来的defrect值传给crop.c 接着调用VIDIOC_CROPCAP命令字根据

具体设备的v4l2_crop值进行判断,校验合适后写入寄存器。

这里的红色框是写入真实寄存器的,用来设置csi的窗口大小和位置

接着

驱动同样以一个struct v4l2_format *sf接受,调用mxc_v4l2_s_fmt函数

在应用传给驱动的结构体struct v4l2_format fmt ,width是0,height是0,pixformat

是UYVY格式,但是在接下来的过程中,还是会被设备驱动定的cam_data值覆盖。

接着

这个是很重要的一步,为摄像头发来的数据分配内存,

分配内存最核心的API是 dma_alloc_coherent

函数,分配好之后,将内存地址赋值给

cam->frame[i].vaddress这个虚拟地址

至此设置部分完毕。

接着

这里又打开了另外一个设备结点/dev/mxc_ipu,这个是与底层数据传输相关的节点

又打开了一个framebuffer设备,用于显示,可以是HDMI也可以是LCD屏,然后对此设备进行显示设置。

这个是正式开启Camera进行数据传输的函数

最终会调用

最终驱动会调用mxc_streamon

=================================================================================

我发现找不到可以上传示例代码的地方,想找Camera应用编程的实例代码还是私信我吧!

---恢复内容结束---

转载于:https://www.cnblogs.com/coversky/p/10885412.html

IMX6Q camera 驱动总结( 1 )相关推荐

  1. Android高通平台调试Camera驱动全纪录

    项目比较紧,3周内把一个带有外置ISP,MIPI数据通信,800万像素的camera从无驱动到实现客户全部需求. 1日 搭平台,建环境,编译内核,烧写代码. 我是一直在Window下搭个虚拟机登服务器 ...

  2. 基于WINCE6.0+S3C2443的camera驱动

    ********************************LoongEmbedded************************ 作者:LoongEmbedded(kandi) 时间:201 ...

  3. camera驱动框架分析(上)

    前言 camera驱动框架涉及到的知识点比较多,特别是camera本身的接口就有很多,有些是直接连接到soc的camif口上的,有些是通过usb接口导出的,如usb camera.我这里主要讨论前者, ...

  4. 图像处理自学(五):CAMERA驱动软件硬件架构V4L2

    一.CAMERA驱动框架V4L2 芯片模块对应Soc的各个子模块,video_device结构体主要用来控制Soc的video模块,v4l2_device会包含多个v4l2_subdev ,每个v4l ...

  5. 【Camera专题】Sprd-深入浅出Camera驱动框架1(HAL层-Kernel层)

    一.前言 本文主要研究展讯平台Camera驱动和HAL层代码架构,熟悉展讯Camera的控制流程. 平台:Sprd-展讯平台 Hal版本:[HAL3] 知识点如下: 从HAL层到deiver层 1.C ...

  6. 7.camera驱动06-自己实现v4l2驱动-虚拟摄像头

    1. 框架分层 实际上的v4l2框架: v4l2本质是还是一个字符设备驱动,有自己的fops. 每注册一个video_device都会以次设备号为下标放到v4l2层的一个数组里. 应用调用open函数 ...

  7. Android MTK Camera驱动代码分析

    一.Camera调用过程:      imgsensor起到承上启下的作用,在系统起来时会创建整个camera驱动运行的环境,其中主要的文件和函数如下框图所示,先设备挂载时会调用注册platform设 ...

  8. MTK平台开机初始化时 camera驱动流程|MTK camera调试常见几十种问题处理方法

    转载:https://www.jianshu.com/p/75ab1d82bbd3 mtk的驱动多是以模块加载的方式(module_init():module_exit():)加载到内核中去的:正因为 ...

  9. Camera驱动基础--硬件接口相关知识介绍

    一. LDO, PMIC,PMU, GPIO LDO: 低压差线性稳压器(low dropout regulator): LDO内部有四个部分组成:分别是基准参考电压,误差放大器,分压抽取电路和晶体管 ...

最新文章

  1. 什么是浏览器跨域访问操作,js如何实现?
  2. Android隐藏标题栏,全屏显示
  3. 重新ICP,在没有Matlab的日子里
  4. 【直观理解】一文搞懂RNN(循环神经网络)基础篇
  5. 实验12 编写0号中断的处理程序
  6. 微软ping程序源代码完整版(附详细的注释)
  7. Bootstrap HTML 编码规范之布尔型属性
  8. Python一题多解:水仙花数
  9. 蓝桥杯 基础练习 龟兔赛跑预测
  10. [转载] 晓说——第23期:大师照亮八十年代
  11. 软件设计师中级-笔记
  12. 算法---LeetCode 113. 路径总和 II
  13. 双网卡 跃点_关于windows 双网卡和跃点数研究
  14. c语言信封比大小,从C打印信封#
  15. QC4+充电协议_原来那么多手机支持QC4+快充,小米最多,只是之前用错了充电头...
  16. 51单片机 普中V2 数字时钟 电子时钟 万年历 DS1302 LCD1602 AT24C02
  17. python脚本案例-python+adb命令实现自动刷视频脚本案例
  18. Codeforces Round #789 (Div. 1) B. Tokitsukaze and Meeting
  19. vue检测当前是什么浏览器
  20. LinkedIn热 国内职业社交网络市场在哪里

热门文章

  1. Authentication in Loopback Applications Against Bluemix(在针对Bluemix的Lookback应用中进行身份认证)
  2. 操作系统微内核和Dubbo微内核各自优缺点!
  3. android one 壁纸,壁纸喵-看到就想哇哦一声的壁纸
  4. Clickhouse—基础架构
  5. Qt自定义文本输入框实现支持输入度分秒和度两种格式(简易无限制输入)
  6. 配置华为防火墙将默认的安全策略放行
  7. 电脑各种故障的维修收集
  8. arcgis怎么关联excel表_在arcgis中添加excel表格数据-ArcGIS如何将Excel里的数据关联至地图上...
  9. 汇成股份科创板上市:年营收8亿市值146亿 郑瑞俊负债超3亿
  10. 新闻!龙漫集团“有艺翼”行动@Kid.ArtWing+国际少儿艺术展在国家会议中心开幕