美文网首页
高通Camera Log Debug 知识点

高通Camera Log Debug 知识点

作者: 程序员Android1 | 来源:发表于2023-06-20 10:53 被阅读0次

    和你一起终身学习,这里是程序员 Android

    经典好文推荐,通过阅读本文,您将收获以下知识点:

    一、Camx UMD Log Debug
    二、Camx KMD log Debug
    三、常用缩写解释
    四、参考文献

    一、Camx UMD Log Debug

    1.1 两种方式设置camx UMD Log
    1. /vendor/etc/camera/camxoverridesettings.txt
      设置完需要重启后才可以生效
    2. adb shell setprop <key> <value>
      设置完后生效,重启后失效
    1.2 Camx UMD log 等级

    Camx log 等级包含如下内容:

    Log 等级 Log key Log Value
    Verbose Log Mask logVerboseMask 0
    Entry/Exit Log Mask logEntryExitMask 0
    Info Log Mask logInfoMask 0xFFFFFFFF
    Warning Log Mask logWarningMask 0xFFFFFFFF
    System Log Enable systemLogEnable TRUE
    所有log打开 logkey eg :logWarningMask Logvalue eg: 0xFFFFFFFF
    1.3 Camx UMD log Group

    Camx UMD log Group 控制主要采用32位二进制数值进行控制开关。
    比如关闭全为0
    0000 0000 0000 0000 0000 0000 0000 0000

    Camx UMD Log Group 举例如下:

    typedef UINT32 CamxLogGroup;
    static const CamxLogGroup CamxLogGroupNone          = (1 << 0);     /0x1        //< Generic group   
    static const CamxLogGroup CamxLogGroupSensor        = (1 << 1);     /0x2        //< Sensor
    static const CamxLogGroup CamxLogGroupIFace         = (1 << 2);     /0x4        //< IFace
    static const CamxLogGroup CamxLogGroupISP           = (1 << 3);     /0x8        //< ISP
    static const CamxLogGroup CamxLogGroupPProc         = (1 << 4);     /0x10       //< Post Processor
    static const CamxLogGroup CamxLogGroupImgLib        = (1 << 5);     /0x20       //< Image Lib
    static const CamxLogGroup CamxLogGroupCPP           = (1 << 6);     /0x40       //< CPP
    static const CamxLogGroup CamxLogGroupHAL           = (1 << 7);     /0x80       //< HAL
    static const CamxLogGroup CamxLogGroupJPEG          = (1 << 8);     /0x100      //< JPEG
    static const CamxLogGroup CamxLogGroupStats         = (1 << 9);     /0x200      //< Stats
    static const CamxLogGroup CamxLogGroupCSL           = (1 << 10);    /0x400      //< CSL
    static const CamxLogGroup CamxLogGroupApp           = (1 << 11);    /0x800      //< Application
    static const CamxLogGroup CamxLogGroupUtils         = (1 << 12);    /0x1000     //< Utilities
    static const CamxLogGroup CamxLogGroupSync          = (1 << 13);    /0x2000     //< Sync
    static const CamxLogGroup CamxLogGroupMemSpy        = (1 << 14);    /0x4000     //< MemSpy
    static const CamxLogGroup CamxLogGroupAssert        = (1 << 15);    /0x8000     //< Asserts
    static const CamxLogGroup CamxLogGroupCore          = (1 << 16);    /0x10000    //< Core
    static const CamxLogGroup CamxLogGroupHWL           = (1 << 17);    /0x20000    //< HWL
    static const CamxLogGroup CamxLogGroupChi           = (1 << 18);    /0x40000    //< CHI
    static const CamxLogGroup CamxLogGroupDRQ           = (1 << 19);    /0x80000    //< DRQ
    static const CamxLogGroup CamxLogGroupFD            = (1 << 20);    /0x100000   //< FD
    static const CamxLogGroup CamxLogGroupIQMod         = (1 << 21);    /0x200000   //< IQ module
    static const CamxLogGroup CamxLogGroupLRME          = (1 << 22);    /0x400000   //< LRME
    static const CamxLogGroup CamxLogGroupNCS           = (1 << 23);    /0x800000   //< NCS
    static const CamxLogGroup CamxLogGroupMeta          = (1 << 24);    /0x1000000  //< Metadata
    static const CamxLogGroup CamxLogGroupAEC           = (1 << 25);    /0x2000000  //< AEC
    static const CamxLogGroup CamxLogGroupAWB           = (1 << 26);    /0x4000000  //< AWB
    static const CamxLogGroup CamxLogGroupAF            = (1 << 27);    /0x8000000  //< AF
    

    如果打开不同group 的log,那么修改对应的值即可。
    比如:
    单独打开 CSL HAL Sensor CHI 三组Info Log Mask

                   CHI       CSL  HAL  Sensor  
     0    0    0    4    0    4    8    2  =0x40482
    0000 0000 0000 0100 0000 0100 1000 0010 
    

    logWarningMask=0x00040482
    logWarningMask=0x40482
    此时log mask 可以使用上面两种,注意,前面的0可以省略,后面的0不可以省略。

    比如:
    打开所有的 Verbose Log Mask
    0xFFFFFFFF 打开所有的log
    logVerboseMask=0xFFFFFFFF

    1.4 Camx log 打印的标准格式:

    CamX: [<Verbosity Level>][<Group>] <File>:<Line Number> <Function Name> <Message>

    eg:

    04-25 16:20:29.192  1014  1314 I CamX    : [CONFIG][HAL    ] camxhal3.cpp:552 open() HalOp: Begin OPEN, logicalCameraId: 0, cameraId: 0
    

    二、Camx KMD log Debug

    2.1.kernel log 配置文件

    kernel log 配置文件路径如下:
    /sys/module/cam_debug_util/parameters/debug_mdl

    2.2 Camx KMD log Group

    Camx KMD log控制采用32位二进制数值进行控制开关。
    0000 0000 0000 0000 0000 0000 0000 0000

    Camx KMD Log Group 举例如下:

    #define CAM_CDM        (1 << 0)    /0x1      //Camera 数据传输 Camera data mover
    #define CAM_CORE       (1 << 1)    /0x2 
    #define CAM_CPAS       (1 << 2)    /0x4  //Camera 外设  Camera peripherals and support
    #define CAM_ISP        (1 << 3)    /0x8  //图像信号处理器 Image single processer
    #define CAM_CRM        (1 << 4)    /0x10     //Camera 请求管理 Camera request manager
    #define CAM_SENSOR     (1 << 5)    /0x20    
    #define CAM_SMMU       (1 << 6)    /0x40     //共享内存管理单元 Shared Memory management unit
    #define CAM_SYNC       (1 << 7)    /0x80    
    #define CAM_ICP        (1 << 8)    /0x100    //图像控制处理器 Image control processer
    #define CAM_JPEG       (1 << 9)    /0x200   
    #define CAM_FD         (1 << 10)   /0x400   
    #define CAM_LRME       (1 << 11)   /0x800    //低运动估算 Low reolution motion estiamtion
    #define CAM_FLASH      (1 << 12)   /0x1000  
    #define CAM_ACTUATOR   (1 << 13)   /0x2000  
    #define CAM_CCI        (1 << 14)   /0x4000    //camera 控制接口 Camera control interface eg:i2c gpio
    #define CAM_CSIPHY     (1 << 15)   /0x8000    //Camera 串口处理接口 Camera serial interface eg: MIPI
    #define CAM_EEPROM     (1 << 16)   /0x10000
    #define CAM_UTIL       (1 << 17)   /0x20000
    #define CAM_HFI        (1 << 18)   /0x40000  //Camera 固件接口 Host-firmware interface
    #define CAM_CTXT       (1 << 19)   /0x80000
    #define CAM_OIS        (1 << 20)   /0x100000
    #define CAM_RES        (1 << 21)   /0x200000  //Camera shared resource API
    #define CAM_MEM        (1 << 22)   /0x400000
    
    /* CAM_IRQ_CTRL: For events in irq controller */
    #define CAM_IRQ_CTRL   (1 << 23)   /0x800000
    
    /* CAM_REQ: Tracks a request submitted to KMD */
    #define CAM_REQ        (1 << 24)   /0x1000000
    
    /* CAM_PERF: Used for performance (clock, BW etc) logs */
    #define CAM_PERF       (1 << 25)   /0x2000000
    #define CAM_CUSTOM     (1 << 26)   /0x4000000
    #define CAM_PRESIL     (1 << 27)   /0x8000000
    

    比如:
    打开 CAM_ISP CAM_SENSOR CAM_ICP

                           CAM_ICP  CAM_SENSOR  CAM_ISP
     0    0    0    0    0    1       2           8     = 0x128
    0000 0000 0000 0000 0000 0001    0010        1000 
    

    adb 调试命令如下

    adb root
    adb remount
    adb shell “echo 0x128 > /sys/module/cam_debug_util/parameters/debug_mdl”
    adb shell cat /proc/kmsg > name_of_kmd_logs.txt
    
    2.3 更多kernel log

    需要参考 80-p9301-61_p_qualcomm_spectra_linux_camera_debugging_user_guide.pdf 这个文档

    三、常用缩写解释

    部分camera 缩写请参考下面表格

    缩写 全称 备注
    UMD User Mode Driver 用户模式驱动
    KMD Kernel Mode Driver 内核模式驱动
    IFE Image Front End 图片前端处理
    TFE Thin Front End Thin 前端
    IPE Image Processing Engine 图片处理引擎
    ISP Image Singal Processor 图像信号处理器
    CCI Camera control interface Camera 控制接口
    CSI Camera Serial interface Camera 序列话接口
    CSID Camera Serial interface Decoder Camera 序列话接口解码器

    四、参考文献

    1.80-p9301-61_p_qualcomm_spectra_linux_camera_debugging_user_guide.pdf
    2.【腾讯文档】Camera学习知识库
    https://docs.qq.com/doc/DSWZ6dUlNemtUWndv

    至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

    相关文章

      网友评论

          本文标题:高通Camera Log Debug 知识点

          本文链接:https://www.haomeiwen.com/subject/druyydtx.html