IMX6Q camera驱动总结 (2)

总体驱动理解如下:

1:如何在设备上创建一个摄像头文件,具体api是什么?

2:内核板级bsp做了什么?是如何与V4L2框架连接起来的?

3:我到底如何给板级bsp什么参数,才能让摄像头工作?

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

之前没有做过相关的camear 驱动经验,只是对V4L2 有所耳闻,但是知道一些基本的原生框架的API,于是我决定看看板级bsp做了什么让开发变得简洁。看了几天整理了如上内容决定依次解答。

 

1:对于原生V4L2 架构的API ,是  video_register_device(),该函数是会创建 /dev/videox 节点的,但是对于我们这款单板bsp ,官方api是  v4l2_int_device_register() ,其内部调用了原生api。

2:经阅读,发现mxc_v4l2_capture.c文件是做了一个camera的开天辟地的驱动。具体分析见 我的第三篇文章,这里做出一个总结。

    2-1:Camera驱动是做了驱动和设备信息的分离,该文件是driver框架的一部分,用于读取设备信息如 ipu_id 和csi_id ,sensor的分辨率,引脚复用等等,用来填充一个cam_data结构体

    这个cam_data至关重要,在以后的任何与设备的操作中,均要读取cam_data的信息。

  2-2 :camera驱动是分主从的,驱动主体作为主,设备驱动作为从,于是需要一个主从的匹配,匹配的过程是根据ipu_id 和csi_id 的。匹配成功会调用一个attach函数,这个attach会做一些默认操作和检查。

  2-3:任何对于 设备结点的 系统调用如 open Write ioctl 均会最终调用到  mxc_v4l_open  ,mxc_v4l_close ,mxc_v4l_do_ioctl,等等。

3:

这块是要进行区分,imx6q 支持并口输入和mipi输入,这两个需要设备驱动提供的参数也不尽相同。

对于并口传输要做以下步骤 

  1: csi_id , ipu_id ,camera_width,camera_height ,数据线的复用使能,i2c控制接口使能。

  2:在你的设备驱动里根据板机文件或者设备树 解析这些部分,获取到这些信息

对于mipi接口 :

  1: csi_id , ipu_id ,camera_width,camera_height ,mclock 

  2 : 获取这些信息填充一个sensor_data结构体,并使能时钟。

 

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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值