mtk camera 移植步骤

本文详细介绍了MTKCamera从Kernel层到HAL层的移植步骤,包括驱动代码、效果参数文件的添加,驱动结构配置,ID与drvname定义,时序配置及预览方向设置等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mtk camera 移植步骤:

1, Kernel层驱动代码文件添加

/mediatek/custom/doov92_wet_tdd/kernel/imgsensor/下添加imx179_mipi_raw_

2lane/  目录如下:

imx179_mipi_raw_2lane

         - imx179mipiraw_Camera_Sensor_para_2lane.h

         - imx179mipiraw_CameraCustomized_2lane.h

         - imx179mipiraw_Sensor_2lane.c

         - imx179mipiraw_Sensor_2lane.h

看了一下基本上所有的驱动文件都是这样的格式.

2, HAL层效果参数文件添加

/mediatek/custom/mt6592/hal/imgsensor/下添加imx179_mipi_raw_2lane目录,该目录list如下:

imx179_mipi_raw_2lane

         - camera_AE_PLineTable_imx179raw_2lane.h

         - camera_calibration_cam_cal_2lane.cpp

         - camera_flicker_para_imx179raw_2lane.cpp

         - camera_info_imx179raw_2lane.h

         - camera_isp_lsc_imx179raw_2lane.h

         - camera_isp_pca_imx179raw_2lane.h

         - camera_isp_regs_imx179raw_2lane.h

         - camera_tsf_data_imx179raw_2lane.h

         - camera_tsf_para_imx179raw_2lane.h

         - camera_tuning_para_imx179raw_2lane.cpp

         - config.ftbl.imx179_mipi_raw_2lane.h

根据具体的sensor, 文件会有所增减.

3, 驱动结构添加

./mediatek/custom/common/kernel/imgsensor/src/kd_sensorlist.H:

1)UINT32 IMX179_MIPI_RAW_2lane_SensorInit(PSENSOR_FUNCTION_STRUCT *pfFunc);

2) ACDK_KD_SENSOR_INIT_FUNCTION_STRUCT kdSensorList[MAX_NUM_OF_SUPPORT_SENSOR+1] =

                   {

                   #if defined(IMX179_MIPI_RAW_2LANE)//addimx179sensor(front), jintao_20140114_camera_front +++

                       {IMX179_SENSOR_2LANE_ID, SENSOR_DRVNAME_IMX179_MIPI_RAW, IMX179_MIPI_RAW_2lane_SensorInit},

                   #endif

                   ......

                   }

4, 定义IDdrv name

./mediatek/custom/common/kernel/imgsensor/inc/kd_imgsensor.h:

#define IMX179_SENSOR_2LANE_ID                       0x0179

#define SENSOR_DRVNAME_IMX179_MIPI_RAW    "imx179mipiraw_2lane"

5, HALIDdrv name的衔接

./mediatek/custom/common/hal/imgsensor/src/sensorlist.cpp

MSDK_SENSOR_INIT_FUNCTION_STRUCT SensorList[] =

{

#if defined(IMX179_MIPI_RAW_2LANE)//add imx179 sensor(front), jintao_20140114_camera_front +++

RAW_INFO(IMX179_SENSOR_2LANE_ID, SENSOR_DRVNAME_IMX179_MIPI_RAW, NULL),

#endif

......

}

6, Camera Sensor宏配置

/mediatek/config/doov92_wet_tdd/ProjectConfig.mk      ==配置

CUSTOM_HAL_IMGSENSOR=imx135_mipi_raw imx179_mipi_raw_2lane

CUSTOM_HAL_SUB_IMGSENSOR=imx179_mipi_raw_2lane

CUSTOM_KERNEL_IMGSENSOR=imx135_mipi_raw imx179_mipi_raw_2lane

CUSTOM_KERNEL_SUB_IMGSENSOR=imx179_mipi_raw_2lane

7,时序配置

./mediatek/custom/doov92_wet_tdd/kernel/camera/camera/kd_camera_hw.c

else if (currSensorName && (0 == strcmp(currSensorName,"imx179mipiraw_2lane")))

分别配置上电/下电.              原理图上的PIN脚收集如下.

Main Sensor 控制脚:

CMRST_MAIN     CMPDN_MAIN

VCAM_AF            AF_EN            

VCAMD               VCAMA

VCAMIO        

SCL               SDA

CMMCLK

MIPI-RDP0    MIPI-RDN0

MIPI-RDP1    MIPI-RDN1

MIPI-RDP2    MIPI-RDN2

MIPI-RDP3    MIPI-RDN3

MIPI-RCP     MIPI-RCN

F-LED+

F-LED1-

F-LED2-

 

8,Camera预览/拍照储存照片的方向改变

./mediatek/custom/doov92_wet_tdd/hal/imgsensor/src/cfg_setting_imgsensor.cpp //改的是这个

SensorOrientation_T const&

getSensorOrientation()

{

    static SensorOrientation_T const inst = {

        u4Degree_0  : 270,   //  main sensor in degree (0, 90, 180, 270), 后摄的方向配置.

        u4Degree_1  : 270,    //  sub  sensor in degree (0, 90, 180, 270), 摄的方向配置.

        u4Degree_2  : 90,   //  main2 sensor in degree (0, 90, 180, 270), 主设2的方向配置.

    };

    return inst;

}

### MTK Camera 驱动移植概述 MTK(MediaTek)Camera 的驱动移植涉及多个层次的配置和修改,主要包括 HAL 层、Kernel 层以及项目配置文件的调整。以下是关于如何将 MTK 相机功能成功移植到特定平台或设备的关键点: #### 1. **HAL 层配置** 在 HAL 层面,主要通过 `camera_custom_feature_table.cpp` 文件定义支持的功能组合。例如,在 MT6877 平台中,可以通过如下方式设置功能组合[^1]: ```cpp #define MTK_FEATURE_COMBINATION_SINGLE \ (MTK_FEATURE_FB | MTK_FEATURE_ZSD | TP_FEATURE_YFT_3RD_TESTDEMO) ``` 此部分用于指定相机模块所需的支持特性集合。 #### 2. **Kernel 驱动层配置** 对于 Kernel 驱动层面,需要确保对应的传感器驱动被正确添加至内核路径下。通常情况下,这些驱动位于以下目录结构中[^2][^3]: - `drivers/misc/mediatek/imgsensor/src/common/v1/` 具体操作包括但不限于新增目标硬件所使用的图像传感器驱动文件,比如 GC2375 和 SP2509 的 MIPI 原始数据接口实现: ```bash drivers/misc/mediatek/imgsensor/src/common/v1/gc2375_mipi_raw.c drivers/misc/mediatek/imgsensor/src/common/v1/sp2509_mipi_raw.c ``` 同时需注意更新 Makefile 及 Kconfig 文件以包含新引入的驱动组件。 #### 3. **项目级配置** 为了适配具体的前后置摄像头型号,还需要编辑项目的全局配置文件 `ProjectConfig.mk` 来指明主次摄像头的具体类型及其关联的 kernel driver 名称[^3]: ```makefile CUSTOM_HAL_IMGSENSOR=sp5507_mipi_raw CUSTOM_HAL_MAIN_IMGSENSOR=sp5507_mipi_raw # 后摄像头 CUSTOM_HAL_SUB_IMGSENSOR=sp2509_mipi_raw # 前摄像头 CUSTOM_KERNEL_IMGSENSOR=sp5507_mipi_raw CUSTOM_KERNEL_MAIN_IMGSENSOR=sp5507_mipi_raw # 后摄像头 CUSTOM_KERNEL_SUB_IMGSENSOR=sp2509_mipi_raw # 前摄像头 ``` 以上设定明确了不同场景下的默认传感器选型逻辑,并同步告知编译工具链哪些 kernel modules 应当参与构建过程[^4]. #### 4. **测试验证流程** 完成上述步骤之后,建议执行全面的功能性和稳定性测试来确认整个迁移工作的有效性。这可能涉及到静态图片质量评估、动态视频录制性能分析等多个维度考量。 --- ### 示例代码片段展示 下面给出一段简单的脚本用来检查当前系统是否加载了预期中的 imgsensor module: ```python import os def check_loaded_modules(module_name): with open('/proc/modules', 'r') as f: content = f.read() if module_name in content: return True return False if __name__ == "__main__": main_sensor = "sp5507_mipi_raw" sub_sensor = "sp2509_mipi_raw" result_main = check_loaded_modules(main_sensor) result_sub = check_loaded_modules(sub_sensor) print(f"Main Sensor Loaded: {result_main}") print(f"Sub Sensor Loaded: {result_sub}") ``` 该 Python 脚本能帮助快速诊断是否存在未正常挂载的情况。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值