MTK DriverOnly——Camera移植

一、原理图确认

 

首先通过硬件人员或SPM获取到项目的电路原理图,观察Camera部分的电路原理图,了解Camera的总线接口以及引脚定义。

下图为Tango+3GCamera部分的电路示意图:

 


 

 

二、GPIO配置

 

   由以上原理图可知,Camera接口总共使用了17根引脚,分别为8根控制信号线、8根数据信号线和1根模组ID引脚。其中SCLSDACMRSTCMPDN以及ID引脚配置为普通GPIO口,由程序软件控制,其余引脚配置为Camera接口功能引脚,由Camera接口硬件自动控制。具体配置如下:

扫描二维码关注公众号,回复: 8563258 查看本文章

 


 

CAM_ID引脚配置,其实该引脚配不配置无所谓,因为当进行二供兼容时,是通过读取SensorID寄存器来判断不同的模组的,而不是通过该CAM_ID引脚电平来判断的。


 

 

三、Camera IC型号确认

 

1. 询问采购或SPM索要项目器件采购单,找到Camera的型号、规格及物料编号。

1st source

E-welly

内置摄像头,Camera Module,CMOS,2M,FF,6.5×6.5×H4.0mm,Socket 24pin,Parallel,Hynix253,Xueye,XY-2006AQ,Sherry,HE5418B1S-0P0J0,E-WELLY

E-M

Capacity shaortage

ASA2001079C1

2nd source

E-welly

内置摄像头,Camera,CMOS,2M,FF,6.5×6.5×H4.0 mm,Socket,Parallel,HI257,DC2030-3P lens,N/A,N/A,for Yaris M 2nd source,HC5592B1S-0P0J0,E-WELLY,

E-M

Capacity shaortage

ASA2001097C1

 

由上表格可以确认,Tango+3G所使用的一供Camera模组为E-Welly公司的,使用的驱动ICHynix253,所以我们驱动人员只要完成HI253的驱动移植就可以了。如果之前的项目有使用过HI253Camera驱动,则直接使用之前项目的驱动文件。如果从来没有用过该Camera驱动,则需要向FAE索要该Camera的驱动文件,一般为以下三个文件:

   image_sensor_HI253.c

   image_sensor_HI253.h

   usbvideo_attr_HI253.c

 

 

四、1st source代码移植

 

1.拷贝文件

   \mtk_6276_11a\custom\drv\YUV_sensor\目录下,新建一个文件夹,文件夹命名为Camera驱动IC的型号,即HI253,然后将image_sensor_HI253.c   image_sensor_HI253.h   usbvideo_attr_HI253.c三个文件拷贝到该目录下,并将整个目录及文件加入到ClearCase版本树中。

 

2.makefile

 

   SENSOR_TYPE =YUV

   CMOS_SENSOR =HI253

   SENSOR_ROTATE =SENSOR_ROTATE_180

   HORIZONTAL_CAMERA =FALSE

   BACKUP_SENSOR_SUPPORT =NONE 

   CMOS_SENSOR_BAK1 =NONE

 


 

3.image_sensor.h

   打开image_sensor.h文件,添加image_sensor_HI253.h头文件:


 

   添加SENSOR ID号:


ID号为Sensor ID寄存器读出来的ID号,如不知道,可向FAE询问或查阅该SensorDatasheet

 

4.image_sensor.c

   打开image_sensor.c文件,在SensorList[MAX_SENSOR_SUPPORT_NUMBER + 1]数组中,添加如下代码:

 


 

5.camera_hw.c

   打开camera_hw.c文件,添加如下定义:

 


 


 


 

 

   在函数CisModulePowerOn()中,确认DOVDD2.8VAVDD引脚为高电平DVDD1.8V


 

   并在else语句中添加如下代码,即关闭Camera时,将SCLSDA引脚设置为上拉输入:


 

6.编译下载

   使用new选项重新make整个工程,并使用TeleWeb工具下载到目标手机上,进入Camera APP,观察Camera能否正常工作。

   一般如果Camera驱动移植正确,则能正常进入Preview预览界面,按下Capture按键后,能成功拍下照片。

 

 

五、2nd source兼容

 

1.拷贝文件

   由上面采购单可知,Tango+3G使用的2nd source Camera仍是E-Welly公司的,但驱动IC型号为HI257,从以前的项目或FAE那获得以下3个文件:

   image_sensor_HI257.c

   image_sensor_HI257.h

   usbvideo_attr_HI257.c

 

   1st source步骤一样,\mtk_6276_11a\custom\drv\YUV_sensor\目录下,新建一个文件夹HI257,然后将上面3个文件拷贝到该目录下,并将整个目录及文件加入到ClearCase版本树中。

 

2.makefile

 

   BACKUP_SENSOR_SUPPORT =TRUE

   CMOS_SENSOR_BAK1 =HI257

 


 

3.image_sensor.h

   1st source,打开image_sensor.h文件,添加image_sensor_HI257.h头文件:


 

 

   添加SENSOR ID号:


ID号为Sensor ID寄存器读出来的ID号,如不知道,可向FAE询问或查阅该SensorDatasheet

 

4.image_sensor.c

    1st source,打开image_sensor.c文件,在SensorList[MAX_SENSOR_SUPPORT_NUMBER + 1]数组中,添加如下代码:

 


 

5.cal_main.c

   打开cal_main.c文件,找到CalSearchSensor()函数,在原来的判断语句if (NULL_SENSOR_ID!=SensorIdPara.FeatureValue)中增加新的判断条件如下:

 



6.
编译下载

   仍然使用new选项重新make整个工程,并使用TeleWeb工具下载到目标手机上,手机硬件换上2nd source Camera,开机进入Camera APP,观察Camera能否正常工作。

   

 

六、常见问题分析

 

1. Camera无法进入Preview预览界面,显示“Failedto preview”:

   1)有可能Camera模组没有插好,接触不良,请重新安装一下Camera模块;

   2Camera ID读取失败,或读出来的ID号与宏定义的ID号不匹配,请使用TRACE32跟踪调试;

   3)如果对同一手机、同一软件版本,更换了不同Camera模组,即使软件代码兼容这两款Camera,也无法正常预览,必须要对FAT进行格式化后,才能正常预览。

 

2.预览时镜像、拍照后镜像、预览和拍照同时镜像:

   1)可以通过修改makefile中的SENSOR_ROTATE = SENSOR_ROTATE_180SENSOR_ROTATE_0来查看效果;

   2)可以通过修改Sensor的相关寄存器来解决,具体修噶内容请联系FAE

 

3.预览时旋转90度、拍照后旋转90度、预览和拍照同时旋转90度:

   1)可以通过修改makefile中的SENSOR_ROTATE = SENSOR_ROTATE_90SENSOR_ROTATE_270来查看效果;

   2)询问MML硬件工程师,Camera模组的摆放方向,一般Camera模组厂商提供的结构图纸中,Sensor都有一个基准方向,该基准用一个小人图像来表示,所以应确保小人竖直站立的方向为正方向,具体Camera摆放的位置请参考以下附件。如果Camera摆放方向错误,则需要联系SPM商讨解决方案。如果从软件上解决,则需要联系MTK MML软件工程师,修改HAL层代码来解决该问题。

<<手机摄像头成像设计规则0718.pdf>>

 

4. Camera Performance问题:

   建议联系FAE工程师到现场调试解决问题,如预览水波纹、拍照曝光强度太高、颜色对比度太深等等。

发布了68 篇原创文章 · 获赞 112 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/hexiaolong2009/article/details/21387711
MTK