调试工具链:高通/MTK平台调试工具介绍、Chrome Trace分析、Logcat抓取与分析、图像dump与离线分析

做图像质量调优,说白了就是跟各种工具打交道。没有趁手的家伙,你连问题在哪都找不到。

我刚开始带项目那会儿,最头疼的就是平台差异。高通和MTK,两家思路完全不同。你拿着高通的套路去调MTK,大概率会碰一鼻子灰。反过来也一样。

今天咱们就把这套工具链捋一遍。从平台工具到Trace分析,再到Log抓取和图像dump,一条龙讲清楚。

高通平台调试工具

高通的工具链,我个人觉得是最完善的。但也正因为太完善,新手容易迷失。

QCARCamera

这是高通官方提供的调试工具。说白了就是一个带各种开关的相机应用。你可以用它来切换不同的算法模块,比如AEC、AWB、AF的开关。

我习惯在调优初期先用它做快速验证。比如怀疑某个场景下AWB偏色,直接关掉AWB,手动给一个色温值,看看是不是算法的问题。

核心功能:
  • 实时切换ISP pipeline中的各个模块
  • 导出当前帧的RAW图和YUV图
  • 查看3A算法的中间状态值
  • 模拟不同的光照场景

CamX / Chi API

高通从骁龙845开始推CamX架构。这个架构最大的变化,是把算法模块做成了插件。你可以自己写一个Chi node,插到pipeline里。

嗯,这里要注意。CamX的调试日志默认是关闭的。你需要通过adb设置属性才能打开:

adb shell setprop persist.vendor.camera.logs 0x1F
adb shell setprop persist.vendor.camera.enableHAL3 1
adb shell setprop persist.vendor.camera.global.debug 1

我曾经因为没开日志,查了一个星期的黑屏问题。最后发现是sensor驱动没加载成功。从那以后,我拿到新平台的第一件事,就是把所有调试开关打开。

MTK平台调试工具

MTK的工具,说实话,早期挺难用的。但最近几年进步很大。尤其是他们的Meta Tool,功能越来越强。

Meta Tool

MTK的Meta Tool相当于高通的QCARCamera。但它有个特点——它是个PC端工具,通过USB连接手机。

你可以在PC上实时调整参数,手机端立刻生效。这个对调试来说太方便了。我经常一边看着测试图卡,一边在PC上滑动滑块调AWB增益。

小技巧: Meta Tool支持批量参数导入。你可以把一组调好的参数保存成ini文件,下次直接加载。我一般会为每个场景(室内、室外、夜景)保存一套基准参数。

Camera Hal Debug

MTK的HAL层日志,通过属性控制:

adb shell setprop debug.camera.log 1
adb shell setprop debug.camera.hal 1
adb shell setprop debug.camera.isp 1

注意,MTK的日志量非常大。如果你全开,logcat会刷得飞起。我建议按需开启,比如只开HAL层或者只开ISP层。

Chrome Trace分析

这个工具,我强烈建议每个做图像的人都学会。Chrome Trace(也叫Perfetto)能让你看到每一帧里,每个模块花了多少时间。

为什么会这么重要?因为图像调优不只是调画质,还要调性能。你画质调得再好,如果帧率掉到15fps,用户照样骂娘。

抓取Trace

高通平台用这个命令:

adb shell atrace --async_start -c -b 40960 camera hal
... 操作相机 ...
adb shell atrace --async_dump -c -b 40960 > /data/local/tmp/trace_output
adb pull /data/local/tmp/trace_output

MTK平台稍微不同:

adb shell perfetto --out /data/misc/perfetto-traces/trace.perfetto \
  --txt -c - <<EOF
buffers: {
    size_kb: 102400
}
data_sources: {
    config {
        name: "android.hardware.camera"
    }
}
EOF

分析要点

拿到Trace文件后,用浏览器打开 ui.perfetto.dev。我一般关注这几个点:

  • Pipeline深度:当前有几帧在pipeline里?太深会导致延迟大
  • ISP处理时间:是否超过了16ms(60fps)或33ms(30fps)?
  • 3A收敛时间:从场景变化到AEC/AWB稳定,花了多少帧?
  • CPU负载:哪个线程在吃CPU?是不是有死循环?
避坑指南: 我曾经遇到一个case,Trace上看ISP处理时间正常,但帧率就是上不去。后来发现是CPU调频策略的问题——ISP线程被调度到了小核上。解决办法是绑核,把ISP线程固定到大核。

Logcat抓取与分析

Logcat是Android调试的基本功。但很多人只会用 logcat -s 过滤,其实远远不够。

高效抓取

我常用的几个命令:

# 带时间戳,方便定位
adb logcat -v time -b all > log.txt

# 只抓相机相关,且保存到文件
adb logcat -v threadtime | grep -E "Camera|HAL|ISP|3A" > camera_log.txt

# 实时查看,高亮错误
adb logcat -v color | grep --color=always -E "ERROR|FATAL|WARNING"

分析技巧

拿到日志后,别急着从头看到尾。我一般先搜这几个关键词:

  • FATAL 或 CRASH:程序挂了,优先解决
  • ERROR:可能有功能异常
  • WARNING:潜在风险,但未必是问题
  • timeout:某个操作超时了,通常是性能瓶颈
  • buffer:跟buffer分配相关的问题
个人习惯: 我会把日志按时间分段。比如操作前10秒、操作中、操作后10秒。这样能快速定位问题发生的时刻。

图像dump与离线分析

这是最实在的一步。你调了半天,不如把图像dump出来,放到PC上用专业工具看。

如何dump图像

高通平台:

adb shell setprop persist.vendor.camera.raw.dump 1
adb shell setprop persist.vendor.camera.yuv.dump 1

MTK平台:

adb shell setprop debug.camera.dump 1
adb shell setprop debug.camera.dump.path /sdcard/dump

dump出来的文件通常是RAW格式(.raw或.dng)或者YUV格式(.yuv或.nv21)。

离线分析工具

我常用的工具链:

工具 用途 我的评价
Imatest 解析力、色彩、噪点分析 行业标准,贵但值
IE (Image Engineering) 综合图像质量分析 跟Imatest互补
Python + OpenCV 自定义分析脚本 灵活,我经常写脚本批量处理
RawDigger 查看RAW图数据 免费,看坏点和黑电平很好用

分析流程

我一般按这个步骤来:

  1. 看RAW图:检查是否有坏点、黑电平是否正常、是否有Bayer pattern异常
  2. 看YUV图:检查亮度、色彩、是否有噪声
  3. 跑Imatest:量化解析力(MTF)、色彩准确度(Delta E)、信噪比(SNR)
  4. 对比基准:跟竞品或者上一版固件对比,看是进步还是退步
核心思路: 图像dump是调优的「照妖镜」。很多在手机上看起来没问题的问题,一放到PC上放大看,就原形毕露了。比如轻微的紫边、暗角的渐变、或者某个区域的偏色。

知识体系总览

下面这张图,是我自己整理的调试工具链知识体系。你可以把它当成一张地图,遇到问题就知道该用哪个工具。

图像质量调试工具链知识体系 高通平台工具 • QCARCamera • CamX/Chi API • ISP调试开关 • 3A状态监控 • RAW/YUV dump MTK平台工具 • Meta Tool • HAL调试日志 • ISP调试属性 • 参数批量导入 • 图像dump开关 Chrome Trace • Pipeline深度 • ISP处理耗时 • 3A收敛时间 • CPU负载分析 • 帧率瓶颈定位 Logcat分析 • 高效抓取命令 • 关键词过滤 • 错误定位 • 超时分析 • 时间分段法 图像dump与离线分析 • RAW图检查:坏点、黑电平、Bayer pattern • YUV图检查:亮度、色彩、噪声 • Imatest量化:MTF、Delta E、SNR • 竞品对比:与基准固件/竞品对比 • 工具链:Imatest / IE / Python+OpenCV / RawDigger 核心思路:平台工具做快速验证 → Trace做性能分析 → Logcat做问题定位 → 图像dump做量化评估

这套工具链,说白了就是你的「眼睛」和「手」。眼睛帮你看清问题在哪,手帮你去调整参数。两者缺一不可。

我见过很多工程师,只会用Meta Tool或者QCARCamera调参数,但不会看Trace,也不会分析Log。结果就是调了半天,问题复现不了,或者复现了也不知道根因。

所以我的建议是:把这四个工具都练熟。遇到问题,先用Trace看性能,再用Logcat定位错误,然后用图像dump做量化分析,最后用平台工具做参数调整。这套流程走下来,90%的问题都能搞定。

可可精品资料库