高通Camera Log Debug 知识点

news2024/12/23 8:12:25

ff494136a49e7dafeda500adfd86567e.gif

和你一起终身学习,这里是程序员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 keyLog Value
Verbose Log MasklogVerboseMask0
Entry/Exit Log MasklogEntryExitMask0
Info Log MasklogInfoMask0xFFFFFFFF
Warning Log MasklogWarningMask0xFFFFFFFF
System Log EnablesystemLogEnableTRUE
所有log打开logkey eg :logWarningMaskLogvalue 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 缩写请参考下面表格

缩写全称备注
UMDUser Mode Driver用户模式驱动
KMDKernel Mode Driver内核模式驱动
IFEImage Front End图片前端处理
TFEThin Front EndThin 前端
IPEImage Processing Engine图片处理引擎
ISPImage Singal Processor图像信号处理器
CCICamera control interfaceCamera 控制接口
CSICamera Serial interfaceCamera 序列话接口
CSIDCamera Serial interface DecoderCamera 序列话接口解码器

四、参考文献

1.80-p9301-61_p_qualcomm_spectra_linux_camera_debugging_user_guide.pdf

2.【腾讯文档】Camera学习知识库https://docs.qq.com/doc/DSWZ6dUlNemtUWndv

友情推荐:

Android 开发干货集锦

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

6ba04227f3884a746a384c113261d5bd.jpeg

点击阅读原文,为大佬点赞!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/673441.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GPT-3.5眼中的编程语言之最:Python的卓越之处

当谈论编程语言的选择时&#xff0c;每个开发者都有自己的偏好和理由。作为GPT-3.5&#xff0c;以我的分析和学习能力&#xff0c;我也有自己心目中的编程语言之最。在众多编程语言中&#xff0c;Python在我的眼中独树一帜&#xff0c;是最令人着迷和受欢迎的编程语言之一。 首…

面试经典150题(1)

文章目录 前言除自身以外数组的乘积要求思路代码 跳跃游戏|要求题解代码 跳跃游戏||要求题解代码 前言 今天开始我将陆续为大家更新面试经典150题中较难理解的题目。今天我为大家分享的是&#xff0c;除自身以外数组的乘积、跳跃游戏| 和 跳跃游戏||。 除自身以外数组的乘积 …

【unity之UiI专题】GUI(IMGUI)详解

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

AI 绘画工具 Stable Diffusion 本地安装使用

最近要用到 AI 绘画&#xff0c;所以研究了下目前市面上的 AI 绘画工具&#xff0c;真可谓是琳琅满目&#xff0c;但主流的还是 Stable diffusion 和 Midjourney 两大阵营。 Midjourney 不多说&#xff0c;开箱即用&#xff0c;对新手非常友好&#xff0c;但不免费&#xff0c…

Linux基础(二)—— 怎么在VMware/WSL中安装Ubuntu系统

文章目录 01 | VMware安装Ubuntu02 | WSL2安装Ubuntu 虚拟机安装Linux的方式分为两种&#xff1a;APP安装、WSL安装 APP安装就是常见的VMware VirtualBox安装的方式&#xff0c;而WSL是Windows系统自带的一个虚拟机应用&#xff0c;可以更好的与Windows进行信息交互&#xff08…

判断是否为美丽数组

判断是否为美丽数组c思路和实现 这段代码的功能是对于给定的多个序列&#xff0c;判断每个序列是否是一个 beautiful 序列。没次读取当前的序列判断之后再加入下一个数字进序列。 首先&#xff0c;输入一个整数 t&#xff0c;表示测试数据组数。 对于每组测试数据&#xff0c;…

【初识C语言】字符串+转义字符+注释

文章目录 1. 字符串2. 转义字符转义字符表常见转义字符 3. 注释 1. 字符串 “hello world.\n” 上面这种由双引号引起的一串字符就被称为字符串&#xff1b; 字符串的存储 C 语言当中没有字符串类型&#xff0c;如果想要将字符串存储起来的话就需要用到字符串数组。 #include…

Excel VBA 编程入门

Visual Basic for Applications&#xff08;VBA&#xff09;是一种用于 Microsoft Office 套件中的编程语言&#xff0c;它可以帮助您自动化重复性任务、定制应用程序以及增强工作效率。本文将向您介绍 Excel VBA 编程的基础知识&#xff0c;并通过示例帮助您入门。 1、启用“开…

融云WICC2023:成为「卷王」的路上,如何更好借力 AIGC

近期&#xff0c;“融云 WICC2023 泛娱乐出海嘉年华”在广州成功举办&#xff0c;行业多方力量与数百位开发者汇聚一堂&#xff0c;共同探讨出海人布局全球的突围之道。关注【融云全球互联网通信云】了解更多 在嘉年华的圆桌会议环节&#xff0c;白鲸出海创始人&#xff06;CE…

Axure教程—计数器

本文将教大家如何用AXURE制作计数器&#xff08;商品购件数的交互设计&#xff09; 一、效果 预览地址&#xff1a;https://uf9ie1.axshare.com 二、功能 1、用户点击“”号时数值加1 2、用户点击“-”号时数值减1 三、制作 数值 拖入一个矩形组件&#xff0c;其大小设置为164…

个人一年工作情况总结报告

个人一年工作情况总结报告篇1 转眼间又到了年终岁尾&#xff0c;这一年就要在很充实忙碌的工作中过去了。在这一年里&#xff0c;我收获了很多也积累了不少的工作经验。同时在两位领导和各位主管的帮助与支持下&#xff0c;我很好的完成了本职工作。作为一名办公室文员&#xf…

云计算成本大揭秘:硬件、研发、电力等各项成本都在这里!

‍数据智能产业创新服务媒体 ——聚焦数智 改变商业 云计算作为一种技术和商业模式&#xff0c;已经深深地影响了全球的IT行业和各种商业运营。云服务商的主要模式以订阅为基础&#xff0c;一旦应用程序和工作负载移动到云上&#xff0c;它们通常会停留在那里&#xff0c;订阅…

js blob 文件上传

js blob 文件上传 js中的文件处理和文件上传掌握得更扎实&#xff0c;有更深入的理解&#xff0c;底层原理 ps.项目中使用插件上传 filereadermime类型筛选单文件的2种处理方案多文件&文件上传进度管控 Ajax文件上传时&#xff1a;Formdata、File、Blob的关系-腾讯云开发者…

基于Java端游账号销售管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

C语言 --- 文件操作(万字详解)

文章目录 前言&#x1f31f;一、为什么使用文件&#x1f31f;二、什么是文件&#x1f30f;2.1程序文件&#xff1a;&#x1f30f;2.2数据文件&#xff1a;&#x1f30f;2.3文件名&#xff1a; &#x1f31f;三、文件的打开和关闭&#x1f30f;3.1文件指针&#xff1a;&#x1f…

TDEngine 调优 - 高速查询及插入

TDEngine 调优 - 高速查询及插入 一、基本参数二、TDEngine大数据核心2.1 vnode分片2.1.1 表分布不均匀2.1.2 vnode分布不均匀2.2 时间段分区 三、数据库性能优化3.1 数据文件3.1.1 maxrows 和 minrows3.1.2 数据的保留策略duration\days 3.2 磁盘IO - vgroups3.3 性能优化实战…

「网络编程」第二讲:网络编程socket套接字(一)

「前言」文章是关于网络编程的socket套接字方面的&#xff0c;下面开始讲解&#xff01; 「归属专栏」网络编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」 「每篇一句」 春风得意马蹄疾&#xff0c;一日看尽长安花。 ——孟郊《登科后》 目录 一…

这有可能是全网最好的《基于CUDA的GPU并行程序优化实战课程》!预售开启!

大模型一出&#xff0c;各类企业的各类“模型”竞赛般的亮家伙&#xff0c;算力时代抢先到来。2023年4月超算互联网的正式部署&#xff0c;标志着&#xff0c;很快&#xff0c;越来越多的应用都需要巨大的计算资源。 这给传统的计算机体系结构带来了巨大的挑战&#xff0c;计算…

C语言指向结构体的指针(二)

示例 #include <stdio.h> void main(){struct student{char name[10];int age;char *xiaoming;}stu1{"豪哥",23,"zz"},*p;p &stu1;//struct student stu2 {"豪哥",23};printf("结构体指针变量p的姓名是:%s,年龄是:%d,小名是&am…

『手撕 Mybatis 源码』08 - 动态代理 invoke 方法

动态代理 invoke 方法 问题 mapperProxy.findByCondition(1); 是怎么完成的增删改查操作&#xff1f; 当通过 JDK 代理方式生成代理对象后&#xff0c;可以通过代理对象执行代理方法 public class MybatisTest {/*** 问题3&#xff1a;mapperProxy.findByCondition(1); 是怎…