格科微[GalaxyCore]摄像头成像方向调节方法


GalaxyCore 系列摄像头采用逐行扫描的方式将阵列产生的信号依次输入到模拟信号处理模块中。最开始的行为 0 行。在默认寄存器设置下,Sensor 的阵列数据输出顺序为从下到上,从左到右。GalaxyCore 系列摄像头可通过寄存器控制扫描顺序,实现镜像/垂直翻转。
继续阅读“格科微[GalaxyCore]摄像头成像方向调节方法”

MTK摄像头Android驱动新版本升级指南


MTK摄像头的驱动包含有kernel部分和hal层2个部分,在Android版本升级之后,内核版本也进行了升级,在旧版本往新版本移植的过程中,要注意以下几个部分:

继续阅读“MTK摄像头Android驱动新版本升级指南”

全志平台camera.cfg文件的选项内容说明


全志平台采用camera.cfg对摄像头的基本配置项进行配置,在调试过程中,可以通过adb的方式进行简单方便的调试,其具体含义说明如下:

;-------------------------------------------------------------------------------
; 用于camera的配置
;
; 采用格式:
; key = key_value
; 注意: 每个key需要顶格写;
; key_value紧跟着key后面的等号后面, 位于同一行中;
; key_value限制大小为256字节以内;
;
;-------------------------------------------------------------------------------
 
;-------------------------------------------------------------------------------
; exif information of "make" and "model"
; exif 信息,用于标识照片的来源及拍照设备名称,一般不用修改。
;-------------------------------------------------------------------------------
key_camera_exif_make = MAKE_A23
key_camera_exif_model = MODEL_A23
 
;-------------------------------------------------------------------------------
; 1 for single camera, 2 for double camera
;  摄像头数量,1 -- 单摄像头 ;2 -- 双摄像头
;-------------------------------------------------------------------------------
number_of_camera = 1
 
;-------------------------------------------------------------------------------
; CAMERA_FACING_BACK
;
; 后置摄像头,一般情况0 表示后置摄像头,当转化摄像头配置的gpio口时,可能为后置。
; 具体根据硬件配置。
;-------------------------------------------------------------------------------
camera_id = 0
 
;-------------------------------------------------------------------------------
; 1 for CAMERA_FACING_FRONT
; 0 for CAMERA_FACING_BACK
; 摄像头的朝向,0 -- 背对人脸的方向, 1 -- 面对人脸的方向。
;-------------------------------------------------------------------------------
camera_facing = 0
 
;-------------------------------------------------------------------------------
; 1 for camera without isp(using built-in isp of Axx)
; 0 for camera with isp
; 是否内置isp , 0 -- 有 1 -- 没有 
;-------------------------------------------------------------------------------
use_builtin_isp = 0
 
;-------------------------------------------------------------------------------
; camera orientation (0, 90, 180, 270)
 
; 摄像头旋转方向,一般不做旋转,出现某个摄像头出现方向不对是做调整。
;-------------------------------------------------------------------------------
camera_orientation = 0
 
;-------------------------------------------------------------------------------
; driver device name
; 系统设备名称,一般前后摄像头共用dev/video0;
; 检测是否有摄像头设备挂载,可以adb  shell ll dev/ 查看是否有该设备。
;-------------------------------------------------------------------------------
camera_device = /dev/video0
 
;-------------------------------------------------------------------------------
; device id
; for two camera devices with one CSI
; 用于区分CSI设备的序号,一般不做修改。
;-------------------------------------------------------------------------------
device_id = 0
;------------------------------------------------------
; 浏览配置。
; used_preview_size -- 是否配置的画面尺寸。 1 -- 是,0 -- 否
; key_support_preview_size -- 可以支持的画面尺寸。
; key_default_preview_size -- 默认支持的画面尺寸
; 不建议做修改
;-----------------------------------------------------
used_preview_size = 1
key_support_preview_size = 640x480
key_default_preview_size = 640x480
 
;------------------------------------------------------
; 拍照配置。
; used_picture_size -- 是否配置的画面尺寸。 1 -- 是,0 -- 否
; key_support_picture_size -- 可以支持的画面尺寸。
; key_default_picture_size -- 默认支持的画面尺寸
;-----------------------------------------------------
used_picture_size = 1
key_support_picture_size = 1600x1200,800x600
key_default_picture_size = 1600x1200
 
;------------------------------------------------------
; 闪光灯配置。
; used_flash_mode -- 是否使用闪光灯。 1 -- 是,0 -- 否
; key_support_flash_mode -- 可以支持的闪光灯的配置项目,在页面上显示一般为。on -- 开启, off -- 关闭
; key_default_flash_mode -- 默认闪光灯配置
;-----------------------------------------------------
used_flash_mode = 1
key_support_flash_mode = on,off
key_default_flash_mode = on
 
;------------------------------------------------------
; 颜色特效配置。
; used_color_effect -- 是否使用颜色特效 。1 -- 是,0 -- 否
; key_support_color_effect -- 可以支持的颜色特效的配置项目,在页面上显示一般为。
; none -- 无; mono -- 单色; negative -- 底片模式 ; sepia -- 棕褐色;aqua -- 浅绿色
; key_default_color_effect -- 默认颜色特效配置 none
;-----------------------------------------------------
 
used_color_effect=1
key_support_color_effect = none,mono,negative,sepia,aqua
key_default_color_effect = none
 
;------------------------------------------------------
; 帧频率配置。
; used_frame_rate -- 是否使用帧频率 。1 -- 是,0 -- 否
; key_support_frame_rate -- 可以支持的帧频率 ;一般为20~25,根据摄像头的情况配置
; key_support_frame_rate -- 默认帧频率 
;-----------------------------------------------------
 
used_frame_rate = 1
key_support_frame_rate = 25
key_default_frame_rate = 25
;------------------------------------------------------
; 聚焦模式配置。
; used_focus_mode -- 是否使用聚焦模式 。1 -- 是,0 -- 否
; key_support_focus_mode -- 可以支持的聚焦模式;
; auto -- 自动 ; infinity -- 远焦距模式 ;macro -- 微距 ; fixed -- 定焦 ; continuous-video -- 视频自动连续对焦; continuous-picture -- 图片自动连续对焦
; key_default_focus_mode -- 默认聚焦模式
; 聚焦模式需要摄像头支持
;-----------------------------------------------------
used_focus_mode = 0
key_support_focus_mode = auto,infinity,macro,fixed,continuous-video,continuous-picture
key_default_focus_mode = auto
 
;------------------------------------------------------
; 场景模式配置。
; used_scene_mode -- 是否使用场景模式 。1 -- 是,0 -- 否
; key_support_scene_mode -- 可以支持的场景模式;
; auto -- 自动 ; portrait -- 人物模式;landscape --  风景 ;night -- 夜景;night-portrait -- 夜景人物;
;theatre -- 室内;beach -- 户外;snow -- 雪景; sunset -- 黄昏; steadyphoto -- 防抖 ;fireworks -- 强光;
;sports -- 运动模式; party -- 聚会; candlelight -- 灯光;barcode -- 条形码
; key_default_scene_mode -- 默认场景模式 -- auto
; 场景模式需要摄像头支持,翻译不一定准确,请核对相应的专业词汇。
;-----------------------------------------------------
 
used_scene_mode = 0
key_support_scene_mode = auto,portrait,landscape,night,night-portrait,theatre,beach,snow,sunset,steadyphoto,fireworks,sports,party,candlelight,barcode
key_default_scene_mode = auto
 
;------------------------------------------------------
; 白平衡配置。
; used_white_balance -- 是否使用白平衡 。1 -- 是,0 -- 否
; key_support_white_balance -- 可以支持的白平衡配置。
; auto -- 自动 ;incandescent -- 白炽灯   fluorescent  -- 荧光
;warm-fluorescent -- 荧光   daylight -- 日光 ;cloudy-daylight -- 阴天
; key_default_white_balance -- 默认白平衡 -- auto
;-----------------------------------------------------
used_white_balance = 1
key_support_white_balance = auto,incandescent,fluorescent,warm-fluorescent,daylight,cloudy-daylight
key_default_white_balance = auto
 
;------------------------------------------------------
; 曝光值配置。
; used_scene_mode -- 是否使用曝光值 1 -- 是,0 -- 否
; key_max_exposure_compensation --  最大曝光值
;key_min_exposure_compensation -- 最小曝光值
; key_step_exposure_compensation -- 步进值
;key_default_exposure_compensation -- 默认曝光值
;-----------------------------------------------------
 
used_exposure_compensation = 1
key_max_exposure_compensation = 3
key_min_exposure_compensation = -3
key_step_exposure_compensation = 1
key_default_exposure_compensation = 0
 
;-------------------------------------------------------------------------------

以上为个人总结,若有谬误,还请指出。

MTK平台新增摄像头指南 — 已更新android 7.0路径的更改。


增加驱动及配置到Kernel 层:

  • 增加驱动文件夹到如下目录:
mediatek\custom\common\kernel\imgsensor\
mediatek\custom\mt6582[mt8127]\kernel\imgsensor\
mediatek\custom\[project]\kernel\imgsensor\
//说明:
//优先级:[project]/mt6582/mt8127 /common
//建议增加时:yuv 放到 common ,raw 放到:mt6582/mt8127.
//驱动文件夹命名规则为:品牌+型号+ _ +yuv/raw
  • 增加可选摄像头到mediatek\custom\common\kernel\imgsensor\src\kd_sensorlist.h,修改内容如下:

a. 申明摄像头初始化函数, 注意此函数在摄像头驱动文件中实现,注意检查是否一致,如下增加gc0312摄像头为例。

UINT32 GC0312_YUV_SensorInit(PSENSOR_FUNCTION_STRUCT *pfFunc);

b. 增加摄像头到 camera List(此处宏定义可在 ProjectConfig.mk 文件中找到并对应即可编译此摄像头)

#if defined(GC0312_YUV)
    {GC0312_SENSOR_ID, SENSOR_DRVNAME_GC0312_YUV, GC0312_YUV_SensorInit},
#endif
  • 配置摄像的检测的参数,修改 mediatek\custom\common\kernel\imgsensor\inc\kd_imgsensor.h增加sensor name 和sensor id的定义
#define GC0312_SENSOR_ID                        0xb310
#define SENSOR_DRVNAME_GC0312_YUV               "gc0312yuv"
  • 修改上电文件保证摄像头上电:mediatek\custom\[project]\kernel\camera\camera\kd_camera_hw.c
    根据实际情况调节上电电压和方式。


增加驱动及配置到HAL 层:

  • 增加驱动文件夹到目录:
mediatek\custom\common\hal\imgsensor\
mediatek\custom\mt6582[mt8127]\hal\imgsensor\
mediatek\custom\[project]\hal\imgsensor\
//优先级:[project] > mt6582/mt8127 > common
//建议增加时:yuv 放到 common ,raw 放到:mt6582/mt8127.
//驱动文件夹命名规则为:品牌+型号+ _ +yuv/raw
  • 增加可选摄像头到文件:mediatek\custom\common\hal\imgsensor\src\sensorlist.cpp
#if defined(GC0312_YUV)
    YUV_INFO(GC0312_SENSOR_ID, SENSOR_DRVNAME_GC0312_YUV, NULL),
#endif

注:在 kdSensorList 和 SensorList 里面添加驱动的时候要注意,Sensor 添加的位置要一样。否则驱动会跑乱,轻则 ISP 参数不对,重则 Sensor 无法启动。


到此添加设备到系统已经内容完毕,但编译测试之前需要对 ProjectConfig.mk 进行配置,

打开对应工程的 ProjectConfig.mk 文件,具体路径为:mediatek\config\[project]\ProjectConfig.mk
将对应的文件夹的名字拷贝到等号后面。

Kernel 部分:
CUSTOM_KERNEL_IMGSENSOR =
后置摄像头: CUSTOM_KERNEL_MAIN_IMGSENSOR =
前置摄像头: CUSTOM_KERNEL_SUB_IMGSENSOR =

HAL 部分:
CUSTOM_HAL_IMGSENSOR =
后置摄像头: CUSTOM_HAL_MAIN_IMGSENSOR =
前置摄像头: CUSTOM_HAL_SUB_IMGSENSOR =

注:摄像头的数量不超过 16 个,否则多余的不可识别。

关于编译:

增加或者修改内核部分,编译时:
./mk -o=TARGET_BUILD_VARIANT=user [project] n k bootimg

修改 HAL 层,编译时:
./mk -o=TARGET_BUILD_VARIANT=user [project] mm mediatek/platform/mt6582[mt8127]/hardware/mtkcam/

注,为保证编译有效,编译前需要删除如下文件夹的内容:
out\target\product\[project]\obj\CUSTGEN\custom\hal\imgsensor
out\target\product\[project]\obj\CUSTGEN\custom\kernel\imgsensor


android 7.0 路径的变化

# 增加了kernel和hal同步的kd_imgsensor.h
device/mediatek/common/kernel-headers/kd_imgsensor.h

# kernel 驱动文件位置的更新
kernel-3.18/drivers/misc/mediatek/imgsensor/

#kernel上电文件位置的更新
kernel-3.18/drivers/misc/mediatek/imgsensor/src/mt8163/camera_hw/

# hal 驱动文件的位置的更新
vendor/mediatek/proprietary/custom/mt8163/hal/imgsensor/

# hal层调整摄像头方向等参数文件的更新
vendor/mediatek/proprietary/custom/mt8163/hal/sendepfeature/