[Camera Drv]系统是如何为Sensor匹配Lens Driver
来源:互联网 发布:安卓内核优化seeder 编辑:程序博客网 时间:2024/06/07 13:40
ProjectConfig.mk 中的lens配置项并不能指定某个sensor使用哪个Lens driver,Lens driver的匹配过程是在打开相机的过程中执行的,通过Sensor ID按一定规则搜索Lens driver 数组lenslist[]来获取Lens driver。
Lens driver 数组lensList[] 是一个结构体数组,在文件alps\mediatek\custom\$platform$\hal\lens\src\lenslist.cpp 或alps\mediatek\custom\common\hal\lens\src\lenslist.cpp中,这个结构体为
SensorId:配置成对应的sensor的id值,配置成DUMMY_SENSOR_ID,表示这个lens driver可以匹配给任何sensor
LensId:Lens driver的唯一标识
LensDrvName:是实现AF 功能的驱动对应的设备驱动节点名,如对于fm50af,实现AF功能的是模块FM50AF.c ,这个driver会生成一个设备驱动节点 /dev/FM50AF,而对于sensordrive,实现AF功能的模块kd_sensorlist.c,这个driver会生成一个设备驱动节点 /dev/kd_camera_hw。
getlensdefault:为指向AF tuning参数文件中的一个函数指针
Lenslist[] 默认配置如下:
搜索数组Lenslist[]的规则如下
搜索结果为m_u4CurrLensIdx,初始值为0,即默认指向第一个元素
第一遍搜索:m_u4CurrLensIdx指向LensId为 DUMMY_LENS_ID、SENSOR_DRIVE_LENS_ID或FM50AF_LENS_ID 的元素,结果m_u4CurrLensIdx指向数组中符合条件的最后一个元素。
第二遍搜索:看数组中是否有SensorId 和当前的要找Lens driver的sensor的ID相等的元素,如果有结果为符合条件的第一个元素,没有的话则结果为第一遍搜索到的结果。
MT6577中代码如下:
MT6589 代码如下
MT6582 代码如下
Log 分析:
当AF不动时,需要核实一下Lens driver是否匹配成功,可以查看android log,搜索关键字 LensMCU, 找到类似下面的log。
10-01 00:26:29.419 118 118 D LensMCU : LensMCUlensSearch() - E
10-01 00:26:29.419 118 118 D LensMCU : LensMCU[CurrSensorDev]0x0000
10-01 00:26:29.419 118 118 D LensMCU : LensMCU[LensInitTable-0][SensorId]0xffff,[LensId]0xffff
10-01 00:26:29.419 118 118 D LensMCU : LensMCU[LensInitTable-1][SensorId]0x4800,[LensId]0x0002
10-01 00:26:29.419 118 118 D LensMCU : LensMCU[LensInitTable-2][SensorId]0x0000,[LensId]0x0000
10-01 00:26:29.419 118 118 D LensMCU : LensMCU[LensInitTable-3][SensorId]0x0000,[LensId]0x0000
10-01 00:26:29.419 118 118 D LensMCU : LensMCU[CurrLensIdx]1
10-01 00:26:29.419 118 118 D LensDrv : LensDrv()
10-01 00:26:29.419 118 118 D LensDrv : init() [m_userCnt]0
10-01 00:26:29.419 118 118 D LensDrv :
10-01 00:26:29.419 118 118 D LensDrv : [Lens Driver]/dev/MT9P017AF
从上面log中可以看出,当前为sensor匹配了 MT9P017AF 这个Lens Driver,如果MT9P017AF不是想要的Lens Driver,那么就需要检查
配置文件projectConfig.mk 和 LensList.cpp了
注意以下几点:
1:lenslist.cpp 文件 Lenslist[] 的配置, 其中 Dummy lens 需要放在数组最前面,不能移动位置
2:MT6589平台上如果想要为Sub Sensor实现AF功能的话,需要修改文件mcu_drv.cpp,把代码行 if (a_u4CurrSensorDev == SENSOR_DEV_MAIN) 改成 if (a_u4CurrSensorDev == SENSOR_DEV_MAIN || a_u4CurrSensorDev == SENSOR_DEV_SUB)
3:上面涉及到的文件,可能会在不同层次的目录下存在,其中目录优先级为:project folder > platform folder > common folder
- [Camera Drv]系统是如何为Sensor匹配Lens Driver
- MTK camera drv]如何实现同Sensor IC不同摸组的Driver和参数的兼容
- camera sensor lens shading原因
- Android camera sensor driver port
- MTK camera image sensor driver
- MTK camera image sensor driver
- MTK camera image sensor driver
- MTK camera image sensor driver
- MTK camera image sensor driver
- MTK camera image sensor driver
- mtk camera image sensor driver
- 万能camera驱动----之-----camera sensor匹配过程
- CCM,sensor ,lens,motor 链接
- thermal driver为zone device 添加sensor
- Camera Sensor
- Camera Sensor
- CAMERA SENSOR
- Correction of Camera Lens Distortion
- Mysql 出现Error 1118 Row size too large. The maximum row size is 65535 的解决办法
- Android: 属性动画(Property Animation)
- RecyclerView布局样式
- @media语法规则
- 应用 Valgrind 发现 Linux 程序的内存问题
- [Camera Drv]系统是如何为Sensor匹配Lens Driver
- javaweb中的listener
- apache-hive-2.0.0安装
- 利用opencv函数计算图像的梯度幅度和梯度方向
- Button取消多次点击事件
- 安卓1114_URI和URL的区别
- InputMethodManager内存泄露现象及解决
- 使用C语言遇到的几个小问题
- 最小路径覆盖,最小点覆盖,最大独立点集,最小边覆盖