MSM8909 平台camera移植

转载自:http://blog.chinaunix.net/uid-7213935-id-5749314.html


一.硬件分析
在调试的时候,一定要拿到电路图,模组规格书,SENSOR IC datasheet。
下面是主 camera 电路图:

MSM8909 平台camera移植_第1张图片
MSM8909 平台camera移植_第2张图片

由上面电路图我们看样看出,此模组有以下主要线路:
1.电源:结合 OV8856 的 datasheet 可知,AVDD:2.8;IOVDD:1.8;DVDD:1.2V;
2.控制讯号:RESET,POWERDOWN;
3.通讯讯号:IIC 通讯,CLK,DATA;
4.数据通讯:一组 MIPI CLK 信号,4 组 MIPI data 信号;
5.其他信号:MCLK,ID_PIN,GND。
副 CAMERA 和主 CAMERA 的电路图类似,差别在于,副 CAMERA MIPI 通讯组多寡而
已,同时控制信号 RESET 和 POWERDOWN 则是单独控制的。IOVDD 和 AVDD 一般都是固
定的而有些模组的 DVDD 是有差别的,比如 OV 的高像素 SENSOR 一般是 1.2V,而格科微低
像素 SENSOR 的电压为 1.8V,极少数为 2.8V;所以在调试的时候一定要先确认这个电压,否
则输出不了头像。
另外由电路图和模组规格书上可知还包括其他两部分(单独电路图省略):
1. 聚焦马达:电压 AF _VDD:2.8V;使能 AF_EN;
2. 闪光 FLASH: CAM_FLASH;
二. 软件代码整合
如何添加 camera 模组
Camera 驱动代码的添加主要是两个部分,一个是 kernel 层,一个是 vendor 层。
1.Kernel 部分
主要是配置 dts 文件,供 msm_sensor.c 读取。
a. 确认配置 menuconfig
在 qcom 平台上,已经弱化了 menuconfig,但是有的也需要配置下,如各种传感器等等。对
于 camera 部分,主要检查以下配置既可:
CONFIG_MEDIA_CAMERA_SUPPORT=y
CONFIG_MEDIA_RADIO_SUPPORT=y
CONFIG_MEDIA_CONTROLLER=y
CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_VIDEOBUF2_MSM_MEM=y
CONFIG_V4L_PLATFORM_DRIVERS=y
CONFIG_MSMB_CAMERA=y
b.dts 部分
dts 的配置,调试部分会有详细说明。
2.Verdor 部分
而实质性的代码一般都放在 vendor 下,这部分是高通自己实现的 daemon 进程和 kernel 层
以及 hal 层进行通讯的框架代码;另一部分是效果代码。
a. 配置 config 文件:
vendor\qcom\proprietary\common\config\device-vendor.mk
MSM8909 平台camera移植_第3张图片
b.添加适配 string
模组之间都是通过名称是适配的,所以名称的选取和一致性就尤为重要。
在此文件中,对应 camera probe 加载:
vendor\qcom\proprietary\mm-camera\mm-camera2\mediacontroller\modules\sensors\module\sensor_init.c
#define BOARD_SENSORS \
"ov8856",\
#endif
在此文件中,对应 camera probe 加载:
vendor\qcom\proprietary\mm-camera\mm-camera2\mediacontroller\modules\sensors\module\sensor_init.c
#define BOARD_SENSORS \
"ov8856",\
#endif
boolean sensor_init_probe(module_sensor_ctrl_t *module_ctrl)
{
….............
for (i = 0; i < ARRAY_SIZE(sensor_libs); i++) {
ret = sensor_probe(sd_fd, sensor_libs[i]);
…..............
}
c.sensor,actuator 基本驱动配置以及效果参数文件
MSM8909 平台camera移植_第4张图片
三 .驱动调试
1. dts 配置
在 msm.c 和 msm_sensor.c 中,高通已经帮我们写好了软件架构,一般不用修改代码,主
要是配置 dts 文件:msm8909-camera_sensor-skuc.dtsi。
MSM8909 平台camera移植_第5张图片
2. sensor_lib_t 结构体
在 sensor lib 中,有 sensor 基本驱动,主要是添加 sensor_lib_t 结构体:
MSM8909 平台camera移植_第6张图片MSM8909 平台camera移植_第7张图片



3. Chromatix 参数
对于 Chromatix 参数驱动工程师要和模组厂或是 ic 原厂工程师沟通调试验证,他们给
出参数后,驱动工程师在 merge 的时候也要特别注意,对齐,回车等等一定要注意,否则可能
会出现编译出错的现象;当然聚焦马达要有由高通来调试。
一般情况下,按照上面操作,sensor 都可以有预览出来,在此基础上,例如图像翻转
180°,颜色 rgb 反调等等,都是可以通过 init reg 做简单的调试既可;驱动工程师整合调试好基
本版本了,就要和 ic 原厂或模组厂联系以及配合调试效果了。
当然在有些情况下,fae 也不是万能的,比如 OV 的 fae,基本不会搭理你的;而有
些问题 FAE 也不定能解答,很多时候是时间上不允许;这个时候就要大力发挥驱动工程师
的能动性,高通的海量调试信息就会派上大用场,后面我会写一篇关于 tuning 的文档,作
为此文档的补充。

四 效果验证
vendor 下的编译,根据 andriod.mk 和 makefile 文件,一般 mm 即可,在编译终端下
看生成的 so 的目录和具体文件,然后把生成的 so 文件 push 到相应的目录下,重启即可(效
果参数没有必要重启)。
高通或是模组厂调试好后,效果参数给到我们,一定要确保编译没有问题。
在验证的时候,要考虑不同光源下的情况,由于我们没有特定的光源实验室,一般情况
下,验证四个(正常情况,暗处,强光(窗口,日光灯),逆光情况)即可。
在验证的时候自己一定要多使用,多场景下切换,同时 prevew,capture,video 都要测试
到。

你可能感兴趣的:(Linux,Android,kernel,boot)