博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Camera驱动调试小记
阅读量:2153 次
发布时间:2019-04-30

本文共 1989 字,大约阅读时间需要 6 分钟。

Camera驱动调试小记


应用使用V4L2 API操作Camera设备是比较统一的,但是对Camera驱动的实现是多种多样了,比如UVC(USB免驱摄像头)以及SoC-Camera。

前者不需要额外的驱动程序,所以不用过多关心;后者是片上系统Camera的支持。针对SoC-Camera内核中标准的文档是。SoC-Camera和ASoC是一样的思想,最终实现SoC端的Host驱动与Guest端进行分离,这样就可以很方便地通过link将独立的host端驱动和独立的Guest端驱动联合起来。这么说来也可以分三个部分:

Machine、Platform和Sensor。其中Platform是CPU上的Camera Interface驱动(由CPU厂商提供),Sensor是具体的Camera模组驱动(由模组厂商提供),Machine驱动是具体自定义PCB的主板相关,将Platform和Sensor驱动连接起来(由具体主板设计者开发)。

drivers/media/video/rk30_camera_oneframe.cstatic struct soc_camera_host_ops rk_soc_camera_host_ops ={    .owner              = THIS_MODULE,    .add                = rk_camera_add_device,    .remove             = rk_camera_remove_device,    .suspend    = rk_camera_suspend,    .resume             = rk_camera_resume,    .enum_frameinervals = rk_camera_enum_frameintervals,    .cropcap    = rk_camera_cropcap,    .set_crop   = rk_camera_set_crop,    .get_crop   = rk_camera_get_crop,    .get_formats        = rk_camera_get_formats,    .put_formats        = rk_camera_put_formats,    .set_fmt    = rk_camera_set_fmt,    .try_fmt    = rk_camera_try_fmt,    .init_videobuf      = rk_camera_init_videobuf,    .reqbufs    = rk_camera_reqbufs,    .poll               = rk_camera_poll,    .querycap   = rk_camera_querycap,    .set_bus_param      = rk_camera_set_bus_param,    .s_stream = rk_camera_s_stream,   /* ddl@rock-chips.com : Add stream control for host */    .set_ctrl = rk_camera_set_ctrl,    .controls = rk_camera_controls,    .num_controls = ARRAY_SIZE(rk_camera_controls)};

想像是美好的,实现是残酷的。国内的厂商并没有完全按照这样做。比如一个型号的Sensor如果要应用在ROCKCHIP和Allwinner平台上,原本应该就提供同一个驱动程序就可以了,但是目前的情况是Sensor厂商提供各自针对相应平台的驱动程序。没有达到设计思想中的各司其职的效果,不过最终会朝着好的方向走的。

调试顺序:

1.(可不连接模组)上电时序 根据手册时序将AVDD,DVDD,IOVDD上电。

2.(可不连接模组)上电正常后,检测MCLK是否正常,一般为24MHz/48MHz。

3.(可不连接模组)PWDN和RESTB信号是否正常,重点在于电平切换有没有在正确的时间点上。

4.(可不连接模组)I2C信号是否正常,主要观察I2C寻址地址是否正确。

5.(需要连接模组)I2C信号信号第9个脉冲对应的SDA是否为低电平,是代表有ACK,反之无。

6.(打开相机应用)测试是否有PCLK/H/V/这三个信号致命,如果不正常会导致无法显示图像

7.(打开相机应用)DATA信号完全没有会使得绿屏(不一定全是这样),图像显示正常与否和DATA有关。

参考文档还有;测试工具有,还有。

转载地址:http://lhnwb.baihongyu.com/

你可能感兴趣的文章
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
iOS常用宏定义
查看>>
什么是ActiveRecord
查看>>
有道词典for mac在Mac OS X 10.9不能取词
查看>>
关于“团队建设”的反思
查看>>
利用jekyll在github中搭建博客
查看>>
Windows7中IIS简单安装与配置(详细图解)
查看>>
linux基本命令
查看>>
BlockQueue 生产消费 不需要判断阻塞唤醒条件
查看>>
强引用 软引用 弱引用 虚引用
查看>>