高通LOG的使用方式
由于我是主攻camx,因此只展示这部分相关的log
log分成chi仓的log和camx 仓的log
chi 仓库的log 用这个属性控制
只看看到camx的打印可以使用指令:
logcat -s CamX
方式一、
setprop vendor.debug.camera.overrideLogLevels 0x13
Set Log levels Bitmask of log levels,
bit 0 - error,
bit 1 - warning,
bit 2 - config,
bit 3 - info,
bit 4 - dump
bit 5 - verbose,
bit 6 - log
Set bit HIGH to enable Bits 0,1,2,3,4 are enabled by default overrideLogLevelsUINTvendor.debug.camera.overrideLogLevels 0x13 FALSE
mask如上,默认值是0x13
方式二、
除了setprop 去控制之外,也可以把这个属性值 overrideLogLevels=0x13 写到camxoverridesettings.txt 推到 vendor/etc/camera
camx 仓库的log控制有以下几个属性:
persist.vendor.camera.logInfoMask 主要的info
persist.vendor.camera.logConfigMask configure stream阶段的log 打印
persist.vendor.camera.logVerboseMask 琐碎的log
简单确认配流和执行流程开info和config log就好了
对应不同的模块开不同的mask 对应的mask 参考:
// The group tag for a given debug print message
typedef UINT64 CamxLogGroup;
CamxLogGroup CamxLogGroupAFD = (1 << 0); ///< AFD
CamxLogGroup CamxLogGroupSensor = (1 << 1); ///< Sensor
CamxLogGroup CamxLogGroupTracker = (1 << 2); ///< Tracker
CamxLogGroup CamxLogGroupISP = (1 << 3); ///< ISP
CamxLogGroup CamxLogGroupPProc = (1 << 4); ///< Post Processor
CamxLogGroup CamxLogGroupMemMgr = (1 << 5); ///< MemMgr
CamxLogGroup CamxLogGroupPower = (1 << 6); ///< Power
CamxLogGroup CamxLogGroupHAL = (1 << 7); ///< HAL
CamxLogGroup CamxLogGroupJPEG = (1 << 8); ///< JPEG
CamxLogGroup CamxLogGroupStats = (1 << 9); ///< Stats
CamxLogGroup CamxLogGroupCSL = (1 << 10); ///< CSL
CamxLogGroup CamxLogGroupApp = (1 << 11); ///< Application
CamxLogGroup CamxLogGroupUtils = (1 << 12); ///< Utilities
CamxLogGroup CamxLogGroupSync = (1 << 13); ///< Sync
CamxLogGroup CamxLogGroupMemSpy = (1 << 14); ///< MemSpy
CamxLogGroup CamxLogGroupFormat = (1 << 15); ///< Format
CamxLogGroup CamxLogGroupCore = (1 << 16); ///< Core
CamxLogGroup CamxLogGroupHWL = (1 << 17); ///< HWL
CamxLogGroup CamxLogGroupChi = (1 << 18); ///< CHI
CamxLogGroup CamxLogGroupDRQ = (1 << 19); ///< DRQ
CamxLogGroup CamxLogGroupFD = (1 << 20); ///< FD
CamxLogGroup CamxLogGroupIQMod = (1 << 21); ///< IQ module
CamxLogGroup CamxLogGroupLRME = (1 << 22); ///< LRME
CamxLogGroup CamxLogGroupCVP = (1 << 22); ///< CVP
CamxLogGroup CamxLogGroupNCS = (1 << 23); ///< NCS
CamxLogGroup CamxLogGroupMeta = (1 << 24); ///< Metadata
CamxLogGroup CamxLogGroupAEC = (1 << 25); ///< AEC
CamxLogGroup CamxLogGroupAWB = (1 << 26); ///< AWB
CamxLogGroup CamxLogGroupAF = (1 << 27); ///< AF
CamxLogGroup CamxLogGroupSWP = (1 << 28); ///< SW Process
CamxLogGroup CamxLogGroupHist = (1 << 29); ///< Histogram Process
CamxLogGroup CamxLogGroupBPS = (1 << 30); ///< BPS
CamxLogGroup CamxLogGroupDebugData = static_cast<UINT32>((1 << 31)); ///< Debug-D
CamxLogGroup CamxLogGroupQSAT = (static_cast<UINT64>(1) << 32); ///< QSAT
案例说明:
以用persist.vendor.camera.logInfoMask控制info的log为例子我想开HAL和Core的log
计算得其值为0x10080
因此
我们发现仅开了hal和core的info的log
想开什么其他的节点,可以根据此函数中的红色部分,去camxsettings.xml里面去查找
遇到问题:
如果发现想要的log打印,但是又没出现,可能存在的原因在于,有些log是只在开机的时候运行一次,而后面在cmd中seprop的都是在运行时的log,因此就没出现。