上海天局信息技术有限责任公司

网站首页 > 天局论坛 > Drivers

camera驱动概述

2018-11-01 13:30:15 上海天局信息技术有限责任公司 已读

https://blog.csdn.net/marshal_zsx/article/details/70217502

camera驱动概述

1 概述

    camera模块是经常进行调试修改的模块,所以熟悉camera的工作流程以及工作原理将会大大的提供工作效率,但对于整个android系统camera是个十分复杂的模块,下面只是对camera的驱动加载进行分析。

2 名词释义

2.1 四个供电

  • a) VCAMD 就是DVDD数字供电,DVDD电压用CAMERA_POWER_VCAM_D表示;

  • b) VCAM_IO 就是 VDDIO 数字 IO 电源主要给 I2C 部分供电,VDDIO 电压用CAMERA_POWER_VCAM_D2表示;

  • c) VCAMA 就是 AVDD 模拟供电,AVDD 电压用CAMERA_POWER_VCAM_A表示;

  • d) VCAM_AF 是对 Camera 自动对焦马达的供电,DVDD电压用CAMERA_POWER_VCAM_A2表示。

2.2 Sensor Input 部分

  • a) Reset 信号,用于复位、初始化。

  • b) Standby/PowerDown 信号,用于进入待机模式,降低功耗。

  • c) Mclk,即 MasterClock 信号,是由 BB 端提供。

2.3 Sensor OutPut 部分

  • a) Pclk,即 PixelClock 信号,由 MCLK 分频得到,作为外部时钟控制图像 传输帧率;

  • b) HSYNC,行同步信号,其上升沿表示新一列行图像数据的开始;

  • c) VSYNC,帧同步信号,其下降沿表示新的一帧图片的开始;

  • d) D0-D9 一共 10 根数据线(8/10 根等)。

2.4 I2C 部分

  Camera也是挂载在I2C总线上的设备,主要利用I2C总线对寄存器进行一些读写,与其他该做在I2C总线上的设备一样,这部分就两根线SCL和SDA:

  • SCL,I2C 时钟信号线和

  • SDA,I2C 数据信号线。 

3 Camera基本架构

这里写图片描述
  上图的架构相信大家都有了一定的了解,android 将系统大致分为应用层、库文件和硬件抽象层、Linux 内核三层。在底层的内核空间,Camera 的 driver 将其驱动起来以后,将硬件驱动的接口交给硬件抽象层,android 上层的 Camera 应用程序在 android 实时系统中的虚拟机中,加载 android 留给 Camera 公用的一些库文件,调用硬件抽象层的接口来控制 Camera硬件来实现功能。当然,如果是 Raw 模式的 Camera,还需要在硬件抽象层调用一些参数来控制 Camera 的效果。Kernel 部分主要有两块:一块是image sensor 驱动,负责具体型号的sensor 的id 检测,上电,以及在preview,capture,初始化,3A 等等功能设定时的寄存器配置。另一块是isp driver,通过DMA 将sensor 数据流上传。HAL 层这边主要分3 块,一块是imageio,主要是数据buffer 上传的pipe。一块是drv,包含imgsensor 和isp 的hal 层控制。最后是feature io,包含各种3A 等性能配置。

4 总结

  我们简单地了解Camera相关名词,后面我们将一起来分析camera驱动模块加载,总线、设备、驱动之间的联系。因本人是刚开始写博客,不足之处,还望海涵。另外特别期待大家一起进行技术交流。


Powered by MetInfo 5.3.17 ©2008-2021 www.metinfo.cn