MTK Android Driver :camera

MTK平台相机配置指南

http://blog.youkuaiyun.com/cbk861110/article/details/17437283

7.camera

7.1 相关代码位置:

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

 

kernel:

\mediatek\custom\common\hal\imgsensor\gc2235_raw

 

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"

 

hal

\mediatek\custom\common\hal\imgsensor\gc2235_raw

 

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

…………

};

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

 

7.2 拍照图片尺寸设置:

..\mediatek\custom\prj\hal\camera\camera\cfg_ftbl_$prj$_raw_main.h

//Capture Size

CONFIG_FEATURE(FID_CAP_SIZE,

    BY_DEFAULT(CAPTURE_SIZE_1600_1200),

    /*BY_DEFAULT(CAPTURE_SIZE_2560_1920), benmodify*/

    CAPTURE_SIZE_640_480,

    CAPTURE_SIZE_1280_960,CAPTURE_SIZE_1600_1200,

)

 

7.3Camera物理角度旋转

90度:

\alps\mediatek\custom\$prj$\hal\imgsensor\src\cfg_setting_imgsensor.cpp

    static SensorOrientation_T const inst = {

        u4Degree_0  : 180,//90,  //  main sensor in degree (0, 90,180, 270)

        u4Degree_1  : 0,//90,   //  sub  sensor in degree (0, 90, 180, 270)

 

180度:

Sensor FAE提供修改方法。

 

7.4Camera 相同sensor id兼容方式(前后sensor id一致):

//配置区分:

CUSTOM_KERNEL_IMGSENSOR = gc0308_yuv# gc0308_sub_yuv

CUSTOM_KERNEL_MAIN_IMGSENSOR =gc0308_yuv # gc0308_sub_yuv

CUSTOM_HAL_IMGSENSOR = gc0308_yuv# gc0308_sub_yuv

CUSTOM_HAL_MAIN_IMGSENSOR = gc0308_yuv# gc0308_sub_yuv

 

 

//kernel:函数名也要区分

\alps\mediatek\custom\common\kernel\imgsensor\gc0308_sub_yuv

\alps\mediatek\custom\common\kernel\imgsensor\gc0308_yuv

 

//hal: 函数名也要区分

\alps\mediatek\custom\common\hal\imgsensor\gc0308_sub_yuv

\alps\mediatek\custom\common\hal\imgsensor\gc0308_yuv

 

//kdSensorList  SensorList里面添加驱动也要区分,sensor id不要区分,写成一致,根据前后摄像头开关代码区分。

#defineGC0328_SENSOR_ID       0x009D          

#defineGC0328_SUB_SENSOR_ID   0x9D9D      


### 摄像头模块驱动调试与配置信息 在MTK平台上,摄像头模块的驱动调试和配置涉及多个层次的交互,包括HAL层、内核层以及具体的硬件驱动。以下是一些关键点和步骤: - **驱动注册与初始化**:在系统启动时,不会直接访问硬件传感器,而是通过注册相关驱动来管理摄像头设备。当Android系统启动后,会启动如`camera_service`等服务,这些服务会直接访问HAL层,并通过内核驱动来操作摄像头[^2]。 - **驱动文件结构**:对于特定的摄像头模块(例如S5K3H5),需要准备相应的驱动代码、效果参数、镜头代码以及一些配置文件。这些文件通常包括: - 驱动代码(如`xxxx_mipi_raw.c`)。 - 效果参数文件。 - 镜头代码(如`main_lens.c`及其相关的AF控制代码)。 - 配置文件(如`projectconfig.mk`中的主副摄像头配置)。 - **驱动加载流程**:通过`KDIMGSENSORIOC_X_SET_DRIVER` ioctl命令向`Kd_sensorlist.c`中的`CAMERA_HW_Ioctl`传值,最终调用`kdSetDriver`函数。根据`projectconfig.mk`文件中的主副摄像头配置,找到对应的前后摄像头驱动文件,并挂接具体的底层驱动接口初始化函数[^1]。 - **Makefile配置**:确保所有必要的源文件都被包含在Makefile中,并且正确编译进内核模块。例如,在镜头驱动的Makefile中添加相应的C文件和目标文件路径[^4]。 - **调试技巧**: - 使用日志输出来跟踪驱动加载过程中的错误或异常情况。 - 确保电源管理和时钟配置正确无误。 - 检查I2C通信是否正常工作,因为这是与摄像头传感器通信的主要方式。 - 对于自动对焦(AF)功能,确认上电序列及控制信号是否符合规格要求。 - **问题排查**: - 如果摄像头无法被检测到,请检查硬件连接是否牢固,特别是I2C线路。 - 查看dmesg日志以获取更详细的错误信息。 - 确认设备树(Device Tree)配置是否正确指定了摄像头节点。 - 核对固件版本是否兼容当前的驱动程序。 ```c // 示例代码片段 - 主镜头驱动部分 #include "main_lens.h" int main_lens_init(void) { // 初始化镜头驱动... return 0; } void dw9714af_power_up(void) { // DW9714AF 上电逻辑... } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值