您的位置:首页 > 其它

MTK-CAMERA

2017-11-29 13:01 218 查看
硬件环境:MTK6735 & 触摸屏是GT9271

软件环境:Linux内核3.10 & 安卓5.1

1、GPIO配置

(1)打开kernel-3.10/tools/dct/DrvGen.exe 

(2)修改kernel-3.10/drivers/misc/mediatek/mach/mt6735/${project}/dct/dct/codegen.dws

(3)配置两个摄像头的reset和powerdown的管脚。



2、camera移植

(1)修改<kernel>/arch/arm/configs/<project>_debug_defconfig 中添加

CONFIG_CUSTOM_KERNEL_IMGSENSOR="ov8858_mipi_raw  s5k3h5_mipi_raw"

修改device/rq/<project>/ProjectConfig.mk或device/mediatek/<project>/ProjectConfig.mk

imgsensor相关:

CUSTOM_KERNEL_IMGSENSOR = ov8858_mipi_raw s5k3h5_mipi_raw
CUSTOM_KERNEL_MAIN_IMGSENSOR = ov8858_mipi_raw
CUSTOM_KERNEL_SUB_IMGSENSOR = s5k3h5_mipi_raw

CUSTOM_HAL_IMGSENSOR = ov8858_mipi_raw s5k3h5_mipi_raw
CUSTOM_HAL_MAIN_IMGSENSOR = ov8858_mipi_raw
<
4000
/span>CUSTOM_HAL_SUB_IMGSENSOR = s5k3h5_mipi_raw
lens相关:(没有自动对焦AF或刚开始port sensor(移植)测试时,则配置成傻瓜dummy_lens)

CUSTOM_KERNEL_LENS = ad5820af dw9714af dummy_lens
CUSTOM_KERNEL_MAIN_LENS = dw9714af
CUSTOM_KERNEL_SUB_LENS = dummy_lens

CUSTOM_HAL_LENS = ad5820af dw9714af dummy_lens
CUSTOM_HAL_MAIN_LENS = dw9714af
CUSTOM_HAL_SUB_LENS = dummy_lens
flashlight相关:(port sensor初期可设置为dummy_flashlight)

CUSTOM_KERNEL_FLASHLIGHT = constant_flashlight
CUSTOM_HAL_FLASHLIGHT = dummy_flashlight
OTP(One Time Programmable)相关:(仅RAW sensor使用)
CUSTOM_KERNEL_CAM_CAL = dummy_eeprom
CUSTOM_KERNEL_EEPROM = dummy_eeprom

CUSTOM_HAL_CAM_CAL = dummy_eeprom
CUSTOM_HAL_EEPROM = dummy_eeprom


(2)把kernel层的代码ov8858_mipi_raw和s5k3h5_mipi_raw文件夹拷贝到

kernel-3.10/drivers/misc/mediatek/imgsensor/src/mt6735/下在(注意文件夹名字的格式)

(3)将hal层代码整个目录ov8858_mipi_raw  s5k3h5_mipi_raw拷贝到vendor/mediatek/proprietary/custom/mt6735/hal/D1/imgsensor/目录下;

(4)修改kernel-3.10/drivers/misc/mediatek/imgsensor/src/mt6735/Makefile

(5)打开kernel-3.10/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h文件, 定义sensor id和sensor
name

(并且inc下所有的文件必须拷贝到vendor/mediatek/proprietary/custom/kernel/imgsensor/inc/,这是用户空间可以访问到的目录)

(注意保持队形)

#define OV8858_SENSOR_ID                        0x8858
#define S5K3H5XA_SENSOR_ID                      0x3085
#define SENSOR_DRVNAME_S5K3H5_MIPI_RAW         "s5k3h5mipiraw"
#define SENSOR_DRVNAME_OV8858_MIPI_RAW          "ov8858mipiraw"


(6)在kernel-3.10/drivers/misc/mediatek/imgsensor/src/mt6735/kd_sensorlist.h文件中声明初始化函数;

UINT32 OV8858_MIPI_RAW_SensorInit(PSENSOR_FUNCTION_STRUCT *pfFunc);
UINT32 S5K3H5XA_MIPI_RAW_SensorInit(PSENSOR_FUNCTION_STRUCT *pfFunc);




如果是YUV sensor,则需要把MIPI_RAW改成YUV

在kdSensorList数组中添加:

#if defined(OV8858_MIPI_RAW)    //该宏为驱动目录名大写
{OV8858_SENSOR_ID, SENSOR_DRVNAME_OV8858_MIPI_RAW,OV8858_MIPI_RAW_SensorInit},
#endif
#if defined(S5K3H2YX_MIPI_RAW)  //该宏为驱动目录名大写
{S5K3H2YX_SENSOR_ID, SENSOR_DRVNAME_S5K3H2YX_MIPI_RAW, S5K3H2YX_MIPI_RAW_SensorInit},
#endif
(7)在kernel-3.10/drivers/misc/mediatek/imgsensor/src/sensorlist.cpp文件的SensorList数组中添加

#if defined(OV8858_MIPI_RAW)
RAW_INF(OV8858_SENSOR_ID, SENSOR_DRVNAME_OV8858_MIPI_RAW,OV8858_MIPI_RAW_SensorInit),
#endif
#if defined(S5K3H2YX_MIPI_RAW)
RAW_INF(S5K3H2YX_SENSOR_ID, SENSOR_DRVNAME_S5K3H2YX_MIPI_RAW, S5K3H2YX_MIPI_RAW_SensorInit),
#endif

(8)如果有AF时,需要修改vendor/mediatek/proprietary/custom/mt6735/hal/D1/lens/src/lenslist.cpp中lenslist[] (只需修改红色)

#if defined(FM50AF)
{DUMMY_SENSOR_ID, FM50AF_LENS_ID, "FM50AF", pFM50AF_getDefaultData},
#endif
(9)修改上电时序

文件在kernel-3.10/drivers/misc/mediatek/mach/mt6735/rq6735_35gt_b_l1/camera/camera/kd_camera_hw.c

电源部分: VCAM_D就是DVDD数字供电,主要给ISP供电,如果是RAWDATA格式的sensor其ISP是在BB端,所以将其引脚将其NC;

VCAM_IO就是VDDIO数字IO电源主要给I2C部分供电;即DOVDD

VCAM_A就是AVDD模拟供电,主要给感光区和ADC部分供电;

VCAM_AF是对Camera自动对焦马达的供电 ,一半是最后给电

引脚部分: Reset引脚和powerdown引脚

其中XSHUTDN是通过下拉电阻实现置低的reset

根据datasheet上电时序:VCAM_A-》VCAM_IO-》PDN高-》VCAM_D-》RST高-》VCAM_AFO-》PDN高-》RST高

注意:这部分的驱动都有两套路径,此处列出的都是platform路径下的,但是project完整路径下如果也有,project路径下的优先权更高:

kernel-3.10/drivers/misc/mediatek/mach/mt6735/<project>/imgsensor/

vendor/mediatek/proprietary/custom/<project>/hal/D1/imgsensor/































                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: