赞
踩
问题:
3568平台:打开原生相机,持续十分钟到二十分钟左右,会出现以下log报错,此时isp失效;
- Can not get isp params buffer
- isp no free cp buffer
解决方法:
修改下isp频率试试,都设置为600M kernel\drivers\media\platform\rockchip\isp\hw.c
按照1的修改还是不行,通过cat /proc/rkisp*查看,可以看到v-blank的时间是376us,而我们规定vb的时间不少于1ms的,所以通过修改vts 增大vb的时间,就能够解决isp no free cp buffer的问题!
按照MIPI Spec定义,每个虚拟通道传输数据时,每图像行数据是采用一个完整的MIPI长包来进行传输,即每一个mipi长包就是一图像行数据。整帧图像由若干行数据组成。MIPI短包 FS 与 FE 是用来区分帧起始和帧结尾。有时报错提示会出现 FS/FE 不匹配的问题。
rockchip-mipi-csi2: ERR1: error matching frame start with frame end
这个没有标准的答案:
有的客户sensor 是4lane的,然后抓图遇到这个问题;后面驱动和序列都改成2lane的,就没有报fs和fe不匹配的问题!
有的换个主板就解决了;
有的换寄存器序列,例如1080p的换成720p的就解决了;
有的修改下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;
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通道对应的相位不同,尝试一点点修改相位相关的寄存器。
报类似如下的错误:
rockchip-mipi-csi2: ERR1: crc errors, reg: 0x10000110, cnt:4
出现这种报错,先确认下摄像头的排线有多长,是否使用转接小板,是否做好信号屏蔽处理等
crc校验出错是信号本身就收到干扰导致出错了,跟硬件比较相关,硬件可以先排查下;示波器测量mipi信号确认一下,lane数一定要配置正确,LINK_FREQ一定要填写正确;示波器测量下mipi输出的clk是多少MHz.
有客户:实验将MIPI_CSI_RX1_AVDD_0V8电压提高到1v以上,就正常了,不出现以上的错误(1126平台)。
有客户出现crc错误,排查出来是主时钟mclk错误;尝试模组更换,排线是否接好,更多的还是查看硬件问题;
经常在调试过程遇到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拓扑没有生成;
接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;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。