1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Qcom平台 Camera 之开启调试 log

Qcom平台 Camera 之开启调试 log

时间:2019-02-27 08:27:32

相关推荐

Qcom平台 Camera 之开启调试 log

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

调试 打开 kernelcam 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 属性

// 参考链接: /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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。