【Camera专题】qcom-相机停止运行总结

问题: [通过霍尔传感器]频繁打开关闭相机,出现一次相机停止运行

crash log

05-28 11:27:36.363 22431 22431 E AndroidRuntime: java.lang.RuntimeException: Fail to connect to camera service
05-28 11:27:36.363 22431 22431 E AndroidRuntime: 	at android.hardware.Camera.<init>(Camera.java:587)
05-28 11:27:36.363 22431 22431 E AndroidRuntime: 	at android.hardware.Camera.open(Camera.java:412)
05-28 11:27:36.363 22431 22431 E AndroidRuntime: 	at com.xtc.camera.app.widget.cameraview.core.Camera1.onStart(Camera1.java:255)
05-28 11:27:36.363 22431 22431 E AndroidRuntime: 	at com.xtc.camera.app.widget.cameraview.core.CameraController$2.run(CameraController.java:201)
05-28 11:27:36.363 22431 22431 E AndroidRuntime: 	at android.os.Handler.handleCallback(Handler.java:751)
05-28 11:27:36.363 22431 22431 E AndroidRuntime: 	at android.os.Handler.dispatchMessage(Handler.java:95)
05-28 11:27:36.363 22431 22431 E AndroidRuntime: 	at android.os.Looper.loop(Looper.java:154)
05-28 11:27:36.363 22431 22431 E AndroidRuntime: 	at android.os.HandlerThread.run(HandlerThread.java:61)

main log
报错原因:130 VIDIOC_MSM_CSID_IO_CFG failed Connection timed out
msm_post_event: Timed out

05-28 11:27:25.779  2944  2944 I input_method: 发送asr.stop事件
05-28 11:27:25.780   411 22688 D mm-camera: c2d_module_start_session:350, info: starting session 2
05-28 11:27:25.780   411 22689 D mm-camera: mct_pipeline_start_session_thread thread_id is 22689
05-28 11:27:25.780   411 22689 E mm-camera-img: module_imglib_start_session:1452 ###Img_Loglevel 0
05-28 11:27:25.785   411 22687 E mm-camera-CORE: af_init: updated HAF func table
05-28 11:27:25.786   411 22687 D mm-camera: gyro_port_init , Enter 
05-28 11:27:25.786   411 22687 D mm-camera: gyro_port_init , EXIT 
05-28 11:27:25.794   411 22691 D mm-camera: c2d_thread_func:45: c2d_thread entering the polling loop... thread_id is 22691
05-28 11:27:25.797   411 22688 D mm-camera: c2d_module_start_session:428, info: session 2 started.

05-28 11:27:25.935   411 22679 E mm-camera-sensor: csid_open:130 VIDIOC_MSM_CSID_IO_CFG failed Connection timed out
05-28 11:27:25.935   411 22679 E mm-camera-sensor: module_sensor_init_session:499 failed rc -1
05-28 11:27:25.935   411 22679 E mm-camera-sensor: eeprom_close:1114 Enter
05-28 11:27:25.935   411 22679 E mm-camera-sensor: eeprom_close:1129 Exit
05-28 11:27:25.935   411 22679 E mm-camera-sensor: sensor_close:3631 VIDIOC_MSM_SENSOR_CFG failed
05-28 11:27:25.936   411 22679 E mm-camera-sensor: module_sensor_init_session:704 failed
05-28 11:27:25.936   411 22679 E mm-camera-sensor: module_sensor_start_session:814 failed
05-28 11:27:25.936   411 22679 E mm-camera-sensor: module_sensor_start_session:828 failed

kernel log

05-28 11:27:25.873368 <3>[46285.965956] wait_for_completion in msm_csid_reset fail rc = 0
05-28 11:27:25.873374 <3>[46285.965962] msm_csid_init:584 msm_csid_reset failed
·
·
·
05-28 11:27:35.703455 <3>[46295.796043] msm_post_event: Timed out
05-28 11:27:35.706273 <3>[46295.798861] Evt_type=8002000 Evt_id=1 Evt_cmd=0
05-28 11:27:35.710640 <3>[46295.803228] Evt_session_id=2 Evt_stream_id=0 Evt_arg=-1
05-28 11:27:35.716013 <3>[46295.808601] camera_v4l2_open : posting of NEW_SESSION event failed
05-28 11:27:35.722169 <3>[46295.814757] camera_v4l2_open : Line 605 rc -110

报错根源:

static int msm_csid_reset(struct csid_device *csid_dev)
{
    
    
    int32_t rc = 0; 
    //写寄存器
    msm_camera_io_w(csid_dev->ctrl_reg->csid_reg.csid_rst_stb_all,
        csid_dev->base +
        csid_dev->ctrl_reg->csid_reg.csid_rst_cmd_addr);
    //等待信号量
    rc = wait_for_completion_timeout(&csid_dev->reset_complete,
        CSID_TIMEOUT);
    if (rc <= 0) {
    
     
        pr_err("wait_for_completion in msm_csid_reset fail rc = %d\n",
            rc); 
        if (rc == 0)
            rc = -ETIMEDOUT;
    }    
    return rc;
}
这里
#define CSID_TIMEOUT msecs_to_jiffies(100)

问题在于连接超时超时错误。
解决方案:
#define CSID_TIMEOUT msecs_to_jiffies(100)
改成
#define CSID_TIMEOUT msecs_to_jiffies(500)

Stay hungry,Stay foolish!

猜你喜欢

转载自blog.csdn.net/justXiaoSha/article/details/100508691
今日推荐