MTK平台camera(摄像头)学习教程
MTK平台camera(摄像头)调试教程
MTK 平台 CAMERA 驱动浅析Camera Driver analysis in the platform of MTKDocument Number:Preliminary (Released) InformationRevision:0.1Release Date:Ghong Confidential Revision 0.1-Feb.14 2012- 1 -Ⓒ2012 Ghong inc.Revision HistoryRevision Date (dd/mm/yyyy)Author Comments0.114/02/2012Guoqing Zhang Draft VersionGhong Confidential Revision 0.1-Feb.14 2012- 2 -Ⓒ2012 Ghong inc.Contents一、.-二、.-三、.-四、.-五、.-、.-、.-、.-、.-六、.-七、.-、.-、.-、.-、.-、.-、.-八、.-).-).-).-九、.-十、.-Ghong Confidential Revision 0.1-Feb.14 2012- 3 -Ⓒ2012 Ghong inc.一、手机Camera的物理结构:FPC: Flexible Printed Circuit 可挠性印刷电路板Sensor:图象传感器IR:红外滤波片Holder:基座Lens:镜头二、Camera的成像原理:景物通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为模拟的电信号,经过 A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过 IO 接口传输到 CPU 中处理,通过 LCD 就可以看到图像了。
Ghong Confidential Revision 0.1-Feb.14 2012- 4 -百度文库 - 让每个人平等地提升自我Ⓒ2012 Ghong inc.图像传感器(SENSOR)是一种半导体芯片,其表面包含有几十万到几百万的光电二极管。
MTK平台camera(摄像头)调试教程要点
Contents一、手机CAMERA的物理结构:........................................................................................ - 4 -二、 CAMERA 的成像原理: ................................................................................................. - 4 -三、 CAMERA 常见的数据输出格式:.................................................................................. - 5 -四、阅读CAMERA的规格书(以TRULY模组OV5647_RAW为例):........................... - 6 -五、 CAMERA 的硬件原理图及引脚 ..................................................................................... - 7 -1、电源部分:.................................................................................................................... - 7 -2、 S ENSOR I NPUT部分:................................................................................................... - 7 -3、 S ENSOR O UT P UT部分:............................................................................................... - 7 -4、 I2C 部分:SCL,I2C时钟信号线和SDA,I2C数据信号线。
高通CAM 调试经验分享
高通平台摄像头调试分享6 v1 O7 w6 c& A! q 之前一段时间有幸在高通android平台上调试2款camera sensor,一款是OV的5M YUV sensor,支持jpeg out,同时也支持AF,调试比较比较简单,因为别的项目已经在使用了,只是把相关的驱动移植过来就好;另一款是Samsung的一款比较新的3M YUV FF sensor,在最新项目中要使用的,本文以调试该sensor为例,从底层驱动的角度分享一下高通android平台下调试camera的经验,而对于高通平台camera部分的架构以及原理不做过多的介绍。
, A) j* ^+ S- {7 S: C+ G* D/ l0 ~+ E( W, }% V( S! X一、准备工作从项目中看,在硬件(板子)ready前,软件部分是要准备好的。
单独从底层驱动来看,软件部分可以分为2个部分,一个是高通平台相关的,再一个就是sensor部分的,通常的做法就是把sensor相关的设定移植到高通平台的框架之中。
这样就需要先拿到sensor 的spec以及厂商提供的sensor register setting file。
Spec的用途是清楚高通平台和sensor通讯(读写寄存器)的时序以及相关参数设定;而厂商提供的setting file则是在使用camera各个功能(preview、snapshot...)时候需要写入到sensor中的.; X5 r( M0 m: y% r, i' P' |本项目中,高通平台为MSM7X27,camera为Samsung 5CA。
从spec中知道,该sensor的I2C ID为0x78,I2C的通信采用双字节方式,另外也弄清楚了读写sensor 寄存器的规则,从调试角度看这些基本上够用了。
另外厂商提供的setting file,其实就是寄存器列表,告诉我们再什么时候将哪些寄存器写入什么值,通常是一个寄存器地址再加上一个寄存器的值,不过Samsung提供的是PC上调试使用的文本,需要自己转换成c语言中的二维数组。
MTK+移植camera说明
MTK移植camera说明1、裁剪模块修改文件:config/tf902/ProjectConfig.mkEg\config/tf902/ProjectConfig.mk````````````````````````````````````````````CUSTOM_HAL_EEPROM = dummy_eepromCUSTOM_HAL_FLASHLIGHT = constant_flashlightCUSTOM_HAL_FMRADIO = mt6628-CUSTOM_HAL_IMGSENSOR = ov8825_mipi_raw s5k8aayx_mipi_yuv+CUSTOM_HAL_IMGSENSOR = gc2235mipi_raw gc0313mipi_yuv#ov8825_mipi_raw s5k8aa yx_mipi_yuv #添加摄像头模块,定义hal层CUSTOM_HAL_LENS = ov8825af dummy_lensCUSTOM_HAL_MAIN2_IMGSENSOR =CUSTOM_HAL_MAIN_BACKUP_IMGSENSOR =CUSTOM_HAL_MAIN_BACKUP_LENS = dummy_lens-CUSTOM_HAL_MAIN_IMGSENSOR = ov8825_mipi_raw+CUSTOM_HAL_MAIN_IMGSENSOR = gc2235mipi_raw #ov8825_mipi_raw #主摄像头在hal层的修改CUSTOM_HAL_MAIN_LENS = ov8825afCUSTOM_HAL_MSENSORLIB = mmc328x akm8975 ami304 yamaha530 mag3110 akmd8963 b mm050CUSTOM_HAL_SENSORS = sensorCUSTOM_HAL_SUB_BACKUP_IMGSENSOR =CUSTOM_HAL_SUB_BACKUP_LENS = dummy_lens-CUSTOM_HAL_SUB_IMGSENSOR = s5k8aayx_mipi_yuv+CUSTOM_HAL_SUB_IMGSENSOR = gc0313mipi_yuv #s5k8aayx_mipi_yuv #副摄像头在hal 层的定义CUSTOM_HAL_SUB_LENS = dummy_lensCUSTOM_KERNEL_ACCELEROMETER = bma050CUSTOM_KERNEL_ALSPS = cm36283@@ -79,7 +79,7 @@ CUSTOM_KERNEL_FLASHLIGHT = constant_flashlightCUSTOM_KERNEL_FM = mt6628CUSTOM_KERNEL_HDMI =CUSTOM_KERNEL_HEADSET = accdet-CUSTOM_KERNEL_IMGSENSOR = ov8825_mipi_raw s5k8aayx_mipi_yuv+CUSTOM_KERNEL_IMGSENSOR = gc2235mipi_raw gc0313mipi_yuv#ov8825_mipi_raw s5k 8aayx_mipi_yuv #添加摄像头在kernal 模块CUSTOM_KERNEL_KPD = kpdCUSTOM_KERNEL_LCM = bi097xn02_xga_dpiCUSTOM_KERNEL_LEDS = mt65xx+CUSTOM_KERNEL_MAIN_IMGSENSOR = gc2235mipi_raw #ov8825_mipi_raw #在底层定义主摄像头CUSTOM_KERNEL_MAIN_LENS = ov8825afCUSTOM_KERNEL_RTC = rtcCUSTOM_KERNEL_SOUND = amp_6320pmic_spkCUSTOM_KERNEL_SSW = ssw_genericCUSTOM_KERNEL_SUB_BACKUP_IMGSENSOR =CUSTOM_KERNEL_SUB_BACKUP_LENS = dummy_lens-CUSTOM_KERNEL_SUB_IMGSENSOR = s5k8aayx_mipi_yuv+CUSTOM_KERNEL_SUB_IMGSENSOR = gc0313mipi_yuv#s5k8aayx_mipi_yuv #在底层定义副摄像头CUSTOM_KERNEL_SUB_LENS = dummy_lensCUSTOM_KERNEL_TOUCHPANEL = GT82X #cy8ctma300 GT818B-fpgaCUSTOM_KERNEL_USB = mt6577上面的修改是在平台没有默认AF(自动对焦)的功能(mtk6517和mtk6577\mtk6572的平台没有默认AF功能),mtk6589的平台默认就支持AF功能。
mtkcamera移植步骤
mtkcamera移植步骤mtk camera 移植步骤:1, Kernel层驱动代码⽂件添加/mediatek/custom/doov92_wet_tdd/kernel/imgsensor/下添加imx179_mipi_raw_2lane/ ⽬录如下:imx179_mipi_raw_2lane- imx179mipiraw_Camera_Sensor_para_2lane.h- imx179mipiraw_CameraCustomized_2lane.h- imx179mipiraw_Sensor_2lane.c- imx179mipiraw_Sensor_2lane.h看了⼀下, 基本上所有的驱动⽂件都是这样的格式.2, HAL层效果参数⽂件添加/mediatek/custom/mt6592/hal/imgsensor/下添加imx179_mipi_raw_2lane⽬录,该⽬录list如下:imx179_mipi_raw_2lane- camera_AE_PLineTable_imx179raw_2lane.h- camera_calibration_cam_cal_2lane.cpp- camera_flicker_para_imx179raw_2lane.cpp- camera_info_imx179raw_2lane.h- camera_isp_lsc_imx179raw_2lane.h- camera_isp_pca_imx179raw_2lane.h- camera_isp_regs_imx179raw_2lane.h- camera_tsf_data_imx179raw_2lane.h- camera_tsf_para_imx179raw_2lane.h- camera_tuning_para_imx179raw_2lane.cpp- config.ftbl.imx179_mipi_raw_2lane.h根据具体的sensor, ⽂件会有所增减.3, 驱动结构添加./mediatek/custom/common/kernel/imgsensor/src/kd_sensorlist.H:1)UINT32 IMX179_MIPI_RAW_2lane_SensorInit(PSENSOR_FUNCTION_STRUCT *pfFunc);2) ACDK_KD_SENSOR_INIT_FUNCTION_STRUCT kdSensorList[MAX_NUM_OF_SUPPORT_SENSOR+1] ={#if defined(IMX179_MIPI_RAW_2LANE)//addimx179sensor(front), jintao_20140114_camera_front +++{IMX179_SENSOR_2LANE_ID, SENSOR_DRVNAME_IMX179_MIPI_RAW, IMX179_MIPI_RAW_2lane_SensorInit}, #endif......}4, 定义ID和drv name./mediatek/custom/common/kernel/imgsensor/inc/kd_imgsensor.h:#define IMX179_SENSOR_2LANE_ID 0x0179#define SENSOR_DRVNAME_IMX179_MIPI_RAW "imx179mipiraw_2lane"5, HAL层ID与drv name的衔接./mediatek/custom/common/hal/imgsensor/src/sensorlist.cppMSDK_SENSOR_INIT_FUNCTION_STRUCT SensorList[] ={#if defined(IMX179_MIPI_RAW_2LANE)//add imx179 sensor(front), jintao_20140114_camera_front +++ RAW_INFO(IMX179_SENSOR_2LANE_ID, SENSOR_DRVNAME_IMX179_MIPI_RAW, NULL),#endif......}6, Camera Sensor宏配置/mediatek/config/doov92_wet_tdd/ProjectConfig.mk ==配置CUSTOM_HAL_IMGSENSOR=imx135_mipi_raw imx179_mipi_raw_2laneCUSTOM_HAL_SUB_IMGSENSOR=imx179_mipi_raw_2laneCUSTOM_KERNEL_IMGSENSOR=imx135_mipi_raw imx179_mipi_raw_2laneCUSTOM_KERNEL_SUB_IMGSENSOR=imx179_mipi_raw_2lane7,时序配置./mediatek/custom/doov92_wet_tdd/kernel/camera/camera/kd_camera_hw.celse if (currSensorName && (0 == strcmp(currSensorName,"imx179mipiraw_2lane")))分别配置上电/下电. 原理图上的PIN脚收集如下.Main Sensor 控制脚:CMRST_MAIN CMPDN_MAINVCAM_AF AF_ENVCAMD VCAMAVCAMIOSCL SDACMMCLKMIPI-RDP0 MIPI-RDN0MIPI-RDP1 MIPI-RDN1MIPI-RDP2 MIPI-RDN2MIPI-RDP3 MIPI-RDN3MIPI-RCP MIPI-RCNF-LED+F-LED1-F-LED2-8,Camera预览/拍照储存照⽚的⽅向改变./mediatek/custom/doov92_wet_tdd/hal/imgsensor/src/cfg_setting_imgsensor.cpp //改的是这个SensorOrientation_T const&getSensorOrientation(){static SensorOrientation_T const inst = {u4Degree_0 : 270, // main sensor in degree (0, 90, 180, 270), 后摄的⽅向配置.u4Degree_1 : 270, // sub sensor in degree (0, 90, 180, 270), 前摄的⽅向配置.u4Degree_2 : 90, // main2 sensor in degree (0, 90, 180, 270), 主设2的⽅向配置.};return inst;}。
炬芯S500_Camera调试手册_V1.0
炬芯S500_Camera调试手册_V1.0ActDuino S500_Camera调试手册最新版本号:1. 02015-06-251 目录1 目录 (1)2 引言 (3)2.1 编写目的 (3)2.2 术语和缩写词 (3)3 camera驱动架构说明 (4)3.1 V4L2介绍 (5)3.2 soc-camera子系统介绍 (6)4 驱动执行流程分析 (7)4.1 soc-camera子系统初始化 (7)4.2 模组驱动加载 (7)4.3 ISP驱动加载 (7)5 新模组驱动移植 (8)5.1 建立驱动源码目录 (8)5.2 修改Makefile (8)5.3 修改头文件module_diff.h (9)5.4 修改源文件module_diff.c (11)5.5 编译模组驱动 (12)5.6 修改配置文件 (13)5.6.1 修改dts (13)5.6.2 增加驱动对闪光灯的支持 (14)6 模组驱动调试 (15)6.1 调试步骤 (15)6.2 常用调试技巧 (15)6.2.1 摄像头能正常工作,确认前后摄像头配置是否正确 (15)6.2.2 手动加载camera驱动 (15)6.2.3 查看自适应检测是否成功 (16)版权所有侵权必究版权所有侵权必究6.3 常见问题说明 (16)7Camera 配置 (20)7.1camerahal 配置 (20)7.1.1 配置文件的路径.............................................................................................20 7.1.2 配置旋转方向.................................................................................................20 7.1.3 配置分辨率.. (20)7.1.4 闪光灯配置.....................................................................................................21 7.1.5 视场角配置.. (22)7.1.6 ro.camerahal 属性说明....................................................................................23 7.2mediaprofile.xml 文件配置...............................................................................................24 7.2.1 配置录像分辨率.............................................................................................24 7.2.2 音频编码格式配置.. (26)7.2.3 Mediaprofile.xml 说明.....................................................................................27 7.3 动态生成mediaprofile.xml 配置文件...............................................................................29 7.4使用动态生成的mediaprofile.xml (30)8 版本历史.........................................................................................................31 9 声明 (32)2 引言2.1 编写目的本文用于说明如何在现有的开发框架下增加新的camera模组驱动,并提供了调试步骤及常见问题debug方法。
MTK_camera驱动流程总结_pei
Camera驱动流程总结范军君junjun.fan@目录1,Camera架构及流程简析2,初始化过程camera id检测3,Camera上电流程4,Camera打开流程Camera架构及流程简析MTK平台camera架构:Kernel部分主要有两块:一块是image sensor驱动,负责具体型号的sensor的id检测,上电,以及在preview,capture,初始化,3A等等功能设定时的寄存器配置。
另一块是isp driver,通过DMA将sensor数据流上传。
本篇主要介绍image sensor驱动的流程。
HAL层这边主要分3块,一块是imageio,主要是数据buffer上传的pipe。
一块是drv,包含imgsensor和isp的hal层控制。
最后是feature io,包含各种3A等性能配置。
本篇对HAL涉入不深,只在分析开机过程的id检测时会分析hal层的控制,属于第二块。
流程简析:主要发生在两个时间点:开机过程中camera的动作以及打开应用时camera的动作。
开机时,camera完成了sensor框架的初始化,id检测,以及上下电操作。
打开应用时,camera会有上电,完成寄存器的初始配置,向上层传送基本参数及配置信息,以及preview和capture模式循环。
初始化过程camera id检测代码分析:=>alps/mediatek/custom/common/kernel/imgsensor/kd_sensorlist.cmodule_init说明这段code在kernel初始化,也就是手机开机时运行。
在模块初始化函数中,注册一个i2c device,同时注册了一个platform driver注意driver name,匹配platform device需要名字一致。
Platform总线为虚拟总线,注册platform driver主要目的是隔离上下层,增强代码的可移植性。
MTK camera上电流程分析
MTK camera上电流程分析上电相关文件:Mediatek/custom/vanzo89_wet_jb2/kernel/camera/camera/kd_camera_hw.cMediatek/custom/vanzo89_wet_jb2/kernel/camera/camera/kd_camera_hw.hMediate/custom/common/kernel/imgsensor/src/kd_sensorlist.cMediate/custom/common/kernel/imgsensor/src/kd_sensorlist.h注:本文档以mt89_v10_vanzo_test项目为例MTK开机过程中会去检查当前项目(手机上烧录的当前软件)所有在Projectconfig.mk中配置过的camera sensor,如下:CUSTOM_HAL_IMGSENSOR=imx111_mipi_raw ov9724_mipi_rawCUSTOM_KERNEL_IMGSENSOR=imx111_mipi_raw ov9724_mipi_raw也就是说在开机的时候,系统会自动去detect这两颗camera sensor是否都能正常通信,主要是通过读sensor的id来判断的。
具体是调用下面的函数来开始检查之旅的:==========mediate/custom/common/kernel/imgsensor/src/kd_sensorlist.c================这个函数先是调用kdGetSensorInitFuncList(&pSensorList)获取系统配置的kdSensorList [],这个数组在mediatek/custom/common/kernel/imgsensor/src/kd_sensorlist.h中定义的,该数组也是我们加入新的型号sensor时需要改动的一个地方,如果你不把你新加入的sensor放进这个数组,系统也不会知道你配置过这个sensor。
MTK平台硬件培训(ppt 30页)[001]
硬件电路原理 -基带 - 数字逻辑控制
LCD控制 信号线
MCP 控制信号
Memory地址总线
系统复位信号输 入,来自PMU
VCXO供电使能
音频放大器 shutdown信号
充电控制信号
USB LDO(3.3V) 使能信号
19
硬件电路原理 -基带 - 数字逻辑控制
键盘接口
LCD & NAND数据线 NAND控制信号
音频隔直流 MIC负偏压
RF去耦电容
22
硬件电路原理 -基带 - 接收音频
音频放大
滤除RF TDMA noise
滤除RF TDMA noise
23
Hale Waihona Puke 硬件电路原理 -基带 - 18pin I/O
CPU通过ADC4电压大 小检测外插数据线还
是普通充电器
插上USB数据线以后
该脚会被电脑拉低
24
硬件电路原理 -基带 - 触摸屏控制器
开机维持和闹钟唤醒
PMIC_VTCXO LDO使能
选择VM输出2.8V给外 部MCP供电
键盘背光灯使能
振动马达使能
10
硬件电路原理 -电源管理 - 充电控制
MT6305通过#1CHRIN判断充电器的插入如果充电器电压正常就通过#6CHRDET向CPU发出中断,CPU通 过GPIO3_CHR_CTL控制MT6305,MT6305再通过#2 GATEDRV控制充电Mosfet U401来控制充电过程,通过 #4 Isense检测并控制充电电流的大小。ADC0_I-和ADC1_I+用于电池和充电通道的ADC检测,通过测试 ADC0和ADC1的电压差可以算出流经R413的充电电流。
MTK平台camera(摄像头)调试教程
Contents一、手机CAMERA的物理结构:........................................................................................ - 4 -二、 CAMERA 的成像原理: ................................................................................................. - 4 -三、 CAMERA 常见的数据输出格式:.................................................................................. - 5 -四、阅读CAMERA的规格书(以TRULY模组OV5647_RAW为例):........................... - 6 -五、 CAMERA 的硬件原理图及引脚 ..................................................................................... - 7 -1、电源部分:.................................................................................................................... - 7 -2、 S ENSOR I NPUT部分:................................................................................................... - 7 -3、 S ENSOR O UT P UT部分:............................................................................................... - 7 -4、 I2C 部分:SCL,I2C时钟信号线和SDA,I2C数据信号线。
MTK平台camera兼容方法
52平台11B版本camera兼容设计声明:此设计主要是仿照53平台09B版本的camera兼容设计思想一.首先大概了解一下11B平台camera的设计架构及流程1.在手机开机时会调用cal_main.c中的CalInit函数,此函数会调用GetSensorInitFunc(&pImageSensorList);函数,这样在初始化时就会将SensorList中的定义了的所有camera的列表编译进来。
2.当打开camera时,系统会调用CalOpen函数,CalOpen函数里面首先会调用CalSearchSensor函数,通过调用CalSearchSensor函数来查找camera的ID,通过查找camera的ID即可知道调用哪个sensor的驱动。
下图是读取ID的代码:(CalSearchSensor函数代码)3.结合以上camera的流程与53平台09B版本的camera兼容设计思想,便做出了如下的兼容设计方案二.如下举个例子告诉大家如何做兼容,扩展兼容(比如要兼容一个SENSOR为SIV121D,需要做到如下六点)1.确保在custom\drv\YUV_sensor下面有相应的驱动模块SIV121D2.make file添加相关宏GN_DRV_CAMERA_AUTO_IDENTIFY = TRUEifeq ($(strip $(GN_DRV_CAMERA_AUTO_IDENTIFY)),TRUE)GN_DRV_NEED_CAMERA_IDENTIFY_ONE = GC0309GN_DRV_NEED_CAMERA_IDENTIFY_TWO = HI704GN_DRV_NEED_CAMERA_IDENTIFY_THREE = SIV121Dendif3 GN_custominfo.pl添加编译模块#GIONEE maliping 20101220 modify for gionee camera auto identify beginif($gn_drv_camera_auto_identify eq "TRUE"){if ($sensor_type eq "YUV"){if($gn_drv_need_camera_identify_one ne "NONE"){push(@thatdirs, "drv\\YUV_sensor\\$gn_drv_need_camera_identify_one");}if($gn_drv_need_camera_identify_two ne "NONE"){push(@thatdirs, "drv\\YUV_sensor\\$gn_drv_need_camera_identify_two");}if($gn_drv_need_camera_identify_three ne "NONE"){push(@thatdirs, "drv\\YUV_sensor\\$gn_drv_need_camera_identify_three");}}}#GIONEE maliping 20110324 modify for gionee camera auto identify end4. option.mak里面添加相关的宏控制ifdef GN_DRV_CAMERA_AUTO_IDENTIFYifeq ($(strip $(GN_DRV_CAMERA_AUTO_IDENTIFY)),TRUE)COM_DEFS += GN_DRV_CAMERA_AUTO_IDENTIFYifneq ($(strip $(GN_DRV_NEED_CAMERA_IDENTIFY_ONE)),NONE)COM_DEFS += GN_DRV_NEED_CAMERA_IDENTIFY_ONEendififneq ($(strip $(GN_DRV_NEED_CAMERA_IDENTIFY_TWO)),NONE)COM_DEFS += GN_DRV_NEED_CAMERA_IDENTIFY_TWOendififneq ($(strip $(GN_DRV_NEED_CAMERA_IDENTIFY_THREE)),NONE)COM_DEFS += GN_DRV_NEED_CAMERA_IDENTIFY_THREE Endifendifendif5. image_sensor.c里面的IMAGE_SENSOR_LIST_STRUCT SensorList列表中添加相应的驱动代码#ifdef GN_DRV_CAMERA_AUTO_IDENTIFY //GIONEE: add by maliping 20110916 #ifdef GN_DRV_NEED_CAMERA_IDENTIFY_ONEADD_SENSOR(GC0309_SENSOR_ID,GC0309,IMAGE_SENSOR_MAIN),#endif#ifdef GN_DRV_NEED_CAMERA_IDENTIFY_TWOADD_SENSOR(HI704_SENSOR_ID,HI704,IMAGE_SENSOR_MAIN),#endif#ifdef GN_DRV_NEED_CAMERA_IDENTIFY_THREEADD_SENSOR(SIV121D_SENSOR_ID,SIV121D,IMAGE_SENSOR_MAIN), #endif#endif6.在image_sensor.c开头包含相应头文件#ifdef GN_DRV_CAMERA_AUTO_IDENTIFY //GIONEE: add by maliping 20110916#ifdef GN_DRV_NEED_CAMERA_IDENTIFY_ THREE#include "image_sensor_SIV121D.h"#endif#endif7.保证sensor的SIV121D DetectSensorId函数中未读到ID时返回的值为MM_ERROR_SENSOR_READ_ID_FAIL;以免读取ID时出错。
camera学习入门指南
camera学习⼊门指南等待补充。
1.背景介绍近年来,随着消费电⼦领域市场的快速增长,如安防、图像等领域,camera市场得到了快速发展。
智能⼿机这⼏年以拍照作为主打卖点,带动了camera(CCM)出货。
具体可以看电⼦⾏业分析或者券商研报⾏业分析,⽐如下⾯两份。
在招聘⽹站上搜索camera,可以看到,多为⼿机⼚商、智能硬件和汽车安防相关⾏业,包括tuning、效果、系统、性能功耗、测试等,其中camera tuning的岗位是最多的。
绝⼤多数产品⽅案系统都是使⽤Android操作系统⽅案,所以需要对Android有⼀定了解。
以前camera tuning⼯作是由算法⼯程师完成,后⾯随着⽤户对图像质量要求越来越⾼。
ISP处理器出现和流⾏催⽣很多tuning的⼯作。
基础知识:光学基本概念、camera基础知识:涉及硬件模组、软件架构等,linux驱动开发基本知识。
2.camera基础篇camera和光学知识和摄影知识密切相关。
2.1.光学知识成像原理:视场⾓FOV(Field of View):包括HFOV(⽔平), VFOV(垂直),DFOV(对⾓)Focal Length:焦距EFL(Effective Focal Length)有效焦距、Fno(Aperture Value对应的Focal number)光圈数值,如F2.8,为光圈“系数”,简称为F值。
Fno = EFL/D(光圈直径)RGB(red green blue),光学三原⾊。
⾃然界中⾁眼所能看到的任何⾊彩都可以由这三种⾊彩混合叠加⽽成,因此也称为加⾊模式。
YUV(全称英⽂真没找到),是编译true-color颜⾊空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。
Y”表⽰明亮度(Luminance或Luma),也就是灰阶值,“U”和“V”表⽰的则是⾊度(Chrominance或Chroma)。
MTK平台camera(摄像头)调试教程解读
Contents一、手机CAMERA的物理结构:........................................................................................ - 4 -二、 CAMERA 的成像原理: ................................................................................................. - 4 -三、 CAMERA 常见的数据输出格式:.................................................................................. - 5 -四、阅读CAMERA的规格书(以TRULY模组OV5647_RAW为例):........................... - 6 -五、 CAMERA 的硬件原理图及引脚 ..................................................................................... - 7 -1、电源部分:.................................................................................................................... - 7 -2、 S ENSOR I NPUT部分:................................................................................................... - 7 -3、 S ENSOR O UT P UT部分:............................................................................................... - 7 -4、 I2C 部分:SCL,I2C时钟信号线和SDA,I2C数据信号线。
最新MTK-camera上电流程分析
M T K-c a m e r a上电流程分析MTK camera上电流程分析上电相关文件:Mediatek/custom/vanzo89_wet_jb2/kernel/camera/camera/kd_camera_hw.c Mediatek/custom/vanzo89_wet_jb2/kernel/camera/camera/kd_camera_hw.h Mediate/custom/common/kernel/imgsensor/src/kd_sensorlist.cMediate/custom/common/kernel/imgsensor/src/kd_sensorlist.h注:本文档以mt89_v10_vanzo_test项目为例MTK开机过程中会去检查当前项目(手机上烧录的当前软件)所有在Projectconfig.mk中配置过的camera sensor,如下:CUSTOM_HAL_IMGSENSOR=imx111_mipi_raw ov9724_mipi_rawCUSTOM_KERNEL_IMGSENSOR=imx111_mipi_raw ov9724_mipi_raw也就是说在开机的时候,系统会自动去detect这两颗camera sensor是否都能正常通信,主要是通过读sensor的id来判断的。
具体是调用下面的函数来开始检查之旅的:==========mediate/custom/common/kernel/imgsensor/src/kd_sensorlist.c======= =========这个函数先是调用kdGetSensorInitFuncList(&pSensorList)获取系统配置的kdSensorList [],这个数组在mediatek/custom/common/kernel/imgsensor/src/kd_sensorlist.h中定义的,该数组也是我们加入新的型号sensor时需要改动的一个地方,如果你不把你新加入的sensor放进这个数组,系统也不会知道你配置过这个sensor。
MTK53平台CAMERA兼容说明及新项目CAMERA移植说明
53平台CAMERA兼容说明及新项目CAMERA移植说明为了在MT6253平台上兼容多种型号IC的摄像头,增加了CAMERA兼容代码,此文档主要介绍为兼容而修改的内容,现在以N601项目为例说明,同时兼容GC0307及GC0309两个摄像头,其它以此类推。
1. make file 修改(1). 在N601.mak 文件中使用功能开关MULTI_SENSOR_SUPPORT = TRUE # 多摄像头支持(2). 在option.mak 文件中使用功能定义代码控制宏ifdef MULTI_SENSOR_SUPPORTifeq ($(strip $(MULTI_SENSOR_SUPPORT)),TRUE)COM_DEFS += __ZW_MULTI_SENSOR__endifendif2. 加入SENSOR目录,在custom\drv\YUV_sensor 此目录中为所有项目及各类SENSOR的驱动代码,加入N601_SENSOR目录,将各SENSOR的驱动代码加入到此目录中。
如camera_yuv_para_GC0307.ccamera_yuv_para_GC0309.cimage_sensor_GC0307.cimage_sensor_GC0307.himage_sensor_GC0309.cimage_sensor_GC0309.husbvideo_attr_GC0307.cusbvideo_attr_GC0307.husbvideo_attr_GC0309.cusbvideo_attr_GC0309.h3. 在custom\drv\Camera_common目录中找到image_sensor.c 此文件,此文件中有所有可兼容的SENSOR的LIST。
sensor_set_struct sensor_list[MAX_EXIST_SENSOR_NUMBER + 1] ;如果在此sensor_list中没有找到SENSOR的定义需要自己加入,可参照其它SENSOR的方式一样加入,比如GC0307此IC SENSOR,主要涉及二个文件camera_tuning_para.himage_sensor.c4. 在zw_camera_multi_sensor.h文件中加入需要兼容的SENSOR IC的宏定义。
MTK平台camera(摄像头)调试教程
MTK 平台 CAMERA 驱动浅析Camera Driver analysis in the platform of MTKDocument Number:Preliminary (Released) InformationRevision:0.1Release Date:Ghong Confidential Revision 0.1-Feb.14 2012- 1 -Ⓒ2012 Ghong inc.Revision HistoryRevision Date (dd/mm/yyyy)Author Comments0.114/02/2012Guoqing Zhang Draft VersionGhong Confidential Revision 0.1-Feb.14 2012- 2 -Contents一、手机CAMERA的物理结构:........................................................................................ - 4 -二、 CAMERA 的成像原理: ................................................................................................. - 4 -三、 CAMERA 常见的数据输出格式:.................................................................................. - 5 -四、阅读CAMERA的规格书(以TRULY模组OV5647_RAW为例):........................... - 6 -五、 CAMERA 的硬件原理图及引脚 ..................................................................................... - 7 -1、电源部分:.................................................................................................................... - 7 -2、 S ENSOR I NPUT部分:................................................................................................... - 7 -3、 S ENSOR O UT P UT部分:............................................................................................... - 7 -4、 I2C 部分:SCL,I2C时钟信号线和SDA,I2C数据信号线。
高通camera学习笔记(一)
⾼通camera学习笔记(⼀)⾼通新的camera驱动架构设计发⽣了⼀些变化,借⽤互联⽹上常⽤的⼀种结构,⼤致的原理如此:将camera的所有功能划分为不同的模块,让模块⾃⼰来决定⾃⼰的事情(⾼内聚,低耦合),模块需要有统⼀的接⼝和格式。
模块中有端⼝,通过端⼝把模块连接起来,⼜把模块挂在总线上。
每⼀个端⼝的连接就是⼀个流,把这些流⽤pipeline来管理。
每次启动⼀个camera就创建⼀个会话,由这个会话来管理此camera的⼀切事物。
对于每⼀个会话,模块是共享的,它可以是camera的硬件资源也可以是其它资源(如⼀些软件算法等资源)。
那么如何来定义这个模块的结构呢?1.端⼝——端⼝属于模块,如果这个模块只有source端⼝,那么它就是⼀个src模块;如果只有sink端⼝就是sink模块,如果都有就是中间模块。
没有端⼝的模块是不能连接到流中的,但他可以完成⼀些其他的功能,⽐如接收引擎的设置,报告事件到bus等。
连接到流中的端⼝,也就是说流事件(set/get)主要通过端⼝来处理。
⽽来⾃于引擎的(set/get)通过模块来处理,当然端⼝也可以把事件交给模块来处理。
模块内部的端⼝可以通过模块来建⽴关系,也可以建⽴内部的连接,端⼝有关get/set process。
2.模块线程——每个模块可以有⼀个线程来处理模块的事情。
⼀个线程对应⼀个队列,线程就是从队列中取出数据处理,然后应答回去。
3.总线回调——挡⼀个模块向总线注册时,总线向其提供⼀个回调函数,当模块有事件发⽣时,调⽤这个函数向bus发消息,然后总线把这个消息提交给管道,管道把这个消息顺着流发下去。
4.模块的get、set以及process。
管道、引擎与会话管道有两端,⼀端⽤于读,⼀端⽤于写。
camera引擎负责对管道的监控,⽽会话管理camera引擎。
从代码结构上来看这种新的驱动架构⾼通的camera deamon代码放置在vendor\qcom\proprietary\mm-camera⽬录下,⽽此⽬录下的mm-camera2就是新的camera架构位置,进⼊⾥⾯可以看到media-controller、server-imaging、server-tuning及其它⼏个⽬录,我们这⾥需要关注的就是media-controller⽬录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Contents一、手机CAMERA的物理结构:........................................................................................ - 4 -二、 CAMERA 的成像原理: ................................................................................................. - 4 -三、 CAMERA 常见的数据输出格式:.................................................................................. - 5 -四、阅读CAMERA的规格书(以TRULY模组OV5647_RAW为例):........................... - 6 -五、 CAMERA 的硬件原理图及引脚 ..................................................................................... - 7 -1、电源部分:.................................................................................................................... - 7 -2、 S ENSOR I NPUT部分:................................................................................................... - 7 -3、 S ENSOR O UT P UT部分:............................................................................................... - 7 -4、 I2C 部分:SCL,I2C时钟信号线和SDA,I2C数据信号线。
.................................. - 7 -六、 MTK 平台 CAMERA 驱动架构: .................................................................................. - 8 -七、 MTK 平台 CAMERA 相关代码文件(以下代码均为 MTK6575 平台): .................... - 9 -1、 C AMERA S ENSOR驱动相关文件.................................................................................... - 9 -2、 S ENSOR ID 和一些枚举类型的定义............................................................................. - 9 -3、 S ENSOR供电.................................................................................................................. - 9 -4、 K ERNEL S PACE的 S ENSOR L IST,IMGSENSOR模块注册............................................... - 9 -5、 U SER S PACE的 S ENSOR L IST,向用户空间提供支持的 S ENSOR L IST.........................- 10 -6、 S ENSOR效果调整的接口............................................................................................- 10 -八、 CAMERA 模块驱动、设备与总线结构: .....................................................................- 11 -A)驱动的注册: ..................................................................................................................- 11 -B)设备的注册: ..................................................................................................................- 11 -C)总线的匹配: ..................................................................................................................- 12 -九、 CAMERA 驱动工作流程: ............................................................................................- 13 -十、 CAMERA 驱动添加、调试流程:.................................................................................- 17 -Ghong Confidential Revision 0.1-Feb.14 2012- 3 -Ⓒ2012 Ghong inc.一、手机Camera的物理结构:FPC: Flexible Printed Circuit 可挠性印刷电路板Sensor:图象传感器IR:红外滤波片Holder:基座Lens:镜头二、Camera的成像原理:景物通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为模拟的电信号,经过 A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过 IO 接口传输到 CPU 中处理,通过 LCD 就可以看到图像了。
图像传感器(SENSOR)是一种半导体芯片,其表面包含有几十万到几百万的光电二极管。
光电二极管受到光照射时,就会产生电荷。
目前的 SENSOR 类型有两种:CCD(Charge Couple Device),电荷耦合器件,它是目前高像素类 sensor 中比较成熟的成像器件,是以一行为单位的电流信号。
CMOS(Complementary Metal Oxide Semiconductor),互补金属氧化物半导体。
CMOS 的信号是以点为单位的电荷信号,更为敏感,速度也更快,更为省电。
ISP 的性能是决定影像流畅的关键,JPEG encoder 的性能也是关键指标之一。
而 JPEG encoder 又分为硬件 JPEG 压缩方式,和软件 RGB 压缩方式。
DSP 控制芯片的作用是:将感光芯片获取的数据及时快速地传到 baseband 中并刷新感光芯片,因此控制芯片的好坏,直接决定画面品质(比如色彩饱和度、清晰度)与流畅度。
三、Camera常见的数据输出格式:常见的数据输出格式有:Rawdata 格式、YUV 格式、RGB 格式。
RGB 格式:采用这种编码方法,每种颜色都可用三个变量来表示红色、绿色以及蓝色的强度。
每一个像素有三原色 R 红色、G 绿色、B 蓝色组成。
YUV 格式:其中“Y”表示明亮度(Luminance或Luma),就是灰阶值;而“U”和“V”表示色度(Chrominance 或 Chroma),是描述影像色彩及饱和度,用于指定像素的颜色。
RAW DATA 格式:是CCD或CMOS在将光信号转换为电信号时的电平高低的原始记录,单纯地将没有进行任何处理的图像数据,即摄像元件直接得到的电信号进行数字化处理而得到的。
支持 YUV/RGB 格式的模组,一般会在模组上集成 ISP(Image Single Processor),经过A/D 转换过的原始数据经过 ISP 处理生成 YUV 标准格式传到 BB。
一般来说,这种设计适用于低像素 Camera 的要求,会在主板上省去一个 DSP,可降低成本。
在调试过程中,YUV/RGB 格式的摄像头,其所有参数都可在 kernel 层通过寄存器来控制。
调试一般由 sensor的原厂支持。
支持 RawData 格式的模组,由于感光区域的需求,不会再模组内集成 ISP 以最大程度的增大感光区域的面积,提高照片质量。
模组把原始的数字信号传给BB 上的DSP 进行处理,MTK 自带的 DSP 一般包含 ISP、JPEG encoder、和 DSP 控制芯片。
在调试的时候图像的效果需要 MTK 在 HAL 层的参数进行支持。
四、阅读Camera的规格书(以Truly模组OV5647_Raw为例):Ghong Confidential Revision 0.1-Feb.14 2012- 6 -Ⓒ2012 Ghong inc.五、Camera的硬件原理图及引脚(以W19S项目MainCameraOV5647为例):从上面可看出,连接 Camera 的 30 根 Pin 脚可大致分为以下几类:1、电源部分:a)VCAMD 就是 DVDD 数字供电,主要给 ISP 供电,由于 RAWDATA 格式的 sensor 其 ISP 是在 BB 端,所以将其引脚将其 NC。
从上面的规格书上可以看出 DVDD 是内部 BB 端供电。
模组已将其 NC 掉了;b)VCAM_IO 就是 VDDIO 数字 IO 电源主要给 I2C 部分供电;c)VCAMA 就是 AVDD 模拟供电,主要给感光区和 ADC 部分供电;d)VCAM_AF 是对 Camera 自动对焦马达的供电。
2、 Sensor Input 部分:a)Reset 信号,用于复位、初始化。
b)Standby/PowerDown 信号,用于进入待机模式,降低功耗。