Qcom平台 Camera 之开启调试 log

        本文是针对Android5.1、8.1、9.0版本的camera调试,log相关的配置做一个记录。如有错误,请交流指正。

调试 打开 kernel cam log

用于观察上电时序,match_id 匹配ID,CCI读写。
Camera 打开关键的 kernel log (以8953平台为例)
路径:

  kernel/msm-4.9/drivers/media/platform/msm/camera_v2/sensor/io/msm_camera_dt_util.c
  kernel/msm-4.9/drivers/media/platform/msm/camera_v2/sensor/msm_sensor.c
  kernel/msm-4.9/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_driver.c
  kernel/msm-4.9/drivers/media/platform/msm/camera_v2/sensor/msm_sensor_init.c

代码如:

  -#define CDBG(fmt, args...) pr_debug(fmt, ##args)
  +#define CDBG(fmt, args...) pr_err(fmt, ##args)  //  提高log打印等级

查看 可以使能的上层 cam module

路径:

vendor\qcom\proprietary\mm-camera\mm-camera2\includes\camera_dbg.h

代码如:

  typedef enum {
    CAM_NO_MODULE,
    CAM_MCT_MODULE,
    CAM_SENSOR_MODULE,
    CAM_IFACE_MODULE,
    CAM_ISP_MODULE,
    CAM_PPROC_MODULE,
    CAM_IMGLIB_MODULE,
    CAM_CPP_MODULE,
    CAM_HAL_MODULE,
    CAM_JPEG_MODULE,
    CAM_C2D_MODULE,
    CAM_STATS_MODULE,
    CAM_STATS_AF_MODULE,
    CAM_STATS_AEC_MODULE,
    CAM_STATS_AWB_MODULE,
    CAM_STATS_ASD_MODULE,
    CAM_STATS_AFD_MODULE,
    CAM_STATS_Q3A_MODULE,
    CAM_STATS_IS_MODULE,
    CAM_STATS_HAF_MODULE,
    CAM_STATS_CAF_SCAN_MODULE,
    CAM_SHIM_LAYER,
    CAM_LAST_MODULE
  } cam_modules_t;

查看 当前使能的上层 cam log

adb指令:
adb shell getprop | grep "camera"
adb shell getprop | find "camera" // android5.1 用 find

查看 当前使能的上层 cam log 的等级

路径:

  vendor\qcom\proprietary\mm-camera\mm-camera2\log_debug\android\camera_dbg.c

代码如:

框架定义了如下6个 log 级别, INFO 级别不可控,是一定会打印的。

 /* string representation for logging level */
  static const char *cam_dbg_level_to_str[] = {
       "",        /* CAM_GLBL_DBG_NONE  */
       "<ERROR>", /* CAM_GLBL_DBG_ERR   */
       "< WARN>", /* CAM_GLBL_DBG_WARN  */
       "< HIGH>", /* CAM_GLBL_DBG_HIGH  */
       "<  DBG>", /* CAM_GLBL_DBG_DEBUG */
       "<  LOW>", /* CAM_GLBL_DBG_LOW   */
       "< INFO>"  /* CAM_GLBL_DBG_INFO  */
    };

  /* values that persist.vendor.camera.global.debug can be set to */
  /* all camera modules need to map their internal debug levels to this range */
  typedef enum {
    CAM_GLBL_DBG_NONE  = 0,
    CAM_GLBL_DBG_ERR   = 1,
    CAM_GLBL_DBG_WARN  = 2,
    CAM_GLBL_DBG_HIGH  = 3,
    CAM_GLBL_DBG_DEBUG = 4,
    CAM_GLBL_DBG_LOW   = 5,
    CAM_GLBL_DBG_INFO  = 6
  } cam_global_debug_level_t;


调试 使能 HAL cam log


开机状态,用这些命令设置之后就生效了,重启依旧有效,刷机后设置消失

adb shell setprop persist.camera.hal.debug.mask 536870915 // Android 8.0

或者 

// HAL-3  Android9.0
adb shell setprop persist.vendor.camera.hal.debug 3

调试 抓取 cam 上层 log

这个抓log不会停,会一直抓。
adb logcat –v time –b main –b system >  log.log 

调试 设置 cam module log 

全局debug log 等级配置  

persist.camera.global.debug
 数值:0-5 // [-- 数字越小等级越高 --]
 功能: 设置不同的数值,将打印对应级别的log。

该属性是总的log级别开关。
 注意: 若子模块的log级别小于该属性设置值,则以该属性为准;

若子模块的log 级别大于该属性设置值,则以子模块设置的log级别为准。

 代码如:

adb shell setprop persist.camera.global.debug 5
或者(android5/8 和android9.0 之间的属性设置会差一个“vendor”)
adb shell setprop persist.vendor.camera.global.debug 5

调试 设置 cam module log Android8.0

  // android 8 开启 camera logcat 等级
  adb shell setprop persist.camera.sensor.debug 3
  adb shell getprop persist.camera.sensor.debug // 查看当前等级

!!! 常用的 camera debug 属性

  // 参考链接: https://blog.csdn.net/liaochaoyun/article/details/89671195
  // 可能实际代码有出入 具体请参考实际代码设置
  // 以 android 8.1 为例 参考以下路径
  // QCameraParameters.cpp  8909_APP_O\hardware\qcom\camera\QCamera2\HAL

全局debug log 属性

 1. adb shell setprop persist.vendor.camera.sensor.debug 3
 2. adb shell setprop persist.vendor.camera.global.debug 3

ISP LOG

 3. adb shell setprop persist.camera.ISP.debug.mask 3

查看 cam module log 等级定义

路径:

camera_dbg.h   vendor\qcom\proprietary\mm-camera\mm-camera2\includes

代码如:

  typedef enum {
    CAM_NO_MODULE,
    CAM_MCT_MODULE,
    CAM_SENSOR_MODULE,
    CAM_IFACE_MODULE,
    CAM_ISP_MODULE,
    CAM_PPROC_MODULE,
    CAM_IMGLIB_MODULE,
    CAM_CPP_MODULE,
    CAM_HAL_MODULE,
    CAM_JPEG_MODULE,
    CAM_C2D_MODULE,
    CAM_STATS_MODULE,
    CAM_STATS_AF_MODULE,
    CAM_STATS_AEC_MODULE,
    CAM_STATS_AWB_MODULE,
    CAM_STATS_ASD_MODULE,
    CAM_STATS_AFD_MODULE,
    CAM_STATS_Q3A_MODULE,
    CAM_STATS_IS_MODULE,
    CAM_STATS_HAF_MODULE,
    CAM_STATS_CAF_SCAN_MODULE,
    CAM_SHIM_LAYER,
    CAM_LAST_MODULE
  } cam_modules_t;

  设置各模块 LOG 等级,数字越小等级越高

  /* values that persist.vendor.camera.global.debug can be set to */ 
  /* all camera modules need to map their internal debug levels to this range */
  typedef enum {
    CAM_GLBL_DBG_NONE  = 0,
    CAM_GLBL_DBG_ERR   = 1,
    CAM_GLBL_DBG_WARN  = 2,
    CAM_GLBL_DBG_HIGH  = 3,
    CAM_GLBL_DBG_DEBUG = 4,
    CAM_GLBL_DBG_LOW   = 5,
    CAM_GLBL_DBG_INFO  = 6
  } cam_global_debug_level_t;

实测

 adb shell setprop persist.camera.global.debug x // 设置log等级
 adb shell getprop persist.camera.global.debug  // 查看log等级

查看 cam module log 关键字

LOG-keyword // 关键字
1. 打开相机

  CAM_PhotoModule: onCameraOpened

2. 获取到的camera配置信息

  sensor_get_resolution_info: sensor info: name:

3. 帧冻结错误

mm-camera: <MCT><ERROR> 98: mct_bus_sof_thread_run: FATAL Session 1: SOF Freeze! Sending error message
mm-camera: <MCT >< INFO> 133: mct_bus_sof_thread_run: Sending HW_ERROR from MCT on session =1
mm-camera: <MCT ><ERROR> 817: mct_controller_send_cb: FATAL: Sending HW_Error
Camera  : Error 100

4.帧冻结错误-关键字

I QCamera : <HAL><INFO> start_preview: 394: [KPI Perf]: X ret = 0  

月影憧憧 烟火几重 烛花儿红

猜你喜欢

转载自blog.csdn.net/FANG_YISHAO/article/details/118719513