MTK平台Camera驱动

合集下载

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 -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(摄像头)调试教程

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说明

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功能。

MtK平台驱动调试指南

MtK平台驱动调试指南

MtK平台驱动调试指南GPIO设置篇一、GPIO有关的函数1.GPIO_ModeSetup:函数原型:void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)功能:设置GPIO的工作模式是作为GPIO,还是作为专有功能接口。

参数:pin:GPIO 的pin脚号,对应于原理图上MTK62XX 主CPU芯片的上的GPIO标号conf_dada:值有0~3。

其中0是表示作为GPIO模式,其他根据专有功能的不同进行设置。

2.GPiO_InitIO函数原型:void GPIO_InitIO(char direction, char port)功能:初始化GPIO的工作方向是作为输入,还是作为输出参数:direction:工作方向,0表示输入,1表示输出port:GPIO的pin脚3.GPIO_ReadIO函数原型:char GPIO_ReadIO(char port)功能:从GPIO读取数据参数:port:GPIO的pin脚4.GPIO_WriteIO函数原型:void GPIO_WriteIO(kal_char data, kal_char port)功能:往GPIO写数据参数:data:1表示给高电平,0表示给低电平port:GPIO的pin脚备注:这些函数在Gpio.C中可以找到。

二、GPIO模式设置GPIO口在系统上电的时候,有的是默认高电平,有的是默认低电平,这是MCU 内部决定的,软件无法更改,但是在系统开机过程中,会对GPIO进行初始化,MCU中有几个GPIO模式初始化寄存器,通过这个寄存器给GPIO设置初始模式。

例如:以下这个寄存器就是用来设置0-7号GPIO的模工作模式的。

这个初始化过程在Gpio_Drv.C中的函数GPIO_init()中,项目开始的时候,先要检查这个部分的模式设置是否正确。

三、各个功能模块的GPIO设置1. LCD背光,马达有的LCD背光是靠GPIO进行控制的,有的则靠PMIC进行控制。

mtkcamera移植步骤

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;}。

MTK_camera驱动流程总结_pei

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平台驱动调试笔记

MTK平台驱动调试笔记

分类:LINUX一、【一】调试串口的设置驱动的调式过程经常需要通过trace工具看log的,trace前需要修改手机串口,有以下三种方法设置串口1 通过手机进入工程模式设置2 修改代码,修改Nvram_user_config.c中的NVRAM_EF_PORT_SETTING_DEFAULT[]3.通过META工具修改在连上meta:左上角选中NVRAM Editor,在跳出的对话框里选择other LID,再选择NVRAM_EF_PORT_SETTING_LID,接下来read from nvram,对话框右边就会出现串口的设置情况,对调tst_port_ps(输入0)和ps_port(输入99)的值,二【【二】关于gpio口Gpio的初始化在文件gpio_drv.c里,可以用MTK提供的工具配置也可以用代码在程序里直接操作,二者的选择要看有没有定义宏__CUST_NEW__工具初始化时要注意配置codegen.dws,该文件里配置的只是对gpio口的初始化,并不是所有的gpio口都要设置成工作时的模式,尤其是当作时钟和蓝牙部分的gpiio口,初始化时就设置成工作模式的话会造成电机电流过大的。

代码初始化时DRV_WriteReg()、DRV_Reg对gpio口寄存器操作,分别定义gpio口的模式,和方向(0:输入;1:输出),对单个gpio口操作用到以下函数(以gpio25为例):GPIO_ModeSetup(25, 0);设置GPIO25为模式0GPIO_InitIO(1,25);初始化GPIO25方向为输出GPIO_WriteIO(0, 25 );设值GPIO25输入低电平0三、【三】键盘设置1)键盘定义Keypad_def.c如果定义CUST_NEW,工具中的键盘定义对应在改文件里的KEYPAD_MAPPING(keypad_drv.h);2)硬件键盘定义与软件mmi键盘的对应nKeyPadMap[](Keybrd.c)3)工程模式键盘测试函数EntryFMKeypadTest()修改键盘测试时界面显示的键的名称1. 做好上面的第一第二两步2. FactoryModeSrc.c开始部分定义添加的键所要显示的名称,值,分别应用到keypad_layout[](确定要显示的位置),keypad_value[]3.在EntryFMKeypadTest()函数中的数组IdleScreenDigits[]里添加要显示的键4)如果要设置一个键不管在什么界面下都起作用的话(如手电筒开关或则其他需求)就需要在键盘的事件响应函数static voidKeyEventHandler(KEYBRD_MESSAGE *eventKey)里设置,根据键值条用相应的响应函数,不过该函数及时在锁屏状态下也会执行的,需要根据需要添加条件语句四、关于LCDlcm背光驱动分为两种控制方式:1. pwm这个是通过调占空比来调节亮度的持续信号;2. PFM这个是通过脉冲的个数来控制LCM背光亮度。

camera驱动交流(高通平台)

camera驱动交流(高通平台)
然后代码通过 C/S 架构走向
Then 进入HAL层 /hardware/qcom/camera/QualcommCamera2.cpp
/hardware/qcom/camera/QcameraHWI.cpp
status_t QCameraHardwareInterface::autoFocus() { …
Kernel 层初始化时,主要是初始化 I2C 接口、配置参数、check sensor ID
Open 过程(7X):
Open 过程(8X): JAVA层是一样的,不一样的在于HAL层的OPEN方法从 /hardware/qcom/camera/ QualcommCamera2.cpp HAL_openCameraHardware(cameraId) 改为了 new QCameraHardwareInterface(cameraId, mode);
我们乊前打开了/dev/video2 的节点,在 msm_open 函数中最后会去 调 用 msm_send_open_server,这 个函数 会 去唤 醒我 们用 户 空间 的 config 线程。
在这个函数中我们需要注意这个timeout的时间限制,它是要求我们 的请求必须在10s内完成,否则config线程就会超时,从而导致相机将 无法使用,只能通过重启来修复。 这个MSM_V4L2_OPEN将会调用到 \vendor\qcom\proprietary\mm-camera\server\core\Qcamsvr. c qcamsvr_process_server_node_event的这个函数会被唤醒 如下:
Then
static int8_t config_proc_CAMERA_SET_PARM_AUTO_FOCUS(void *parm1, void *parm2) { … rc = ctrl->comp_ops[MCTL_COMPID_SENSOR].set_params( ctrl->comp_ops[MCTL_COMPID_SENSOR].handle, SENSOR_SET_AUTO_FOCUS, NULL, NULL); … } 在上面这个函数有对YUV和RAW sensor进行区分,RAW sensor走的是 MCTL_COMPID_STATSPROC,而YUV是通过MCTL_COMPID_SENSOR往

MTK平台驱动基本介绍

MTK平台驱动基本介绍

MTK平台驱动基本介绍----------MTK6239一:LCD文件位于custom\drv\LCD以菲利浦的一款240 X 400的屏为例介绍如何添加LCD驱动SIMCOM38_08B_GPRS.makLCD_MODULE = SUNRISE_2827TI_LCMMAIN_LCD_SIZE = 240 X 400Option.makCOM_DEFS_FOR_SUNRISE_2827TI_LCM = ILI9326 COLOR_LCD SUNRISE_2827TI_LCMTFT_MAINLCD WQVGA_MAINLCD在custom\drv\LCD添加SUNRISE_2827TI_LCM文件夹,下面有5个文件。

文件名同MTK 系统自带的(lcd.c、lcd_hw.h、lcd_sw.h、lcd_sw_inc.h、lcd_sw_rnd.h)。

SUNRISE -------------- 屏的厂家ILI9326 ----------------- 屏的驱动芯片LCM ---------------------- 屏240 X 400 ----------------- 屏的分辨率COLOR_LCD ---------- 彩色TFT_MAINLCD ------- 屏的类型,对应的还有CSTN,OLED。

目前主要是TFTWQVGA_MAINLCD ---- 屏的分辨率做了上述修改以后,编译时,lcd驱动就对应SUNRISE_2827TI_LCM文件夹里的驱动。

文件夹里的5个文件,通常lcd_hw.h和lcd_sw_rnd不需要修改,lcd_sw_inc.h只是定义屏的分辨率。

如下:#ifdef __MMI_MAINLCD_128X128__#define LCD_WIDTH 128#define LCD_HEIGHT 128#elif (defined(__MMI_MAINLCD_128X160__))#define LCD_WIDTH 128#define LCD_HEIGHT 160#elif (defined(__MMI_MAINLCD_176X220__))#define LCD_WIDTH 176#define LCD_HEIGHT 220#elif (defined(__MMI_MAINLCD_240X400__))#define LCD_WIDTH 240#define LCD_HEIGHT 400#endif#define UI_DEVICE_WIDTH LCD_WIDTH#define UI_DEVICE_HEIGHT LCD_HEIGHT修改比较多的是lcd.c和lcd_sw.h:lcd_sw.h#define LCD_CMD_DMA_MODE --------- 是否使用DMA方式?(DMA简单,速度快,通过MTK的寄存器进行操作,但灵活性差;非DMA方式,直接对地址操作,灵活性好,但速度会有影响。

MTK平台camera(摄像头)调试教程

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兼容方法

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时出错。

MTK软件培训课程(三)MTK驱动架构分析精品PPT课件

MTK软件培训课程(三)MTK驱动架构分析精品PPT课件
MTK驱动架构分析
MTK软件培训课程(三) 2005.11
Camera程序架构
MMI Task
Camera MMI
MDI Camera
GDI
MEDIA Task
Camera Driver
LCD Interface
HW- (LCM, ISP, MT6218, MT6219...)
Camera程序架构
MMI task
Camera APP:控制应用程序逻辑 MDI:应用程序接口层,直接操作Camera feature GDI: 处理Multi-layer,实现OSD
Media task
调用Camera驱动程序的接口层 Camera Driver
控制Camera Backend IC,Sensor以及LCD硬件
除了Camera模块外,Idle screen和Media Player 等也使用GDI。
GDI和pixtel_UI的关系
GDI的实现
使用GDI_HANDLE,gdi_handle来操作 GDI对象,GDI的对象可以是layer,gif, jpeg等。 GDI函数返回一个GDI_RESULT GDI函数使用互斥来保护,进入GDI函数 时调用GDI_ENTER_CRITICAL_SECTION()退 出函数时调用GDI_EXIT_CRITICAL_SECTION()
Graphics Device Interface
MTK的画图功能有两套体系,一套是 pixtel的体系,另一套是GDI。Pixtel的体 系比较老,它只能画单层的图像,如果 你想进行图像叠加,只能自己写程序来 实现。而GDI体系由于有硬件的支持,它 可以处理最多4个层数据的叠加,有很强 的表现能力。
Prview的状态机

MTK驱动架构分析及驱动调试指引

MTK驱动架构分析及驱动调试指引

Camera MMI程序分析(3/3)
Camera MMI仅控制应用逻辑,而避免去涉及 照相机驱动的细节。比如说进入preview过程, Camera MMI仅仅是向MDI接口模块发送一个 Preview的请求,并将自己的数据结构传给MDI 层,再由MDI层向Media task层发送请求,并最 终调用到驱动程序来控制芯片实现preview。 MMI不关心不同的芯片如何去进入preview。 OSD是通过GDI层来绘制的,因为GDI支持最 大4层的图像叠加(6228平台可支持6层GDI)

Camera MMI程序分析(2/3)
Exit Preview
Capture
Capture Contshot Capture C来自untdownCancel
Capture Burstshot
Save Done
Save
Save Burstshot Burst Save Confirm Save Confirm

Media Task总结
总结
充分了解Media Task的作用和工作流程以后, 就可以理顺从Camera应用程序到底层程序的 整个流程和逻辑,无论是应用程序还是驱动 程序编程都会变得非常的轻松。 Media Task是可扩展可更改的,所有的代码 都是开放的,我们也可以订制一些自己的东 西。比如在200万像素拍照时出现了内存不 足问题,我们就修改了对文件的操作方法。
GDI简介(Graphics Device Interface)
MTK的画图功能有两套体系,一套是 pixtel的体系,另一套是GDI。Pixtel的体 系比较老,它最开始是用来处理单层图 像的简单接口,pixtel体系也是基于GDI 基础上封装出来的。而GDI体系由于有硬 件的支持,它可以处理最多4个层数据的 叠加,有很强的表现能力。 硬件支持有:DMA的传输,图片硬件解 码,以及2D加速器等。

MTK平台camera(摄像头)调试教程解读

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上电流程分析

最新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。

MTK平台驱动调试介绍

MTK平台驱动调试介绍

(二)EVT贴片软件的整合
1.配置 makefile
xxx_GPRS.mak(mcu\make) Option.mak(mcu\make) 不同的项目需求不同,需要修改和添加一些宏开关控制。 基本格式和步骤:
MXX_GPRS.mak: XXX_XXX = XXX XXX_XXX = NONE XXX_XXX = TRUE XXX_XXX = FALSE Option.mak: ifdef XXX_XXX ifneq ($(strip $( XXX_XXX)),FALSE) COM_DEFS += XXX_XXX endif endif 代码中就使用XXX_XXX来控制相关代码; #if defined(XXX_XXX) //add co3: case 4: case 5: default:
} for(i=0;i<temp;i++){ GPIO_WriteIO(0,7); for (j =0;j <100;j++) {} GPIO_WriteIO(1,7); for(j=0;j<20;j++) {} } …… } else{
模块调试:Backlight
\mcu\custom\drv\misc_drv\SIMC25_06B_BB\custom_equipment.c kal_bool custom_cfg_gpio_set_level(kal_uint8 gpio_dev_type, kal_uint8 gpio_dev_level ) { …… switch(gpio_dev_type) { case GPIO_DEV_LED_MAINLCD:
GPIO_WriteIO(0,7);
…… }
PWM模式:需要根据实际情况在Mcu\custom\drv\misc_drv\custom_hw_default.c文件中 修改PWM_Level_Info;即频率和占空比。

MTK53平台CAMERA兼容说明及新项目CAMERA移植说明

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(摄像头)调试教程

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数据信号线。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于MTK平台Camera驱动简介软件开发部:John.WangCamera的硬件架构ARM Image signalCMOS Sensorprocessor& resizerMemoryImage encodeLCD软件开发部:John.WangCamera模块硬件在手机上的基本架构有三种(一)Baseband控制LCD+Sensor.Baseband控制LCD,在Camera模式下Backend IC控制LCD进行各种操作。

Camera模块硬件在手机上的基本架构有三种(二)Baseband控制LCD+Backend IC,Backend IC控制Sensor。

Camera模块硬件在手机上的基本架构有三种(三)Baseband控制Backend IC,并且在非Camera模式下Baseband控制LCD,在Camera模式下Backend IC控制LCD进行各种操作。

Camera 接口信号sensor MTK cameraVCAMA, VCAMDCMDAT0~7CMVREFCMHREFCMMCLKCMPCLKCMPDNCMRSTSCLKSDACamera 接口信号signal descriptionCMVREF CMOS sensor vertical reference signal input CMHREF CMOS sensor horizontal reference signal input SCLK IIC interface clock signalSDA IIC interface data signalCMMCLK CMOS sensor master clock output CMPCLK CMOS sensor pixel clock intputCMPDN CMOS sensor power down control CMRST CMOS sensor reset signal outputVCAMA Camera module analog powerVCAMD Camera module digital powerCMDAT0~7Camera data busIIC时序控制Camera interface时序控制Camera程序架构软件开发部:John.WangCamera程序架构MMI taskCamera APP:控制应用程序逻辑,Camera的状态机,包括了preview,capture,exit等各种状态控制。

MDI:应用程序接口层,直接操作Camera featureGDI:处理Multi-layer,实现OSDMedia task调用Camera驱动程序的接口层Camera Drive:控制Camera IC,Sensor以及LCD硬件LCD interface控制LCM软件开发部:John.Wang一:平台camera结构体定义:1:抽象出的对于sensor 操作的功能函数接口:typedef struct{kal_int8 (* sensor_init)(void);void (* get_sensor_id)(kal_uint8 *sensor_write_id, kal_uint8 *sensor_read_id);void (* get_sensor_size)(kal_uint16 *sensor_width, kal_uint16 *sensor_height);void (* get_sensor_period) (kal_uint16 *pixel_number, kal_uint16 *line_number);void (* sensor_preview_setting)(image_sensor_exposure_window_struct*image_window,image_sensor_config_struct*sensor_config_data);void (* sensor_capture_setting)(image_sensor_exposure_window_struct*image_window,image_sensor_config_struct*sensor_config_data);void (* write_sensor_reg)(kal_uint32 cmd, kal_uint32 para);kal_uint32 (* read_sensor_reg)(kal_uint32 cmd);void (* set_sensor_eshutter)(kal_uint16 eshutter);void (* set_camera_night_mode) (kal_bool enable);void (* sensor_power_off) (void);kal_uint16 (* set_sensor_gain) (kal_uint16 gain);void (* set_flashlight) (kal_bool enable);MM_ERROR_CODE_ENUM (* sensor_feature_control) (IMAGE_SENSOR_FEATURE_ENUM feature_id, void* p_feature_para_input,void* p_feature_para_output, kal_uint16 feature_para_output_length); #if (defined(YUV_SENSOR_SUPPORT)||defined(__ATV_SUPPORT__))kal_uint32 (* yuv_sensor_setting)(kal_uint32 cmd, kal_uint32 para);#endif} image_sensor_func_struct;二:以sensorOV7670取例说明代码:1:kal_int8 OV7670_init(void)主要包括:(1)上电:cis_module_power_on(KAL_TRUE);(2)时序,数据格式,时钟设置:SET_CMOS_CLOCK_POLARITY_LOW;SET_VSYNC_POLARITY_LOW;SET_HSYNC_POLARITY_LOW; ENABLE_CAMERA_INDATA_FORMAT;SET_CAMERA_INPUT_TYPE(INPUT_YUV422);ENABLE_CAMERA_TG_CLK_48M;(3)配置SCCB:OV7670_Config_HW_SCCB();(4)复位sensor:OV7670_write_cmos_sensor(0x12,0x80);(5)读取sensor ID:OV7670_sensor_id=(OV7670_read_cmos_sensor(0x0A)<<8)|OV7670_read_cmos_senso r(0x0B);(6)初始化sensor:OV7670_init_setting();软件开发部:John.Wang二:以sensorOV7670取例说明代码:2:void OV7670_get_size(kal_uint16 *sensor_width, kal_uint16 *sensor_height){*sensor_width=OV7670_IMAGE_SENSOR_VGA_WIDTH;/* pixel numbers actually used in one frame */*sensor_height=OV7670_IMAGE_SENSOR_VGA_HEIGHT;/* line numbers actually used in one frame */}给出sensor的pixel的数据3:void OV7670_get_period(kal_uint16 *pixel_number, kal_uint16 *line_number){*pixel_number=OV7670_VGA_PERIOD_PIXEL_NUMS;/* pixel numbers in one period of HSYNC */*line_number=OV7670_VGA_PERIOD_LINE_NUMS;/* line numbers in one period of VSYNC */}/* get_OV7670_period */给出sensor的pixel的周期软件开发部:John.Wang二:以sensorOV7670取例说明代码:4:void OV7670_preview(image_sensor_exposure_window_struct*image_window, image_sensor_config_struct*sensor_config_data)主要包括: (1) set grab window:image_window->grab_start_x= OV7670_IMAGE_SENSOR_VGA_INSERTED_PIXELS; image_window->grab_start_y= OV7670_IMAGE_SENSOR_VGA_INSERTED_LINES; image_window->exposure_window_width=OV7670_IMAGE_SENSOR_VGA_WIDTH -2; image_window->exposure_window_height= OV7670_IMAGE_SENSOR_VGA_HEIGHT; (2)Set frame_rate:sensor_config_data->sensor_frame_rate= 300;(3)Set image_mirror:switch (sensor_config_data->image_mirror)(4)Set image encode mode:OV7670_MPEG4_encode_mode = KAL_TRUE;(5) enable AE, AWB:OV7670_ae_awb_enable(OV7670_CTRL_BY_SENSOR_DRV, KAL_TRUE);软件开发部:John.Wang二:以sensorOV7670取例说明代码:5:void OV7670_capture(image_sensor_exposure_window_struct*image_window, image_sensor_config_struct*sensor_config_data)(1)使能快门: shutter=sensor_config_data->capture_shutter;(2)Set grab windoe and timing:SET_TG_OUTPUT_CLK_DIVIDER(3);SET_CMOS_RISING_EDGE(0);SET_CMOS_FALLING_EDGE(2);ENABLE_CAMERA_PIXEL_CLKIN_ENABLE;SET_TG_PIXEL_CLK_DIVIDER(3);SET_CMOS_DATA_LATCH(2);image_window->grab_start_x=OV7670_IMAGE_SENSOR_VGA_INSERTED_PIXELS; image_window->grab_start_y=OV7670_IMAGE_SENSOR_VGA_INSERTED_LINES; image_window->exposure_window_width=OV7670_IMAGE_SENSOR_VGA_WIDTH -2; image_window->exposure_window_height=OV7670_IMAGE_SENSOR_VGA_HEIGHT -7;(3)写快门设置参数:void OV7670_write_shutter(kal_uint16 shutter)包括:frame_rate,exposure_lines参数等。

相关文档
最新文档