您的位置:首页 > 其它

Camera驱动预调试 Review

2014-05-07 23:10 99 查看

Camera驱动Review

Copyright of土麦2014

shuwdy@163.com

2014-5-4

一:硬件相关

1. Camera 模组的组成和工作原理:

镜头(lens),传感器(Sensor),镜像信号处理器(ISP)

1.1 镜头:将对景物生成光学图像,并且投射到图像传感器的表面上

1.2 传感器

Sensor将从lens上传导过来的光线转换为电信号,并通过IC内部的AD转换器转成电信号,最后将该信号送给ISP,还原影像。表面含有几十万到几百万的光电二极管,光电二极管受到光照将产生电荷,输出Raw data:



1.3 镜像信号处理器

对Raw data进行加工处理,然后以相应的IO接口输出给主机端:



1.4 Camera 原理

景物(scene)通过镜头(lens)生成光学图像,投射到图像传感

器(sensor)表面上,然后转为电信号,经过A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(ISP)中加工处理,然后以相应的IO接口输出给主机端,最后手机端可以预览,拍照(Jpeg编码)和录像(video编码。

2. 高通平台端Camera模块组成



其中Microprocessor 负责对整个Camera应用的控制:

它可以从RAM获取被QDSP处理过的数据

它可以访问MDP(Mobile Display Processor)要求图像在LCD上更新。

也可以通过串行接口控制Image Sensor。

最后,它能控制QDSP处理图像的过程。

CAMIF&VFE:

CAMIF由QDSP控制,主要实现高通芯片与camera的电气连接。

VFE(Video Front End) 通过CAMIF接收Sensor输入的数据,转换成编码器可以接受的格式。

Video Core: 由QDSP控制,主要为一些应用提供复杂算法。

MDP : 显示处理器,由Microprocessor控制, 用于实现与LCD显示相关的功能。

3. 数据流

VFE接收到数据后对数据的处理流程:



4. RGB&YUV色彩空间

RGB 色彩模式使用RGB模型,为图像中每一个像素的RGB分量分配一个0~255范围内的强度值。RGB图像只使用三种颜色,就可以使它们按照不同的比例混合,在屏幕上重现16777216种颜色

YUV: Y指亮度,U和V表示两个色度信号,它的特点是亮度和色度信号是分离的。

YUV<->RGB:



二:驱动软件相关

1. 在Kconfig 中加入配置信息:



在Makefile中添加编译命令:



2. 模块加载:



3. 注册i2c设备



4. Sensor_Probe函数的实现

第一部分:主要实现芯片的端口配置和Device ID 的确认:


4.1 其中rc = i2c_add_driver(&hi256_i2c_driver)完成i2c driver的注册:



4.2 hi256_probe_init_gpio(info) 中通过调用

gpio_request()和gpio_tlmm_config完成了对通用I/O端口的初始化和配置



4.3 hi256_power_on_seq()实现了Sensor的启动



对应的启动时序图:



4.4 static void hi256_power_off_seq()实现了Sensor的关闭:



对应的关闭时序图:



4.5 hi256_read_model_id() 读取了模组的ID:



第二部分 主要完成初始化和配置:



4.6 hi256_sensor_open_init() 通过调用

hi256_power_on_seq() 和hi256_sensor_setting()完成了Sensor的打开和设置

4.7 hi256_sensor_config()通过不同的cfgtype分别调用了以下主要函数进行配置:

case CFG_SET_MODE: hi256_set_sensor_mode 模式配置

case CFG_SET_EFFECT: hi256_set_effect 效果配置

case CFG_SET_BRIGHTNESS: hi256_set_brightness

case CFG_SET_CONTRAST: hi256_set_contrast

case CFG_SET_EXPOSURE_MODE: hi256_set_exposure_mode

case CFG_SET_SATURATION: hi256_set_saturation

case CFG_SET_SHARPNESS: hi256_set_sharpness

……

5. hi256_i2c_probe 的实现:



其中hi256_init_client的实现如下:



hi256_sysfs_add的实现如下:



Reference:

About Camera Driver

高通Camera Driver的调试小结

503Camera实现

……

Thanks!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: