camera调试:RK3588 apk打开不出图如何排查?

当遇到驱动已实现,I2C通信正常但打开相机应用无图像时,可以从sensor驱动注册、拓扑结构、驱动抓图功能、camera服务注册、IQ文件有效性以及cameraHAL和AIQ报错等方面进行排查。这包括检查sensor是否正常注册,媒体控制器拓扑是否正确,验证驱动能否抓RAW数据,确认camera服务是否注册设备,以及IQ文件是否匹配等步骤。
摘要由CSDN通过智能技术生成

这篇文章主要介绍一下,驱动已经实现,i2c已经通信正常且驱动成功注册,但是apk打开不出图应该如何排查。

很多同学调试camera的时候,经常会遇到,驱动按照原厂给的序列配置了,但是打开apk不出图或者apk直接闪退,下面介绍一下这类问题主要的排查方向。

(1)确认sensor驱动是否正常注册

查看log,类似如下,sensor check ID正常之后就会注册成V4L2子设备,log会打印连接到对应的DPHY上面。

[    2.441640][    T1] gc8034 4-0037: driver version: 00.01.09
[    2.441689][    T1] gc8034 4-0037: Failed to get power-gpios, maybe no use
[    2.441794][    T1] gc8034 4-0037: supply dovdd not found, using dummy regulator
[    2.441902][    T1] gc8034 4-0037: supply dvdd not found, using dummy regulator
[    2.441946][    T1] gc8034 4-0037: supply avdd not found, using dummy regulator
[    2.441985][    T1] gc8034 4-0037: lane_num(2)  pixel_rate(320400000)
[    2.441998][    T1] gc8034 4-0037: could not get default pinstate
[    2.442006][    T1] gc8034 4-0037: could not get sleep pinstate
[    2.448076][    T1] gc8034 4-0037: detected gc8044 sensor
[    2.448156][    T1] rockchip-csi2-dphy csi2-dphy1: dphy1 matches m00_b_gc8034 4-0037:bus type 5
[    2.448806][    T1] rkcif-mipi-lvds: Async subdev notifier completed
[    2.449111][  T144] rkisp-vir0: Async subdev notifier completed

sensor注册失败,大多数原因都是check ID失败,也就是i2c不通,可以看上一篇文章进行排查:

(1条消息) camera调试:i2c不通如何排查?_人生苦短,我想躺平的博客-CSDN博客

(2)查看拓扑是否正常

查看pipeline的命令如下:

media-ctl -p -d /dev/mediaX   X = 0..1..2..3...

在rk3588的平台上,正常会有两个链路,分别如下:

sensor -> csi_dphy -> mipi_csi2 -> rkcif_mipi_lvds
rkcif_mipi_lvds_stdif -> rkisp_vir

可使用上述命令查看pipeline链路是否完整。

(3)确认驱动是否可以抓图

使用V4L2工具抓图确认驱动是否正常,RAWsensor可以从RKCIF的节点抓RAW数据:

设置非紧凑

echo 0 > /sys/devices/platform/rkcif_mipi_lvds/compact_test

抓raw图

v4l2-ctl -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat='BG10' --stream-mmap=3 --stream-skip=20 --stream-to=/data/1080p60.raw --stream-count=5 --stream-poll

抓数据流,不保存图,仅刷出帧率:

v4l2-ctl --verbose -d /dev/video0 --set-fmt-video=width=1920,height=1080,pixelformat='NV12' --stream-mmap=4 --set-selection=target=crop,flags=0,top=0,left=0,width=1920,height=1080

如果可以抓到数据流,或者可以抓到图像的话,可以从isp 节点的mainpath抓一张NV12的图像,使用看图软件确认图像是否正常,可以确认驱动是否正常出图

抓不到图,下面分几种情况:

①命令敲完直接报错(no such devices/invalid param)

命令敲完直接停止报错,检查命令是否正确。

可能还会出现no such devices之类的报错,大概率是由于链路没有enabled的导致的,正常开机之后pipeline是enabled的,如果打开了apk,pipeline有可能会被清空,建议直接重启之后不打开apk,直接抓数据。命令配置pipeline参考:

V4L2常用调试命令_人生苦短,我想躺平的博客-CSDN博客_v4l2调试

②抓数据没有,串口也没有报错,抓图select timeout

这种情况可能性一般有以下:

  • 接口错误,RK3588有多个MIPI接口,dts配置的接口和实际硬件的连接对不上
  • 硬件错误,硬件的连接性错了
  • sensor没输出
  • 其他主控的问题

上述的问题,比较常见的是dts配置错误和sensor没有信号输出,可以直接测量MIPI信号来确认,后面的文章会介绍主控端如何通过寄存器排查信号的问题。

③出现MIPI 相关报错

出现MIPI相关的报错,比较常见的是出现crc的报错刷屏:

[ 2266.859853][    C0] mipi2-csi2 ERR1:0x1000000 (crc,vc: 0) 
[ 2266.859862][    C0] mipi2-csi2 ERR1:0x1000000 (crc,vc: 0) 
[ 2266.859869][    C0] mipi2-csi2 ERR2:0x100 (ecc,vc: 0) 
[ 2266.859920][    C0] mipi2-csi2 ERR1:0x1000000 (crc,vc: 0) 
[ 2266.859930][    C0] mipi2-csi2 ERR1:0x10000000 (ecc2)
[ 2266.859962][    C0] mipi2-csi2 ERR1:0x1000000 (crc,vc: 0) 
[ 2266.859970][    C0] mipi2-csi2 ERR2:0x100 (ecc,vc: 0) 
[ 2266.860026][    C0] mipi2-csi2 ERR1:0x1000000 (crc,vc: 0) 
[ 2266.860033][    C0] mipi2-csi2 ERR1:0x10000000 (ecc2)
[ 2266.860093][    C0] mipi2-csi2 ERR1:0x1000000 (crc,vc: 0) 
[ 2266.860101][    C0] mipi2-csi2 ERR1:0x1000000 (crc,vc: 0) 
[ 2266.860108][    C0] mipi2-csi2 ERR2:0x100 (ecc,vc: 0) 
[ 2266.860160][    C0] mipi2-csi2 ERR1:0x1000000 (crc,vc: 0) 
[ 2266.860167][    C0] mipi2-csi2 ERR1:0x1000000 (crc,vc: 0)

出现上述mipi相关的报错,crc/ecc等报错,本质上都是与phy层的mipi信号相关,可能原因如下:

  • 驱动配置的MIPI时钟与sensor输出的MIPI时钟对应不上
  • MIPI时序错误,例如SOT的时序不符合MIPI的SPEC
  • MIPI信号质量不佳导致的报错

示波器测量可以确认sensor输出的MIPI时钟大小,驱动需要与其对应,MIPI信号质量的问题,可以通过将驱动的xvclk降低到12M/6M,如果降低后没出现MIPI的报错,那么需要排查硬件的走线等等。MIPI时序的问题,建议测量MIPI信号,看是否符合spec,后面再写文章来介绍这部分。

④vicap控制器的其他报错

包括PICK_SIZE_ERROR报错、iommu的报错等,需要确认一下sensor输出的图像格式是否正确,驱动配置的是否正确,抓图的大小与图像格式是否正确等等。

(4)确认camera服务是否成功注册设备

使用如下命令确认camera设备是否注册上:

dumpsys media.camera

如果发现设备没有注册上,重点排查camera3_profiles.xml文件配置是否正确,重点是moduleID 和name字段的检查。

(5)确认IQ效果文件的有效性

JSON文件在设备上的/vendor/etc/camera/rkisp2/,命名规则如下:

sensor_module-name_module-lens-name.json

确认文件命令是否正确,已经效果文件是否有效,需要跟dts的配置对应。

这个问题也可以先使用SOC运行看是否正常,SOC模式不会跑3A算法,也就不会用到IQ文件。

(6)cameraHAL报错

cameraHAL的相关报错导致,可以搜索logcat的关键词进行排查定位问题:

E RkCamera

(7)camera_engine_rkaiq相关报错

AIQ的相关报错,建议给原厂排查。

  • 9
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人生苦短,菜的抠脚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值