1 添加驱动
1.1 在以下路径中添加好相应驱动
路径:mediatek\custom\common\kernel\imgsensor\gc2235_raw
gc2235_Camera_Sensor_para.h
gc2235_CameraCustomized.h
gc2235_Sensor.c
gc2235_Sensor.h
路径:mediatek\custom\common\hal\imgsensor\gc2235_raw
camera_AE_PLineTable_gc2235raw.h
camera_info_gc2235raw_mt6575.h
camera_isp_pca_gc2235raw_mt6575.h
camera_isp_regs_gc2235raw_mt6575.h
camera_tuning_para_gc2235raw_mt6575.cpp
lens_para_CHT.cpp
1.2 修改驱动相关文件
路径:mediatek\config\XXXX(红色字为具体的项目名)
文件:ProjectConfig.mk
添加内容:
CUSTOM_KERNEL_IMGSENSOR = …… gc2235_raw
CUSTOM_KERNEL_MAIN_IMGSENSOR = …… gc2235_raw
CUSTOM_HAL_IMGSENSOR = …… gc2235_raw
CUSTOM_HAL_MAIN_IMGSENSOR = …… gc2235_raw
如果没有AF请修改宏:
CUSTOM_HAL_LENS=dummy_lens # fm50af
CUSTOM_HAL_MAIN_LENS=dummy_lens# fm50af
CUSTOM_KERNEL_LENS=dummy_lens # fm50af
CUSTOM_KERNEL_MAIN_LENS=dummy_lens# fm50af
路径:mediatek\custom\common\kernel\imgsensor\src
文件:kd_sensorlist.h
添加内容:
UINT32 GC2235SensorInit(PSENSOR_FUNCTION_STRUCT *pfFunc);
ACDK_KD_SENSOR_INIT_FUNCTION_STRUCT
kdSensorList[MAX_NUM_OF_SUPPORT_SENSOR+1] =
{
…………
…………
#if defined(GC2235_RAW)
{GC2235_SENSOR_ID, SENSOR_DRVNAME_GC2235_RAW, GC2235SensorInit},
#endif
…………
…………
};
路径:mediatek\custom\common\kernel\imgsensor\inc
文件:kd_imgsensor.h
添加内容:
#define GC2235_SENSOR_ID 0x2235
#define SENSOR_DRVNAME_GC2235_RAW "gc2235"
路径:mediatek\custom\common\hal\imgsensor\src
文件:sensorlist.cpp
添加内容:
MSDK_SENSOR_INIT_FUNCTION_STRUCT SensorList[] =
{
…………
#if defined(GC2235_RAW)
RAW_INFO(GC2235_SENSOR_ID, SENSOR_DRVNAME_GC2235_RAW, NULL),
#endif
…………
};
1.3 上电及供电电压的修改
路径:mediatek\custom\XXXX\kernel\camera\camera
文件:kd_camera_hw.c
修改内容:
{
//for main sensor
{GPIO_CAMERA_CMRST_PIN,
GPIO_CAMERA_CMRST_PIN_M_GPIO, /* mode */
GPIO_OUT_ONE, /* ON state */
GPIO_OUT_ZERO, /* OFF state */
GPIO_CAMERA_CMPDN_PIN,
GPIO_CAMERA_CMPDN_PIN_M_GPIO,
GPIO_OUT_ ZERO,
GPIO_OUT_ ONE,
},
…………
else if(currSensorName &&(0 == strcmp(SENSOR_DRVNAME_GC2235_RAW,currSensorName))){
// DVDD
if(TRUE != hwPowerOn(CAMERA_POWER_VCAM_D, VOL_1800,mode_name))
{
…………
}
mdelay(1);
}
一般只需要修改 DVDD 电压兼容,如果其他电压也需要做兼容,请参照 DVDD 电压的修改。
2 编译下载及调试
2.1 编译
添加好驱动后就可以编译了,第一次添加驱动需要对整个工程进行重新编译。
命令:./mk XXXX n
如果只修改了kernel层中的驱动,只需要编译kernel和bootimage即可。
命令:./mk XXXX r k bootimage
如果修改的是hal层中的ISP参数,需要单独编译库文件。
MT6575/MT6515:
命令:./mk XXXX mm mediatek/source/external/mhal/src/custom
MT6577/MT6517/MT8377:
命令:./mk XXXX mm mediatek/platform/mt6577/hardware/camera/custom
2.2 下载
编译完成后将生成ISP库文件,我们需要该文件导入手机才能看到效果。
库文件生成的路径:out\target\product\XXXX\obj\lib
文件名:libcameracustom.so
导入方法:
1) 将手机用USB线连接至电脑。
2) 利用adb命令将库文件推送进手机。如,把库文件放在D盘目录中:
命令:adb push d:/libcameracustom.so /system/lib
2.3 调试
调节镜像
由于是Raw Sensor,在调节镜像的时候比较麻烦,如果是调整寄存器来纠正镜像的
话,之前调好的ISP参数就会失效。
如果是上下左右都镜像,我们可以通过平台提供的旋转功能来纠正镜像。
路径:mediatek\custom\XXXX\hal\camera\camera
文件名:
MT6515/MT6575:cfg_tuning_mt6575.h
MT6517/MT6577:cfg_setting_imgsensor.h
修改内容:
static SensorOrientation_T inst = {
u4Degree_0 : 90, // main sensor in degree (0, 90, 180, 270)
u4Degree_1 : 270, // sub sensor in degree (0, 90, 180, 270)
};
Sensor的Degree根据实际修改,如果原始90°,上下左右镜像则改为270°,以
此类推。
如果只有一个方向镜像,需要改Sensor的寄存器来纠正,而且ISP参数需要重新调
试。
调试AEC
针对AEC收敛不够迅速和平滑,需要检查如下文件:
路径:mediatek\custom\common\hal\inc\aaa\mt6575\tuning_custom
文件:ae_tuning_custom_mt6575.h
修改内容:
将下表中的数值改成和图中一致。
static strAEMOVE g_AEMoveTable[] =
{
……
}
static strAEMOVE g_AEMoveTable[]=
{
{-20,17,25},//mean below -2.5 move increase 25 index
{-20,25,20},// -2.5 ~ -2 move increase 20 index
......
}
=============华丽丽的分割线======================================
Qualcomm
1. 添加驱动
1.1 在以下路径中添加相应驱动文件
路径:kernel\drivers\media\video\msm\sensors
gc2235_v4l2.c
gc2235_v4l2.h
路径:vendor\qcom\proprietary\mm‐camera\server\hardware\sensor\gc2235
gc2235_u.c
gc2235_u.h
路径:vendor\qcom\proprietary\mm‐camera\server\chromatix\0208\libchromatix\
chromatix_gc0339
chromatix_gc2235
chromatix_imx074
1.2 修改驱动相关文件
路径:kernel\drivers\media\video\msm\
文件:Kconfig
添加内容:
config GC2235
bool "Sensor gc2235 (BAYER 2M)"
depends on MSM_CAMERA
default y
‐‐‐help‐‐‐
Galaxy Core 2M RAW Sensor
路径:kernel\drivers\media\video\msm\sensors\
文件:Makefile
添加内容:
obj‐$(CONFIG_GC2235) += gc2235_v4l2.o
路径:vendor\qcom\proprietary\mm‐camera\server\hardware\sensor\
文件:sensor.c
在相应位置添加:
#include "gc2235_u.h"
extern char *gc2235_load_chromatix[];
static sensor_proc_start_t sensors[] = {
……
SENSORS_PROCCESS_START(gc2235),
……
}
路径:kernel\arch\arm\mach‐msm\
文件:board‐msm7627a‐camera.c
在相应位置添加:
#ifdef CONFIG_GC2235
static struct msm_camera_gpio_conf gpio_conf_gc2235 = {
.camera_off_table = camera_off_gpio_table,
.camera_on_table = camera_on_gpio_table,
.gpio_no_mux = 1,
};
#endif
#ifdef CONFIG_GC2235
static struct msm_actuator_info msm_act_main_cam_8_info = {
.board_info = &msm_act_main_cam_i2c_info,
.cam_name = MSM_ACTUATOR_MAIN_CAM_6,
.bus_id = MSM_GSBI0_QUP_I2C_BUS_ID,
.vcm_pwd = GPIO_NOT_CONFIGURED,
.vcm_enable = 0,
};
static struct msm_camera_sensor_platform_info sensor_board_info_gc2235 = {
.mount_angle = 90,
.cam_vreg = msm_cam_vreg,
.num_vreg = ARRAY_SIZE(msm_cam_vreg),
.gpio_conf = &gpio_conf_gc2235,
};
static struct msm_camera_sensor_flash_src msm_flash_src_gc2235 = {
.flash_sr_type = MSM_CAMERA_FLASH_NONE,
};
static struct msm_camera_sensor_flash_data flash_gc2235 = {
.flash_type = MSM_CAMERA_FLASH_LED,
.flash_src = &msm_flash_src_gc2235,
};
static struct msm_camera_sensor_info msm_camera_sensor_gc2235_data = {
.sensor_name = "gc2235",
.sensor_reset_enable = 0,
.pmic_gpio_enable = 1,
.sensor_reset = GPIO_NOT_CONFIGURED,
.sensor_pwd = GPIO_NOT_CONFIGURED,
.pdata = &msm_camera_device_data_csi1[0],
.flash_data = &flash_gc2235,
.sensor_platform_info = &sensor_board_info_gc2235,
.csi_if = 1,
.camera_type = BACK_CAMERA_2D,
.sensor_type = BAYER_SENSOR,
.actuator_info = &msm_act_main_cam_8_info,
};
#endif
#ifdef CONFIG_GC2235
msm_camera_sensor_gc2235_data.sensor_reset = GPIO_SKU3_CAM_5MP_CAMIF_RESET;
msm_camera_sensor_gc2235_data.sensor_pwd = GPIO_SKU3_CAM_5MP_SHDN_N;
sensor_board_info_gc2235.mount_angle = 90;
msm_flash_src_gc2235.flash_sr_type = MSM_CAMERA_FLASH_NONE;
#endif
#ifdef CONFIG_GC2235
{
I2C_BOARD_INFO("gc2235", 0x78),
.platform_data = &msm_camera_sensor_gc2235_data,
},
#endif
2. 编译下载及调试
2.1 编译
添加好文件后即可编译,调用Ter minal窗口进入工程的根目录。
高通编译前需要配置编译选项,命令:
. build/envsetup.sh
choosecombo
运行以上命令后,需要选择所编译的版本,请根据实际情况配置。