camera底层调试之常见报错解析

文章列举了在调试Rockchip平台上的Sensor时遇到的几种常见错误,包括ISP无自由CP缓冲区问题、帧头帧尾不匹配、CSIFIFO溢出、CRC错误以及媒体拓扑未生成等,并详细介绍了针对这些问题的解决策略,如调整ISP频率、修改VTS参数、检查MIPI配置和硬件信号质量等。
摘要由CSDN通过智能技术生成

 调试sensor常见的报错

1. isp no free cp buffer

问题:

        3568平台:打开原生相机,持续十分钟到二十分钟左右,会出现以下log报错,此时isp失效;

Can not get isp params buffer
isp no free cp buffer

解决方法:

  1. 修改下isp频率试试,都设置为600M kernel\drivers\media\platform\rockchip\isp\hw.c

  2. 按照1的修改还是不行,通过cat /proc/rkisp*查看,可以看到v-blank的时间是376us,而我们规定vb的时间不少于1ms的,所以通过修改vts 增大vb的时间,就能够解决isp no free cp buffer的问题!

2. 帧头与帧尾不匹配的问题

        按照MIPI Spec定义,每个虚拟通道传输数据时,每图像行数据是采用一个完整的MIPI长包来进行传输,即每一个mipi长包就是一图像行数据。整帧图像由若干行数据组成。MIPI短包 FS 与 FE 是用来区分帧起始和帧结尾。有时报错提示会出现 FS/FE 不匹配的问题。

rockchip-mipi-csi2: ERR1: error matching frame start with frame end

这个没有标准的答案:

  1. 有的客户sensor 是4lane的,然后抓图遇到这个问题;后面驱动和序列都改成2lane的,就没有报fs和fe不匹配的问题!

  2. 有的换个主板就解决了;

  3. 有的换寄存器序列,例如1080p的换成720p的就解决了;

  4. 有的修改下mipi时钟为非连续模式就解决了;

3. CsiFifoOverflow

3.1 mipi接口

        rv1126平台:mipi报overflow了,尝试降一下帧率,看看是否能改善?或者看下g_mbus_config中的lane数有没有配置正确。Rv1126平台的isp以及cif,默认的都是使用isp_reserved,因此将rkcif_mmu以及rkisp_mmu关闭;

        出现 rkisp: MIPI error: overflow: 0x00010000,可以尝试着增大isp_reserved的size;如果是4k@30fps的sensor出现这个问题,那么极大概率是ddr以及isp频率的影响;可以将ddr增大到1056M,isp的频率抬升到600M;

3.2 dvp接口

        rkcif_dvp: dvp overflow err (dts中关闭rkcif_mmu试试)导致这个问题的原因是vblank较短,一帧还没接收完,下一帧就已经来了(即接收不过来),导致fifo overflow;所以解决的方法可以把vblank增加。如下计算vb的时间:

以1080p@30为例
vblank = vts_def - height = 1125 - 1080 = 45行;也就是vb的时间只有45行
那么每行的曝光时间time = 1/vts * 1/fps = 1/1125 * 1/30 = 0.029ms
所以vblank的时间是45 * 0.029 = 1.32ms  (一般vb时间大于1ms就行)

        如果转换芯片不可以设置vblank,只能试试抬频或者提高rkcif的优先级,看下能否解决该问题。若还是不行的话,找模组厂,看下像AHD转dvp的,可能不同的VC通道对应的相位不同,尝试一点点修改相位相关的寄存器。

4. crc errors

        报类似如下的错误:

rockchip-mipi-csi2: ERR1: crc errors, reg: 0x10000110, cnt:4

        出现这种报错,先确认下摄像头的排线有多长,是否使用转接小板,是否做好信号屏蔽处理等

  1. crc校验出错是信号本身就收到干扰导致出错了,跟硬件比较相关,硬件可以先排查下;示波器测量mipi信号确认一下,lane数一定要配置正确,LINK_FREQ一定要填写正确;示波器测量下mipi输出的clk是多少MHz.

  2. 有客户:实验将MIPI_CSI_RX1_AVDD_0V8电压提高到1v以上,就正常了,不出现以上的错误(1126平台)。

  3. 有客户出现crc错误,排查出来是主时钟mclk错误;尝试模组更换,排线是否接好,更多的还是查看硬件问题;

5 media拓扑未生成

        经常在调试过程遇到sensor的拓扑结构未生成,即一般情况下dmesg中会有类似如下log打印,有match成功,说明media结构有生成了。

rockchip-csi2-dphy csi2-dphy1: dphy2 matches m01_f_gc2053 2-007e:bus type 4

        当sensor check id成功后,发现拓扑结构没生成,此时可以确认基本是dts配置的问题导致的;例如在3588平台,sensor硬件上接的是dphy0,但是在dts中未将csi2_dphy0_hw打开,导致media拓扑没有生成;

6 AHD转mipi报crc或packet

        接isp链路,报错如下:

rkisp0: MIPI error: packet: 0x00100000
[   42.524559] rkisp0: MIPI error: packet: 0x00100000
[   42.524589] rkisp0: MIPI error: packet: 0x00100000
[   42.524611] rkisp0: MIPI error: packet: 0x00100000
[   42.524638] rkisp0: MIPI error: packet: 0x00100000
[   42.524677] rkisp0: MIPI error: packet: 0x00100000
[   42.524711] rkisp0: MIPI error: packet: 0x00100000

        接vicap链路,报错如下:

rockchip-mipi-csi2: ERR1: crc errors, reg: 0x10000110, cnt:4
大量crc错误

        使用tp9950转mipi,驱动参考tp2855来写的,经测量mipi clk是正确的,硬件上ahd是接2lane的,所以dts和驱动都设置为2lane的;但v4l2抓图还是报以上错误。

解决方法:

techpoint_v4l2.c中,g_mbus如下;默认是4lane的,需要将其改成V4L2_MBUS_CSI2_2_LANE。

static int techpoint_g_mbus_config(struct v4l2_subdev *sd,
				   struct v4l2_mbus_config *cfg)
{
	............
else if (techpoint->input_type == TECHPOINT_MIPI) {
		cfg->type = V4L2_MBUS_CSI2;
		cfg->flags = V4L2_MBUS_CSI2_4_LANE | V4L2_MBUS_CSI2_CHANNELS;
	}
	return 0;
}

   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值