说明:使用龙讯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_IsiCheckSensorConnec
tionIss、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数据 如果其他表示识别异常。
原作者:空~。