2、开发环境搭建与调试工具链:MTK平台Camera调试工具(Meta Tool、Camera Tool、Logcat)、ADB常用命令、dump raw图方法

2.1 调试工具链全景概览

MTK Camera HAL层开发调试依赖一套完整的工具链,覆盖从底层寄存器读写、ISP参数调优到上层应用日志分析的全链路。掌握这些工具的使用是解决Camera问题的基本功。

核心调试工具矩阵
工具名称 主要用途 调试层级 连接方式
Meta Tool 底层寄存器读写、NVRAM参数校准、EEPROM烧录 Kernel / Sensor Driver USB + META模式
Camera Tool ISP参数调优、3A算法调试、效果图预览 HAL / ISP Pipeline USB + ADB Forward
Logcat HAL层日志、Framework层日志、错误栈捕获 HAL / Framework ADB
ADB 设备控制、文件传输、dump raw图、属性设置 全层级 USB / TCP/IP
MTK Camera 调试工具链架构 调试主机(Windows/Linux) Meta Tool 寄存器/NVRAM Camera Tool ISP/3A调优 ADB + Logcat 日志/文件传输 MTK 设备端(Android + Camera HAL) Sensor Driver ISP Pipeline HAL 3A Framework App 说明: • Meta Tool 需设备进入 META 模式(通常通过按键组合或 fastboot oem meta) • Camera Tool 通过 ADB forward tcp 转发与 HAL 层通信 • ADB 是其他所有工具的基础连接通道

2.2 Meta Tool 使用详解

Meta Tool 是 MTK 平台最底层的调试工具,用于直接操作 Camera 模组的寄存器、读取/写入 NVRAM 校准数据、烧录 EEPROM 等。在 HAL 层开发中,当遇到 sensor 无法点亮、ID 读取失败、OTP 数据异常等问题时,Meta Tool 是首选排查工具。

2.2.1 连接步骤

  1. 设备进入 META 模式:关机状态下按住 音量上键 + 电源键,或通过 adb reboot meta 命令(部分平台支持)。
  2. 连接 USB 线,打开 Meta Tool,选择对应的 COM 端口(设备管理器查看)。
  3. 点击 Connect,状态栏显示 META Connected 表示成功。
  4. 在 Chip Select 中选择对应的 Camera 模组(如 IMX586、OV64B 等)。
注意:META 模式下设备不启动 Android 系统,仅运行底层通信协议栈。如果设备无法进入 META 模式,请检查 bootloader 是否支持或尝试使用 fastboot oem meta 命令。

2.2.2 常用功能

功能模块 操作路径 典型场景
Sensor ID 读取 Sensor → Read Register 确认 sensor 是否正常通信
NVRAM 读写 NVRAM Editor → Camera 校准数据异常导致效果问题
EEPROM 烧录 EEPROM → Write 更换模组后写入校准数据
GPIO 控制 GPIO → Set/Get 排查供电/复位/使能信号
I2C 通信测试 I2C → Read/Write 验证 sensor 寄存器读写通路

2.3 Camera Tool 使用详解

Camera Tool 是 MTK 平台 ISP 调优的核心工具,用于实时调整 3A(AE/AWB/AF)参数、预览效果图、dump 中间数据。HAL 层开发中,当遇到曝光异常、白平衡偏色、对焦不准等问题时,Camera Tool 是最高效的调试手段。

2.3.1 连接与配置

  1. 确保设备已 root 并开启 ADB 调试。
  2. 执行 ADB 端口转发:adb forward tcp:1234 tcp:1234(端口号根据平台版本可能不同)。
  3. 打开 Camera Tool,在 Connection 中选择 TCP,输入 127.0.0.1:1234。
  4. 点击 Connect,工具界面显示实时预览流即表示成功。

2.3.2 核心调试面板

  • Preview Window:实时显示 Camera 预览画面,支持缩放、冻结、保存为 BMP。
  • 3A Tuning:手动调节 AE Target、AWB Gain、AF 位置等参数,观察实时效果。
  • ISP Debug:查看 ISP Pipeline 各模块的中间输出,如 BPC、NR、EE 等。
  • Sensor Control:直接设置 sensor 的曝光时间、增益、帧率等寄存器。
  • Log Viewer:实时显示 HAL 层输出的调试日志,支持过滤和导出。
调试技巧:当预览画面出现闪烁或条纹时,使用 Camera Tool 的 Flicker Detection 功能可以快速判断是否为 50Hz/60Hz 频闪问题,并自动推荐对应的 AE 参数。

2.4 ADB 常用命令

ADB(Android Debug Bridge)是 Camera HAL 开发中使用频率最高的命令行工具,用于设备控制、文件传输、日志捕获、属性设置等。以下是在 Camera 调试中最高频使用的命令集合。

命令 用途 示例
adb devices 查看已连接的设备列表 adb devices → 显示设备序列号
adb logcat -c 清除旧日志缓冲区 在开始抓取前执行
adb logcat -v time -s CameraHal 按时间戳过滤 CameraHal 标签日志 adb logcat -v time -s CameraHal > hal.log
adb shell setprop 设置系统属性,控制调试开关 adb shell setprop persist.vendor.camera.dump 1
adb shell getprop 读取系统属性值 adb shell getprop | grep camera
adb pull 从设备拉取文件到本地 adb pull /data/vendor/camera_dump/ .
adb push 推送本地文件到设备 adb push libcamera_hal.so /vendor/lib64/
adb shell dumpsys media.camera 查看 Camera 服务状态和 session 信息 排查 HAL 服务是否正常注册
adb shell killall cameraserver 重启 Camera 服务进程 修改 HAL 配置后快速生效

2.5 Dump Raw 图方法

Raw 图是 Camera 调试中最关键的数据源,包含了 sensor 输出的原始像素数据,未经 ISP 处理。通过分析 Raw 图可以判断 sensor 硬件是否正常、Bayer 排列是否正确、是否有坏点、暗电流水平等。MTK 平台提供多种 dump Raw 图的方式。

2.5.1 方法一:通过 HAL 层属性开关(推荐)

在 MTK Camera HAL 中,通常预置了 dump Raw 图的属性开关,无需修改代码即可启用。

# 开启 Raw dump(通常需要 root 权限)
adb shell setprop vendor.debug.camera.dump.raw 1

# 设置 dump 帧数(可选,默认 1 帧)
adb shell setprop vendor.debug.camera.dump.raw.count 5

# 启动 Camera 应用,拍照或预览
# Raw 图默认保存在 /data/vendor/camera_dump/ 目录下
# 文件名格式:raw_<sensor_id>_<frame_number>.raw

# 拉取到本地分析
adb pull /data/vendor/camera_dump/ .

2.5.2 方法二:通过 Camera Tool 的 Dump 功能

  1. 连接 Camera Tool 并建立预览。
  2. 在 ISP Debug 面板中,选择 Raw Dump 选项卡。
  3. 设置 dump 的帧数和输出路径(默认保存到设备 /sdcard/)。
  4. 点击 Start Dump,工具会自动捕获指定帧数的 Raw 数据。
  5. 通过 adb pull /sdcard/raw_dump/ 拉取到本地。

2.5.3 方法三:通过 ADB 直接读取 sensor 寄存器

适用于底层验证,不依赖 HAL 层逻辑,直接通过 I2C 读取 sensor 输出。

# 使用 MTK 提供的 i2c_read 工具(需预置在设备中)
adb shell i2c_read 0x34 0x0012  # 读取 sensor ID 寄存器

# 或者通过 /sys/class/i2c-dev/ 节点操作
adb shell cat /sys/class/i2c-dev/i2c-1/device/1-0034/raw_data
Raw 图分析工具推荐:
  • RawViewer(MTK 官方):支持 Bayer 排列显示、坏点标注、统计直方图。
  • dcraw(开源):命令行工具,可将 Raw 图转换为 TIFF/PPM 格式。
  • Python + numpy:自定义脚本分析 Raw 数据,适合批量处理。

2.6 调试流程最佳实践

在实际开发中,建议按照以下流程进行问题排查,避免盲目操作:

Camera 问题排查流程 问题复现 & Logcat 抓取 Meta Tool 硬件验证 Camera Tool ISP 调优 Dump Raw 图分析 定位根因 & 修复 先看日志,确认错误类型 再决定使用哪个工具 避免直接修改代码 Raw 图是最终证据 分析后再修改 HAL 代码 修改后重新验证
经验总结:80% 的 Camera 问题可以通过 Logcat + ADB 组合定位到模块级别,再使用 Meta Tool 或 Camera Tool 进行精确验证。不要一开始就修改代码,先通过工具确认问题边界。