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

合集下载

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驱动

基于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等各种状态控制。

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_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平台终端校准软件操作说明V1.0

MTK平台终端校准软件操作说明V1.0

技术文件技术文件名称:MTK平台终端校准软件操作说明技术文件编号:版本:V1.0共页(包括封面)拟制朱世鸿审核会签标准化批准雅为信息技术(上海)有限公司FAITH CONCEPT Co., LTD修改记录目录1编写目的 (3)2校准项目 (3)2.1AFC自动频率校准: (3)2.2APC自动功率校准: (3)2.3APOC发射频率响应校准: (3)2.4P A TH L OSS 接收增益校准: (3)2.5ADC电池电量校准: (4)3软件安装 (4)4硬件环境 (4)4.1设备清单: (4)4.2连接方式: (4)4.3仪器连接检查: (4)5设置 (5)5.1系统设置: (6)5.2ADC数据和线损设置: (7)5.3NVRAM与C HIP 设置: (7)5.4校准检查标准设置: (8)5.5APOC S ETTING (9)6操作 (10)7故障处理 (10)1编写目的编写本文件的目的在于详细地说明基于MTK平台的GSM终端校准软件的使用目的和操作过程,以便于对校准软件的更好操作。

由于在生产手机时,所用元器件的绝对精度通常不足以满足设备频率、功率电平和其它参数的性能目标。

校准就成为生产中不可或缺的一环, 使元器件能够满足设备频率等性能指标。

如果使用昂贵的、精度更高的、一致性更好的元器件,可以保证手机性能的一致性,就可以省去这个环节。

但是,在现实情况下,每个无线设备生产厂商都刻意要给用户提供价廉物美的产品,故为保证每个手机的性能指标,还是更多的进行手机校准。

本次介绍的校准软件是基于MTK方案。

2校准项目2.1AFC 自动频率校准:手机所发射出去的信号能否被其它接收设备正确识别、解调出来,是取决于发射信道上的中心频率。

自动频率校准就是保证发射信道上的中心频率的准确性。

无线设备一般都设计一个数字压控振荡来保证发射和接收频率的精度。

校准频率的全部物理含义就是精确的实测出数字压控振荡的斜率和节距,将此数学模型写入设备中。

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驱动调试举例

mtk驱动调试举例

MTK平台进行驱动调试1.makefileMXX_GPRS.mak(mcu\make)Option.mak(mcu\make)对于同一个平台,不同的项目有着不同的功能配置。

对于驱动调试来说,需要修改和添加一些宏开关控制;基本格式和步骤:MXX_GPRS.mak :XXX_XXX = XXXXXX_XXX = NONEXXX_XXX = TRUEXXX_XXX = FALSEOption.mak:ifdef XXX_XXXifneq ($(strip $( XXX_XXX)),FALSE)COM_DEFS += XXX_XXXendifendif代码中就使用XXX_XXX来控制相关代码;#if defined(XXX_XXX)//add code here#endif以MT6226(05c)平台为例:列举一些修改比较频繁的开关:MT6226A MT6226B MT6226M MT6227A MT6227B PLATFORM MT6226 MT6226 MT6226M MT6227A MT6227B CHIP_VER S00 S01 S01 S00 S01 LCD_MODULE 用于LCM Module控制;详细见No.2CUSTOM_CFLAGS 如用JTAG进行DEBUG需打开此开关;注意关闭WatchDogEXT_CAM_MODULE 如用外部DSP来控制Sensor;需用到此开关;详见No.3 ISP_SUPPORT 如Camera没有外挂DSP需打开此开关;CMOS_SENSOR 用以区分Sensor的类型;如OV7660;OV9650等NOR_FLASH_TYPE 所用NOR Flash的类型;现一般是AMD Series;MSDC_CARD_SUPPORT_TYPE 用以是否支持T卡的开关;不支持为NONE;支持为MSDC_SD_MMCBLUETOOTH_SUPPORT 用以是否支持蓝牙的开关;不支持为NONE;支持为所用芯片的类型;TOUCH_PANEL_SUPPORT 用以是否支持触摸屏的开关;不支持为FALSE;支持为TRUE;MOTION_SENSOR_SUPPORT 用以是否支持Motion sensor的开关;不支持为NONE;支持为所用芯片类型MAIN_LCD_SIZE 所用LCD的大小;如240X320;176X220;120X160等FM_RADIO_CHIP 用以是否支持FM功能;不支持为NONE;支持为所用芯片类型;NAND_SUPPORT 用以是否支持NAND FLASH;不支持为FASLE;支持为TRUEPHONE_TYPE 滑盖机: SLIDE;翻盖机:CLAMSHELL;平板机:BAR;旋转:SPINPLATFORM_NAME 项目名称;CAMERA_PIXEL 所用Sensor象素;默认30万;130万:ONE_MEGA_PIXEL;200万:TWO_MEGA_PIXEL等等WEBCAM_SUPPORT 用以是否支持Web Camera功能开关;支持为TRUE;不支持为FALSEect…….其他一些开关视项目而定;可以会修改;可能会添加一些开关。

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平台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驱动架构分析及驱动调试指引

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

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背光亮度。

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;即频率和占空比。

MTK手机平台下camera的设置方案

MTK手机平台下camera的设置方案
(MSG)
cam_set_param_req_hdlr()
camera_operation_setting()
yuv_operation_setting()[camera_yuv_process_v2.c--2475]
imagesetting
(注: image_sensor_func相关函数的注册,在image_sensor_gc0309.c)
当需要显示时,调用preview函数,使所有参数开始生效
生效:
mdi_camera_preview_start()
mdi_camera_preview_start_internal()
media_cam_preview()
cam_send_preview_req()
(MSG)
cam_preview_req_hdlr()
camera_preview_process()[camera_process_v2.c--]
yuv_preview_process()[camera_yuv_process_v2.c--2223]
yuv_image_setting()[camera_yuv_process_v2.c--2881]
image_sensor_func->yuv_sensor_setting
生效:
mdi_camera_power_on()
media_cam_power_up()[发送MSG_ID_MEDIA_CAM_POWER_UP_REQ消息]
(MSG)
cam_power_up_req_hdlr()
image_sensor_func->sensor_init()[camera_process_v2.c]
mmicamerarescamerac总设置窗口cameramenuc各种处理函用于记录设置值当需要显示时调用preview函数使所有参数开始生效生效

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

MTK驱动调试经验

MTK驱动调试经验

MTK6735M项目F100驱动调试报告一配置EMMC按照硬件的选择配置新的flash,因为第一版都是按照MTK认证列表使用,所有一般如果不行有两个可能:1配置不正确,需要确定alps\bootable\bootloader\preloader\tools\emigen\MT6735下的flash 配置文件的时序是否正确,修改配置文件alps\bootable\bootloader\preloader\custom\f100\inc的文件custom_MemoryDevice.h2需要硬件配合查看是否EMMC元器件未能贴好,造成不能烧录二调试LCD调试步骤:1确定LCD的连接方式;1确定dws配置正确;2确定电源是否正确;3确定配置参数的读写方式类型,包括:LCM_setting_table模式读写:struct LCM_setting_table{unsigned cmd;unsigned char count;unsigned char para_list[64];};LCM_setting_table_V3模式读写:typedef struct{unsigned char id;unsigned char cmd;unsigned char count;unsigned char para_list[128];}LCM_setting_table_V3;4确定开关机的时序和读取初始化参数的方法;5确定DSI的配置是否正确,此配置函数为static void lcm_get_params(LCM_PARAMS*params)6如果做屏兼容,需要配置.compare_id=lcm_compare_id,此项为读取LCD ID进行判断;调试碰到问题:1参数的读写方式不正确,造成屏花屏,换一种读写方式正确;2suspend时未能写正确,在待机时出现kernel crash,需要特别注意;3未能配置lcm_compare_id,造成做屏兼容时未能自动识别;4TE的配置需要特别注意,此引脚MTK的补丁默认TE中断不开;三调试TPTP连接的接口为I2C模式调试步骤:1确定dws配置正确;2确定中断,电源正确;3确定I2C读写正确;4确定报点没有断点,TP没有坏点;5配置虚拟按键时注意键值范围;调试碰到问题:调试的TP为GT9157,出现很奇怪的问题,就是I2C的初始化读写没有报错,但是读写数据就是不成功,最后查找到问题为:I2C加了下拉的防静电电阻,造成实际上的下拉,但是根据规格书配置要求,必须要做上拉处理,否则容易出现读写不正常,所有此处造成I2C没有正常工作;三调试sensor system调试步骤:一accelerometer1确定dws配置正确;2确定中断,电源正确;3确定I2C读写正确;4确定好旋转的方向;调试碰到的问题:调试accelerometer出现没有报点,然后换了驱动就可以了,判断为原驱动内的读取x.y.z的方式不对;二alsps1确定dws配置正确;2确定中断,电源正确;3确定I2C读写正确;4确定好旋转的方向;调试碰到的问题:调试光感出现距离不对的问题,调试距离判断参数,成功;四调试camera调试步骤:1确定主副摄像头的型号,在配置文件配置好,添加好驱动代码;(注意:需要配置alps\device\huaying\f100里的ProjectConfig.mk,此文件为主要配置文件,配置alps\kernel-3.10\arch\arm64\configs里的f100_debug_defconfig)2确定dws配置正确;3确定摄像头的开关机的时序,按照摄像头的规格书来配置;4根据硬件配置好MCLK;5确定好是否支持AF,闪光灯功能;五调试Audio调试步骤:1按照驱动开发资料进行驱动配置,确定好是内置功放还是外置功放;2配置好音频功放的输入时序,按照喇叭的功率进行配置,外置功放配置路径为alps\kernel-3.10\sound\soc\mediatek\mt_soc_audio_v3\mt_soc_codec_63xx.c3按照硬件配置mic为单/双;六调试HEADSET调试步骤:按照驱动开发资料配置即可。

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

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)是一种半导体芯片,其表面包含有几十万到几百万的光电二极管。

光电二极管受到光照射时,就会产生电荷。

目前的 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 层的参数进行支持。

Ghong Confidential Revision 0.1-Feb.14 2012- 5 -Ⓒ2012 Ghong inc.四、阅读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 信号,用于进入待机模式,降低功耗。

c)Mclk,即 MasterClock 信号,是由 BB 端提供。

3、 Sensor OutPut 部分:a)Pclk,即 PixelClock 信号,由MCLK 分频得到,作为外部时钟控制图像传输帧率b)HSYNC,行同步信号,其上升沿表示新一列行图像数据的开始。

c)VSYNC,帧同步信号,其下降沿表示新的一帧图片的开始。

d)D0-D9 一共 10 根数据线(8/10 根等);4、 I2C 部分:SCL,I2C时钟信号线和SDA,I2C数据信号线。

Ghong Confidential Revision 0.1-Feb.14 2012- 7 -百度文库 - 让每个人平等地提升自我Ⓒ2012 Ghong inc.百度文库 - 让每个人平等地提升自我Camera Driver analysis in the platform of MTKPreliminary Information 六、MTK平台Camera驱动架构:上图的架构相信大家都有了一定的了解,android 将系统大致分为应用层、库文件和硬件抽象层、Linux 内核三层。

在底层的内核空间,Camera 的 driver 将其驱动起来以后,将硬件驱动的接口交给硬件抽象层,android 上层的 Camera 应用程序在 android 实时系统中的虚拟机中,加载 android 留给 Camera 公用的一些库文件,调用硬件抽象层的接口来控制 Camera硬件来实现功能。

当然,如果是 Raw 模式的 Camera,还需要在硬件抽象层调用一些参数来控制 Camera 的效果。

Ghong Confidential Revision 0.1-Feb.14 2012- 8 -Ⓒ2012 Ghong inc.七、MTK平台Camera相关代码文件(以下代码均为MTK6575平台):1、 CameraSensor 驱动相关文件2、 Sensor ID 和一些枚举类型的定义3、 Sensor 供电4、 Kernel Space 的 SensorList,imgsensor 模块注册Ghong Confidential Revision 0.1-Feb.14 2012- 9 -5、 User Space 的 SensorList,向用户空间提供支持的 SensorList6、 Sensor 效果调整的接口Ghong Confidential Revision 0.1-Feb.14 2012- 10 -八、Camera模块驱动、设备与总线结构:一般在 Linux 设备驱动模型中,我们只需要关心总线、设备、驱动这三个实体。

总线会充当红娘对加载于其上的设备与驱动进行配对,对于 Camera 模块也不例外,下面从总线、设备、驱动的角度来分析 Camera 模块驱动的注册、匹配与加载过程。

a) 驱动的注册:在(\custom\common\kernel\imgsensor\src\Kd_sensorlist.c)CAMERA_HW_i2C_init 这个函数里通过Platform_driver_register(&g_stCAMERA_HW_Driver)把 Camera 模块驱动注册到Platform 总线上。

而 g_stCAMERA_HW_Driver 是对结构体 Platform_driver 这个结构体的填充。

(Kernel\include\linux\Platform_device.h)Platform_driver 这个结构体包含 Probe()、Remove()等函数来完成驱动的填充。

b) 设备的注册:对 platform_device 的定义通常在 BSP 的板级文件:(kernel\arch\sh\boards\mach-ap325rxa\Setup.c)中实现,在板级文件中,将 platform_device 归纳为一个数组,最终通过 platform_add_device()函数统一注册:- 11 -c) 总线的匹配:既然是驱动 Platform_device 那对应的设备必然是挂载 Platform 总线上的Platform_device,Platform 总线是 Linux 系统提供的一种机制,不同于 I2C、I2S 等总线,它是一种虚拟的总线。

Linux 系统为 Platform 总线定义了一个 bus_type 的实例 Platform_bus_type:(Kernel\drivers\base\platform.c)Platform 总线通过 platform_match 这个成员函数来确定 platform_device 与 platform_driver 如何进行匹配:Ghong Confidential Revision 0.1-Feb.14 2012- 12 -九、Camera驱动工作流程:下载Capture下载PreviewPower On 参数为拍照参数为预览做准备做准备PowerOffIIC INITReset软件ResetPDN读ID判断是否连接到需要的Sensor从上图可以清晰的了解到 Camera 的一个工作流程主要分为这么七步:1.打开 Camera Power LDO,让 Camera 有能量保证。

相关文档
最新文档