海思Hi3519移植imx307

1. 驅動修改, 基於imx291的驅動(imx291_sensor_ctl.c )進行修改, 遵循imx307數據手冊修改寄存器即可。(因爲imx307與imx291型號差距不大,初始化序列可以參考imx291) 

2. 按照《sensor調試指南》修改文件,主要集中在sample_comm_vi.c , sample_comm_isp.c

  • 下面爲驅動程序分析

原文件爲sample_comm_isp.c

HI_S32 SAMPLE_COMM_ISP_Sensor_Regiter_callback(ISP_DEV IspDev, HI_U32 u32SnsId)
{
    ALG_LIB_S stAeLib;
    ALG_LIB_S stAwbLib;
    const ISP_SNS_OBJ_S* pstSnsObj;
    HI_S32    s32Ret = -1;

    if (MAX_SENSOR_NUM <= u32SnsId)
    {
        SAMPLE_PRT("invalid sensor id: %d\n", u32SnsId);
        return HI_FAILURE;
    }

    pstSnsObj = SAMPLE_COMM_ISP_GetSnsObj(u32SnsId);

    if (HI_NULL == pstSnsObj)
    {
        SAMPLE_PRT("sensor %d not exist!\n", u32SnsId);
        return HI_FAILURE;
    }

 

跳入SAMPLE_COMM_ISP_GetSnsObj,發現原來是缺少了stSnsImx307Obj;所以我在這裏添加了相應的代碼

    switch (enSnsType)
    {

        
        case SONY_IMX290_MIPI_2M_30FPS_12BIT:
        case SONY_IMX290_MIPI_2M_30FPS_12BIT_WDR2TO1:
            return &stSnsImx290Obj;
       /*添加的代碼*/
        case SONY_IMX307_MIPI_2M_30FPS_12BIT:            
            return &stSnsImx307Obj;
        ...
    }

該結構體定義在

imx290_cmos.c ; 添加stSnsImx307Obj

ISP_SNS_OBJ_S stSnsImx307Obj =
{
    .pfnRegisterCallback    = sensor_register_callback,
    .pfnUnRegisterCallback  = sensor_unregister_callback,
    .pfnStandby             = imx291_standby,
    .pfnRestart             = imx291_restart,
    .pfnMirrorFlip          = HI_NULL,
    .pfnWriteReg            = imx291_write_register,
    .pfnReadReg             = imx291_read_register,
    .pfnSetBusInfo          = imx291_set_bus_info,
    .pfnSetInit             = sensor_set_init
};

定義在.c文件所有肯定是外部引用,extern , 位置

hi_sns_ctrl.h ; 同理添加 extern ISP_SNS_OBJ_S stSnsImx307Obj

extern ISP_SNS_OBJ_S stSnsMn34220Obj;
extern ISP_SNS_OBJ_S stSnsImx377Obj;
extern ISP_SNS_OBJ_S stSnsImx299Obj;
extern ISP_SNS_OBJ_S stSnsImx477Obj;
extern ISP_SNS_OBJ_S stSnsImx299SlvsObj;
extern ISP_SNS_OBJ_S stSnsImx290Obj;
extern ISP_SNS_OBJ_S stSnsImx327Obj;
extern ISP_SNS_OBJ_S stSnsImx334Obj;
extern ISP_SNS_OBJ_S stSnsOV2718Obj;
extern ISP_SNS_OBJ_S stSnsCmv50000Obj;
extern ISP_SNS_OBJ_S stSnsImx277SlvsObj;
extern ISP_SNS_OBJ_S stSnsImx117Obj;
extern ISP_SNS_OBJ_S stSnsImx290SlaveObj;
extern ISP_SNS_OBJ_S stSnsImx334SlaveObj;
extern ISP_SNS_OBJ_S stSnsImx226Obj;
extern ISP_SNS_OBJ_S stSnsImx335Obj;
extern ISP_SNS_OBJ_S stSnsImx458Obj;
/*添加的代碼*/
extern ISP_SNS_OBJ_S stSnsImx307Obj;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章