SDM845平台camera probe流程分析
"这是关于SDM845平台在开机启动时camera模块的probe流程分析,主要涉及sensor、actuator、ois、flash和eeprom等组件的初始化与探测过程。通过logcat日志来追踪和理解整个流程。" 在Android系统中,camera服务是核心组件之一,它负责管理和控制设备上的相机硬件。在SDM845平台上,camera probe流程是设备启动时的关键步骤,确保相机硬件能够正确地被操作系统识别和驱动。这个过程中,涉及到多个关键组件的初始化,包括sensor(传感器)、actuator(马达)、ois(光学防抖)、flash(闪光灯)以及eeprom(电可擦可编程只读存储器)。 首先,sensor是摄像头的核心部件,它捕捉光线并将其转化为电信号,然后由图像处理器处理。在启动过程中,系统会探测到sensor的存在,并进行相应的配置,如分辨率、帧率等,以确保其能正常工作。 接下来是actuator,它主要用于调整镜头的位置,实现自动对焦功能。在probe阶段,actuator驱动会被加载,系统会测试其移动范围和响应速度,确保对焦机制的正常运行。 ois(Optical Image Stabilization)光学防抖技术用于减少因手抖或移动造成的图像模糊。在启动时,系统会检测ois模块,校准其状态,并进行必要的补偿设置,以提供更稳定的拍照体验。 flash组件在拍摄暗光环境照片时起着重要作用。在probe流程中,系统会检测闪光灯是否可用,设置其亮度级别,并确保在需要时可以快速启动。 最后,eeprom是存储相机硬件配置数据的非易失性存储器,如白平衡设置、曝光参数等。在初始化阶段,系统会读取eeprom中的数据,应用到当前的相机配置中。 在提供的logcat日志片段中,可以看到一些关键事件,如camera provider的死亡和设备状态变化。例如,"Camx"可能指的是相机服务,"chiusecase"可能与相机关闭或释放相关。日志显示cameraId为0和1的设备状态变为0,这通常表示设备不可用或已关闭。同时,torch(闪光灯)的状态也发生了变化,这可能是由于相机服务的异常导致的。而“removeClientLocked”警告提示无法移除客户端,可能意味着在相机服务关闭时没有找到对应相机ID的客户端。 logcat Probe流程的分析有助于理解和调试camera服务在启动时遇到的问题,通过对日志的深入解析,开发者可以定位并修复可能导致相机功能异常的故障点。对于SDM845平台上的camera服务,理解这一流程至关重要,因为它直接影响到用户对设备相机功能的使用体验。
mi@ljc:~/ljc/6-Log/4-E5/2-E5-camera-Test$
mi@ljc:~/ljc/6-Log/4-E5/2-E5-camera-Test$ cat logcat_probe.txt | grep -Ei "camx|chiusecase"
10-29 17:02:10.299 927 1058 I CameraProviderManager: Camera provider 'legacy/0' has died; removing it
10-29 17:02:10.299 927 1058 I CameraService: onDeviceStatusChanged: Status changed for cameraId=0, newStatus=0
10-29 17:02:10.299 927 1058 E CameraService: onTorchStatusChangedLocked: Torch status changed for cameraId=0, newStatus=0
10-29 17:02:10.300 927 1058 W CameraService: removeClientLocked: Could not evict client, no client for camera ID 0
10-29 17:02:10.300 927 1058 I CameraService: onDeviceStatusChanged: Status changed for cameraId=1, newStatus=0
10-29 17:02:10.300 927 1058 E CameraService: onTorchStatusChangedLocked: Torch status changed for cameraId=1, newStatus=0
10-29 17:02:10.300 927 1058 W CameraService: removeClientLocked: Could not evict client, no client for camera ID 1
10-29 17:02:10.300 927 1058 I CameraService: onDeviceStatusChanged: Status changed for cameraId=100, newStatus=0
10-29 17:02:10.300 1269 1623 D SlideCameraMonitor: onCameraUnavailable:0
10-29 17:02:10.300 927 1058 E CameraService: onTorchStatusChangedLocked: Torch status changed for cameraId=100, newStatus=0
10-29 17:02:10.301 1269 1623 D SlideCameraMonitor: onCameraUnavailable:1
10-29 17:02:10.301 927 1058 W CameraService: removeClientLocked: Could not evict client, no client for camera ID 100
10-29 17:02:10.301 927 1058 I CameraService: onDeviceStatusChanged: Status changed for cameraId=101, newStatus=0
10-29 17:02:10.301 927 1058 E CameraService: onTorchStatusChangedLocked: Torch status changed for cameraId=101, newStatus=0
10-29 17:02:10.301 927 1058 W CameraService: removeClientLocked: Could not evict client, no client for camera ID 101
10-29 17:02:10.301 927 1058 I CameraService: onDeviceStatusChanged: Status changed for cameraId=20, newStatus=0
10-29 17:02:10.301 927 1058 E CameraService: onTorchStatusChangedLocked: Torch status changed for cameraId=20, newStatus=0
10-29 17:02:10.302 927 1058 W CameraService: removeClientLocked: Could not evict client, no client for camera ID 20
10-29 17:02:10.302 927 1058 I CameraService: onDeviceStatusChanged: Status changed for cameraId=40, newStatus=0
10-29 17:02:10.302 1269 1623 D SlideCameraMonitor: onCameraUnavailable:20
10-29 17:02:10.302 927 1058 E CameraService: onTorchStatusChangedLocked: Torch status changed for cameraId=40, newStatus=0
10-29 17:02:10.302 927 1058 W CameraService: removeClientLocked: Could not evict client, no client for camera ID 40
10-29 17:02:10.302 927 1058 I CameraService: onDeviceStatusChanged: Status changed for cameraId=60, newStatus=0
10-29 17:02:10.302 1269 1623 D SlideCameraMonitor: onCameraUnavailable:40
10-29 17:02:10.302 927 1058 E CameraService: onTorchStatusChangedLocked: Torch status changed for cameraId=60, newStatus=0
10-29 17:02:10.303 927 1058 W CameraService: removeClientLocked: Could not evict client, no client for camera ID 60
10-29 17:02:10.303 927 1058 I CameraService: onDeviceStatusChanged: Status changed for cameraId=61, newStatus=0
10-29 17:02:10.303 927 1058 E CameraService: onTorchStatusChangedLocked: Torch status changed for cameraId=61, newStatus=0
10-29 17:02:10.303 927 1058 W CameraService: removeClientLocked: Could not evict client, no client for camera ID 61
10-29 17:02:10.303 927 1058 I CameraService: onDeviceStatusChanged: Status changed for cameraId=80, newStatus=0
10-29 17:02:10.303 1269 1623 D SlideCameraMonitor: onCameraUnavailable:61
10-29 17:02:10.303 927 1058 E CameraService: onTorchStatusChangedLocked: Torch status changed for cameraId=80, newStatus=0
10-29 17:02:10.304 927 1058 W CameraService: removeClientLocked: Could not evict client, no client for camera ID 80
10-29 17:02:10.304 927 1058 I CameraService: onDeviceStatusChanged: Status changed for cameraId=81, newStatus=0
10-29 17:02:10.304 1269 1623 D SlideCameraMonitor: onCameraUnavailable:80
10-29 17:02:10.304 927 1058 E CameraService: onTorchStatusChangedLocked: Torch status changed for cameraId=81, newStatus=0
10-29 17:02:10.304 927 1058 W CameraService: removeClientLocked: Could not evict client, no client for camera ID 81
10-29 17:02:10.304 1269 1623 D SlideCameraMonitor: onCameraUnavailable:81
10-29 17:02:10.353 5838 5838 I android.hardware.camera.provider@2.4-service: Camera provider Service is starting.
10-29 17:02:10.389 5838 5838 D CamX : [DEBUG][HAL ] camxhal3module.cpp:374 HAL3Module() ***************************************************
10-29 17:02:10.389 5838 5838 D CamX : [DEBUG][HAL ] camxhal3module.cpp:375 HAL3Module() SHA1: 1a350eb73c84f0f1fbc3138060dd9248ebb22eef
10-29 17:02:10.389 5838 5838 D CamX : [DEBUG][HAL ] camxhal3module.cpp:376 HAL3Module() COMMITID: I4d1e56e546fe108c107cb6dc486e0e4e39a7ead6
10-29 17:02:10.389 5838 5838 D CamX : [DEBUG][HAL ] camxhal3module.cpp:377 HAL3Module() BUILD TS: 10/17/2018 10:16:45
10-29 17:02:10.389 5838 5838 D CamX : [DEBUG][HAL ] camxhal3module.cpp:378 HAL3Module() ***************************************************
10-29 17:02:10.395 5838 5838 I CamX : [ INFO][CSL ] camxcslhwinternal.cpp:2636 CSLHwInternalDefaultOpen() Open Success for Device /dev/video1
10-29 17:02:10.396 5838 5838 I CamX : [ INFO][CSL ] camxcslhwinternal.cpp:1451 CSLHwAddKMDPrivateDeviceToInstance() CSL Device name =/dev/video1
10-29 17:02:10.396 5838 5838 I CamX : [ INFO][CSL ] camxcslhwinternal.cpp:2636 CSLHwInternalDefaultOpen() Open Success for Device /dev/v4l-subdev0
10-29 17:02:10.396 5838 5838 I CamX : [ INFO][CSL ] camxcslhwinternal.cpp:1508 CSLHwAddKMDPrivateDeviceToInstance() CSL Device name =/dev/v4l-subdev0
10-29 17:02:10.397 5838 5838 I CamX : [ INFO][CSL ] camxcslhwinternal.cpp:2636 CSLHwInternalDefaultOpen() Open Success for Device /sys/devices/soc0/soc_id
10-29 17:02:10.397 5838 5838 I CamX : [ INFO][CSL ] camxcslhwinternal.cpp:2636 CSLHwInternalDefaultOpen() Open Success for Device /dev/v4l-subdev1
10-29 17:02:10.397 5838 5838 I CamX : [ INFO][CSL ] camxcslhwinternal.cpp:1640 CSLHwAddKMDDeviceToInstance() CSL Device name =/dev/v4l-subdev1
10-29 17:02:10.397 5838 5838 W CamX : [ WARN][CSL ] camxcslhwinternal.cpp:122 CSLHwKmdGroupidToCslDevicetype() Got a invalid groupId=65546
10-29 17:02:10.397 5838 5838 I CamX : [ INFO][CSL ] camxcslhwinternal.cpp:2636 CSLHwInternalDefaultOpen() Open Success for Device /dev/v4l-subdev3
10-29 17:02:10.397 5838 5838 I CamX : [ INFO][CSL ] camxcslhwinternal.cpp:1640 CSLHwAddKMDDeviceToInstance() CSL Device name =/dev/v4l-subdev3
10-29 17:02:10.397 5838 5838 I CamX : [ INFO][CSL ] camxcslhwinternal.cpp:2636 CSLHwInternalDefaultOpen() Open Success for Device /dev/v4l-subdev4
10-29 17:02:10.397 5838 5838 I CamX : [ INFO][CSL ] camxcslhwinternal.cpp:1640 CSLHwAddKMDDeviceToInstance() CSL Device name =/dev/v4l-subdev4
剩余12页未读,继续阅读
- 粉丝: 60
- 资源: 4
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++标准程序库:权威指南
- Java解惑:奇数判断误区与改进方法
- C++编程必读:20种设计模式详解与实战
- LM3S8962微控制器数据手册
- 51单片机C语言实战教程:从入门到精通
- Spring3.0权威指南:JavaEE6实战
- Win32多线程程序设计详解
- Lucene2.9.1开发全攻略:从环境配置到索引创建
- 内存虚拟硬盘技术:提升电脑速度的秘密武器
- Java操作数据库:保存与显示图片到数据库及页面
- ISO14001:2004环境管理体系要求详解
- ShopExV4.8二次开发详解
- 企业形象与产品推广一站式网站建设技术方案揭秘
- Shopex二次开发:触发器与控制器重定向技术详解
- FPGA开发实战指南:创新设计与进阶技巧
- ShopExV4.8二次开发入门:解决升级问题与功能扩展