MTK8766 Camera调试全攻略
在 MTK 8766 平台上调试 Camera 是一项系统工程涉及硬件链路 (I2C/MIPI)、内核驱动 (imgsensor)以及用户空间 (Camera HAL)三个层面。一、 核心架构预览 (MTK Camera Pipeline)在调试前先明确数据流向二、 调试三部曲从点亮到出图1. 硬件探测与内核驱动 (The I2C Phase)首先要确保 SoC 能通过 I2C 读到 Sensor 的 ID。关键文件kernel-x.x/drivers/misc/mediatek/imgsensor/src/下对应的 sensor 驱动如ov8856_mipi_raw。上电时序检查VCAMA,VCAMD,VCAMIO电压是否按时序拉高。DTS 配置检查mclk,pwdn,rst的 GPIO 对应关系。硬件连接图2. 信号传输 (The MIPI Phase)ID 读到后如果无法预览通常是 MIPI 配置问题。Lane 数匹配确认 Sensor 输出和 SoC 输入的 Lane 数如 2-lane 或 4-lane。时钟频率data_rate必须根据分辨率和帧率精确计算。SENINF 状态监控 MTK 的SENINF控制器是否有 FIFO Overrun 或 CRC 错误。3. 系统适配 (The HAL Phase)Metadata 配置在vendor/mediatek/proprietary/custom/mt8766/hal/imgsensor/下配置传感器的规格FOV, 分辨率列表。驱动挂载检查kd_sensorlist.h是否正确包含了新的 Sensor 驱动。三、 一般问题排查方向故障现象可能原因排查手段I2C Read ID Fail供电不足、MCLK 无输出、RST 未拉高示波器量电压和 MCLK 24MHz 波形确认从机地址。打开相机黑屏MIPI 信号未输出或格式不匹配adb shell dmesg -w预览偏绿/偏紫Bayer Pattern 设置反了如 RGGB 设成了 BGGR检查驱动中sensor_output_dataformat的定义。画面有条纹/噪点MIPI 电气特性差、V-Blank 设得太小尝试降低PLL_CLOCK或增大消隐区。预览卡顿/跳帧中断处理太慢、帧率计算错误检查pclk计算公式是否满足 H_total x V_total x FPS。四、 常见问题指导 FAQQ1: 换了一颗新 Sensor已经读到 ID 了但开启预览就报错断开A:重点检查MIPI Lane 映射。MTK 平台有时需要手动配置物理 Lane 和逻辑 Lane 的交叉映射Mapping如果 D-Lane 0 接到了 SoC 的 D-Lane 1会导致同步失败。Q2: 如何快速确认是硬件还是软件问题A:使用adb shell dumpsys media.camera。如果看到设备列表里有摄像头的 ID说明 HAL 层已经识别大概率是驱动初始化或时钟配置问题。如果列表为空回退去查 I2C 通讯。Q3: 预览出来的图像是旋转的或者镜像的A:修改驱动中的sensor_output_mirror_flip参数。通常有四种组合None, Mirror, Flip, MirrorFlip。Q4: 图像亮度非常暗甚至全黑A:1. 检查曝光增益Exposure/Gain的初始设置。2. 确认pwdn引脚是否在初始化后意外被拉低。3.关键点确认是否有正确的 ISP Tuning 效果文件。没有 Tuning 文件时ISP 默认增益可能极低。五、 调试注意事项避坑指南ESD 风险Camera 模组非常脆弱拔插前务必断电否则极易烧毁 MIPI 接口。MCLK 干扰MCLK通常 24MHz是高频信号如果布线不佳会干扰 I2C 通讯导致读 ID 时好时坏。多摄冲突如果 MT8766 挂载了前后双摄注意两者的 I2C 地址是否冲突很多相同型号的 Sensor 地址是死的。Log 获取开启 MTK 原厂的调试日志adb shell setprop vendor.debug.camera.log 1 adb shell setprop vendor.debug.mtkcam.loglevel 3