项目中二供前摄录像卡死

xx项目tuning同事在调试过程中发现了二供camera前摄不能录像,一点击切换到录像就卡死。此问题是二供点亮一段时间后发现的,并且只有二供camera报除了这个问题,故初步判断怀疑是近期driver层的修改影响到了录像功能。 分析过程: 1.通过排查出问题daily版本日期的涉及二供的提交,二供前摄去坏点功能的提交引起了此问题,问题是通过APP层的修改默认video preview size这笔提交暴露出来的 2.排查log发现kernel log有很多ISP的irq error,说明sensor吐数据出现问题,此时判断问题原因是驱动导致的,log如下: [ 132.910661] [<1>][0, swapper/1]CAM_ERR: CAM-ISP: cam_tfe_irq_err_top_half: 758 Encountered Error: tfe:2: Irq_status0=0x10000 status2=0x0 [ 132.910661] [<1>][0, swapper/1]CAM_ERR: CAM-ISP: cam_tfe_irq_err_top_half: 758 Encountered Error: tfe:2: Irq_status0=0x10000 status2=0x0 [ 132.910661] [<1>][0, swapper/1]CAM_ERR: CAM-ISP: cam_tfe_irq_err_top_half: 758 Encountered Error: tfe:2: Irq_status0=0x10000 status2=0x0 [ 132.910672] [<1>][0, swapper/1]CAM_ERR: CAM-ISP: cam_tfe_irq_err_top_half: 761 Encountered Error: tfe:2:BUS Irq_status0=0x0 [ 132.910672] [<1>][0, swapper/1]CAM_ERR: CAM-ISP: cam_tfe_irq_err_top_half: 761 Encountered Error: tfe:2:BUS Irq_status0=0x0 [ 132.910672] [<1>][0, swapper/1]CAM_ERR: CAM-ISP: cam_tfe_irq_err_top_half: 761 Encountered Error: tfe:2:BUS Irq_status0=0x0 [ 132.910749] [<1>][0, swapper/1]CAM_INFO: CAM-ISP: cam_tfe_log_error_irq_status: 318 current monotonic time stamp seconds 132:910728 [ 132.910749] [<1>][0, swapper/1]CAM_INFO: CAM-ISP: cam_tfe_log_error_irq_status: 318 current monotonic time stamp seconds 132:910728 [ 132.910749] [<1>][0, swapper/1]CAM_INFO: CAM-ISP: cam_tfe_log_error_irq_status: 318 current monotonic time stamp seconds 132:910728 [ 132.910769] [<1>][0, swapper/1]CAM_INFO: CAM-ISP: cam_tfe_log_error_irq_status: 328 ERROR time 132:910663 SOF 132:893826 EPOCH 0:0 EOF 0:0 [ 132.910769] [<1>][0, swapper/1]CAM_INFO: CAM-ISP: cam_tfe_log_error_irq_status: 328 ERROR time 132:910663 SOF 132:893826 EPOCH 0:0 EOF 0:0 [ 132.910769] [<1>][0, swapper/1]CAM_INFO: CAM-ISP: cam_tfe_log_error_irq_status: 328 ERROR time 132:910663 SOF 132:893826 EPOCH 0:0 EOF 0:0

3.回退APP的这笔提交二供前摄就可以录像,抓log对比回退前后的logcat log,可以看到两个版本sensor走的resolution是不一样的,那出问题的是resolution 1,也就是720P分辨率的时候 4.咨询FAE发现是OTP去坏点功能在写sensor寄存器时写的顺序弄错了影响到sensor config stream的设置导致sensor吐数据失败,config_stream时需要写把sensor的fe寄存器写值0x01,而去坏点功能加在config_stream之后,刚好这个功能又需要把fe寄存器写值0x02,所以就导致在720p分辨率配置下执行config_stream之后fe寄存器的值发生了改变。 解决方法: 将OTP去坏点功能放在init sensor之后config_stream之前,这样就不会影响config_stream操作对sensor寄存器的设置了。

经验分享 程序员 微信小程序 职场和发展