本文是针对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

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

Qcom平台 Camera 之开启调试 log相关推荐

  1. Qcom平台 Camera 之单刷调试

    前言 有关Android 平台 camera 调试的一些知识点,有助于调试验证. 目录 一些知识点 调试 vendor 镜像问题 调试 device-vendor.mk 调试 msm8953_came ...

  2. Qcom平台 Camera 之调试单刷验证

    前言 由于调试camera 过程中,遇到的问题琐碎繁杂,在此将已经掌握和常用的调试技巧和一些知识点罗列出来,便于快速的开发调试camera. 平台包含msm8909.msm8953,软件平台包含And ...

  3. android camera2 qcom,Qcom平台 Camera的一些知识点 之MCLK

    前言 MCLK 是平台 baseband 提供给 cam sensor的正常工作的频率, Qcom 平台一般未24MHz,由其他时钟源分频而来,实测在23.8MHz左右. 在打开相机的时候,才可以测到 ...

  4. Qcom平台 Camera 之常见错误和问题

    本文主要记载了一些在调试过程中遇到的错误和问题,及相关的设置.log.解决方法等.如有错误,请交流指正. 目录 调试 帧冻结错误 调试 相机 App 闪退错误 调试 cam banding 现象 调试 ...

  5. android camera2 qcom,Qcom平台 camera的一些知识点 之RAW图抓取

    前言 介绍camera sensor 输出的 raw 图,用于验证cam显示效果问题. 参考文档 : KBA-161204073328 目录 的 mask bit 定义 参数解释: /** * 参数解 ...

  6. 【qcom Android camera调试纪要】

    qcom Android camera调试纪要 1.平台适配 1.1.kernel端 1.2.vendor端 1.2.1.cameraService lib代码 注意:需要在vendor\qcom\p ...

  7. 高通平台camera 移植过程

    1  camera基本代码架构 高通平台对于camera的代码组织,大体上还是遵循Android的框架:即上层应用和HAL层交互,高通平台在HAL层里面实现自己的一套管理策略:在kernel中实现se ...

  8. android拷机工具,Android8.0平台Camera monkey拷机卡死异常解决方案

    android8.0平台camera monkey拷机卡死异常 最近在处理一个camera monkey拷机卡死的问题,卡死在停止录像的画面. monkey测试命令 monkey -p com.and ...

  9. android烤机按键变慢,Android8.0平台Camera monkey拷机卡死异常

    Android8.0平台Camera monkey拷机卡死异常 最近在处理一个camera monkey拷机卡死的问题,卡死在停止录像的画面. monkey测试命令 monkey -p com.and ...

最新文章

  1. 第三次组织架构变动背后,腾讯AI走向何方?
  2. 装逼一步到位!GauGAN代码解读来了
  3. 欢迎大家观顾【图灵教育社区】
  4. 安装Anaconda创建虚拟环境以及在pycharm中使用虚拟环境
  5. 在ORACLE中对存储过程加密
  6. java读取unicode文件_java怎么样将unicode解码读取?Java读取本地文件进行unicode解码...
  7. 什么是空间复杂度(What is actually Space Complexity ?)
  8. TextBoxWatermarkExtender扩展器与RequiredFieldValidator控件相冲突的解决方案
  9. leetcode 21 合并两个有序链表 (python)
  10. 网易云计算机系统有限公司,网易云音乐官方电脑版
  11. 什么是JavaWeb,主要框架有哪些
  12. 智头条:3月智能圈投融资大事记:极米、涂鸦上市,大华获中国移动56亿投资,凯迪仕获近1亿美元融资,小米投100亿美金造车
  13. [转]密码算法揭秘,一文让你成为国际安全算法与国密算法专家
  14. spring cloud学习-什么是Spring Cloud Eureka?
  15. 如何将PDF的单页页面分割成多个页面,如何将PDF页面的四周空白部分裁剪掉
  16. 美团饿了么外卖返利小程序公众号搭建外卖返利分销系统代cps源码
  17. 你所需要的java基础提升篇大总结
  18. 域名的解析及域名根服务器
  19. 友盟启动耗时分析之耗时趋势及性能拆解
  20. python3操作USB设备

热门文章

  1. 【luogu P2071 座位安排】 题解
  2. 竞品分析之流程总结以及感悟
  3. RHEL下编译wireshark源码
  4. 形式逻辑(01)你的逻辑怎么样?
  5. 在线运行 Linux,真滴牛逼。
  6. 当在浏览器地址栏输入一个URL后回车,将会发生的事情?
  7. 百度清风算法2.0——严厉打击欺骗下载 !
  8. Makefile中的死循环问题--学习李云《驾驭Makefile》中的疑惑解决
  9. 05 pyecharts 基本图表(示例代码+效果图)
  10. c#实现控制打印机并绘图