camera驱动电源配置_MTK-camera驱动流程总结-pei.pdf

Camera驱动流程总结

范军君

junjun.fan@

目录

1, Camera架构及流程简析

2, 初始化过程cameraid检测

3, Camera上电流程

4, Camera打开流程

Camera架构及流程简析

MTK平台camera架构:

Kernel 部分主要有两块:一块是imagesensor驱动,负责具体型号的sensor的id检测,上

电,以及在preview,capture,初始化,3A等等功能设定时的寄存器配置。另一块是ispdriver,

通过DMA将sensor数据流上传。

本篇主要介绍imagesensor驱动的流程。

HAL层这边主要 3块,一块是imageio,主要是数据buffer上传的pipe。一块是drv,包

含imgsensor和isp 的hal层控制。最后是featureio,包含各种3A等性能配置。

本篇对HAL涉入不深,只在分析开机过程的id检测时会分析hal层的控制,属于第二块。

流程简析:

主要发生在两个时间点:开机过程中camera 的动作以及打开应用时camera 的动作。

开机时,camera完成了sensor框架的初始化,id检测,以及上下电操作。

打开应用时,camera会有上电,完成寄存器的初始配置,向上层传送基本参数及配置信息,

以及preview和capture模式循环。

初始化过程cameraid检测

代码分析:

=>alps/mediatek/custom/common/kernel/imgsensor/kd_sensorlist.c

module_init 说明这段code在kernel初始化,也就是手机开机时运行。

在模块初始化函数中,注册一个i2cdevice,同时注册了一个platformdriver

注意drivername, 匹配platform device 需要名字一致。Platform 总线为虚拟总线,注册

platformdriver主要目的是隔离上下层,增强代码的可移植性。

alps/mediatek/platform/mt6582/kernel/core/mt_dev.c

mtk平台用到的platformdevicej基本都在这个文件中注册,这样device和driver就能匹配上

了。

在platformprobe 中注册i2cdriver 和之前的i2cdevice 匹配

配置 i2cclock ,注册一个字符设备。一般驱动中注册字符设备,多是利用字符设备的fops

与上层交互,特别是ioctl.

这些就是具体的fops

open只是用来计数目前打开camera 的数量,所以主要的交互功能要靠ioctl来完成

这个函数很重要,沟通上下层,提供接口。 这边的Command用幻字定义,可以保持cmd

的唯一性,并具备可读性。Command可带不定长参数。

下面是switchcase,通过ioctl传下来的参数选择调用分支

支持的command汇总,包括camera开机过程中上电,id检测以及imagesensor 的参数获取

KDIMGSENSORIOC_X_SET_DRIVER 和 KDIMGSENSORIOC_T_CHECK_IS_ALIVE 这

两个func在开机初始化检测id会被hal层调用。

=>mediatek/platform/mt6582/hardware/camera/core/drv/imgsensor/imgsensor_drv.cpp

impSearchSensor 在开机过程中被调用,用于检测id,匹配main/subimagesensor

GetSensooInitFuncList 这个函数主要为了获得下表

包含了id,name和一些方法的调用,因为在driver层有相似的架构,放在后面分析具体过程。

=>impSearchSensor

Hal层开始探测sensor, 应为有两颗sensor,外层循环两次

内层循环根据上面的sensor列表来,最大支持兼容16颗sensor,hal层特效,如果没有整合

特定imagesensor 的hal层代码,这边会直接退出。

getCameraDefault 调用很重要,hal层camera 的所有特效参数,包括3A,shading都在这边设

定。getCameraDefault 通过之前的Sensorlist来连接特定imagesensor的具体实现。下表是2675

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值