rk3288 android6.0平台bt1120信号转mipi调试

说明:使用龙讯LT8918芯片将bt1120信号转换为mipi信号输入到rk3288,不需要i2c通信.

注意:如果能正常打开任意一款mipi camera,那么kernel的配置不需要改动,否则请先找一款市面上常用的mipi摄像头调试,然后再进行后续工作。如果kernel已配置好,那么整个调试过程只需要修改hardware。

开始调试:

        因为传输的是mipi yuv信号,所以我们参照OV2685_MIPI_YUV驱动去做。该驱动所在位置/hardware/rockchip/camera/SiliconImage/isi/drv/OV2685_MIPI_YUV。

一、不用i2c,那么屏蔽掉i2c通信的地方

    1./hardware/rockchip/camera/CameraHal/CameraHal_board_xml_parse.cpp

        int camera_board_profiles::RegisterSensorDevice(rk_cam_total_info* pCamInfo)方法中

        err = ioctl(camsys_fd, CAMSYS_I2CWR, &i2cinfo);修改为err = 0;

    2./hardware/rockchip/camera/SiliconImage/isi/drv/OV2685_MIPI_YUV/OV2685_PARREL.c 中

        OV2685_IsiCheckSensorConnectionIss、OV2685_IsiRegReadIss、OV2685_IsiRegWriteIss这三个方法直接return 0;

二、定义自己的分辨率等参数1920x1080, 30fps, 4lane, mipi freq:200M

        1.在OV2685_tables.c文件中先定义自己的分辨率,不需要操作寄存器,给个定义就行:

            const IsiRegDescription_t OV2685_g_1920x1080[] =
            {
                {0x0000 ,0x00,"eTableEnd",eTableEnd}//为啥只有这一行,请看其他分辨率是怎么定义的!

            };

        2.在OV2685_PARREL.c中设置分辨率

            extern const IsiRegDescription_t OV2685_g_1920x1080[];//引用上面的定义

            static uint16_t g_suppoted_mipi_lanenum_type = SUPPORT_MIPI_FOUR_LANE;
            #define DEFAULT_NUM_LANES SUPPORT_MIPI_FOUR_LANE//定义lane数

            OV2685_IsiGetCapsIssInternal该函数中选择分辨率:

                    if(mipi_lanes == SUPPORT_MIPI_FOUR_LANE){            
                        switch (pIsiSensorCaps->Index) 
                        {
                            case 0:
                                        {
                                                pIsiSensorCaps->Resolution = ISI_RES_TV1080P30;//我们的分辨率
                                                break;
                                        }
                            default:
                                        {
                                                result = RET_OUTOFRANGE;//这个值不要改
                                                goto end;
                                        }
                            }

                        }

            3.OV2685_SetupOutputWindow中定义mipi freq并设置对应分辨率

                    pOV2685Ctx->IsiSensorMipiInfo.ulMipiFreq = 200;//mipi freq

                    switch ( pConfig->Resolution ){

                            case ISI_RES_TV1080P30:
                            {
                            if((result = IsiRegDefaultsApply((IsiSensorHandle_t)pOV2685Ctx,OV2685_g_1920x1080)) !=                                             RET_SUCCESS){
                                                TRACE( OV2685_ERROR, "%s: failed to set  ISI_RES_TV1080P30 \n", __FUNCTION__ );
                                            }else{
                                                TRACE( OV2685_INFO, "%s: success to set  ISI_RES_TV1080P30  \n", __FUNCTION__ );
                                            }
                                        break;

                              }

                        }

三、配置cam_board.xml

        主要强调两个地方,一是,power使能脚配置。二是(lane数,phyIndex:0或1,根据硬件配置

只要硬件没问题,基本上按照上述修改配置,使用系统自带camera apk就可以打开了,注意打开的是/dev/camsys_marvin这个节点。

检测3288是否有接收到mipi信号,可在adb或串口中输入io -4 -l 0x100 0xff911c00

查看ff911c10: 00000000 00000000 00000000 0000001e这一行,0000002b表示isp识别到为raw ,0000001e 表示识别到yuv数据 如果其他表示识别异常。
全部调试文档可以参照附件:源码下载

你可能感兴趣的:(rk3288)