面向小白的完整配置流程,从拿到新 Sensor 到点亮 Camera 的每一步。
背景
MTK(MediaTek)平台的 Camera 驱动配置,本质是告诉系统:这颗 Sensor 长什么样、怎么供电、怎么通信、怎么出图。
整个链路:Sensor → I2C → Kernel Driver → HAL → Framework → App
本文以 Android 13 / MTK Dimensity 系列 为例,其他版本思路相同。
📦 第一步:拿到 Sensor 资料
硬件工程师会给你一份 Sensor Datasheet,你需要确认以下关键参数:
| 参数 | 说明 |
|---|---|
| I2C 地址 | 通信地址(如 0x3c) |
| 电源电压 | AVDD、DVDD、IOVDD 各多少 V |
| MCLK 频率 | 主时钟,通常是 24MHz 或 19.2MHz |
| 上电时序 | 各电源、Reset、Standby 的先后顺序 |
| 分辨率 & 输出格式 | 如 48M、RAW10/RAW16 |
| 驱动类型 | RAW Sensor(高通/MTK 通用)还是 YUV/USB |
小白提示:大部分主流 Sensor(Sony IMX系列、Samsung S5K系列、OmniVision OV系列)网上有现成的 DTS 配置可以参考,不用从零写。
🔌 第二步:配置设备树(DTS/DTBO)
这是最核心的一步。MTK 的 Camera DTS 通常在:
1 | kernel-common/arch/arm64/boot/dts/mediatek/ |
2.1 定义 Sensor 节点
1 | &kd_camera_hw1 { |
2.2 上电时序(Power Sequence)
上电时序错了,Sensor 初始化一定失败。MTK 用 cam_pm_seq 控制:
1 | // 上电顺序:IOVDD → AVDD → DVDD → MCLK → RST |
含义:
<type delay voltage>— type 0=IOVDD, 1=AVDD, 2=DVDD, 3=MCLK, 4=RST
2.3 编译验证
1 | ./build.sh -k camera # 仅编译内核 Camera 部分 |
🧩 第三步:添加 Kernel Sensor Driver
MTK 的 sensor driver 放在:
1 | kernel-common/drivers/misc/mediatek/imgsensor/src/common/v1_1/ |
每个 Sensor 一个文件夹,包含:
1 | imx582_mipi_raw/ |
3.1 驱动入口要点
驱动需要实现 MTK 定义的接口:
1 | // 必须实现的回调 |
小白提示:不要自己从头写驱动。找一颗同厂商、同系列的 Sensor 驱动做模板,改寄存器地址和初始化序列即可。比如 IMX586 → IMX582 改动很小。
3.2 注册到 Makefile
确保 Kconfig 和 Makefile 里有你的 sensor:
1 | # Makefile |
⚙️ 第四步:HAL 层配置
MTK Camera HAL3 的配置文件:
1 | vendor/mediatek/proprietary/custom/<project>/hal/camera/ |
4.1 camera_project.xml
1 | <CameraModule> |
4.2 sensorlist.cpp
1 | static sensor_info sensor_list[] = { |
🔍 第五步:校准数据(OTP/EEPROM)
Sensor 出厂时烧录了 AF(自动对焦)位置、AWB(白平衡)参数、LSC(镜头阴影校正) 等数据。
如果校准数据没读到,画面可能:偏色、对焦不准、四周暗角。
配置入口:
1 | vendor/mediatek/proprietary/custom/<project>/hal/eeprom/ |
1 | static EepromInfo_T eeprom_info = { |
🧪 第六步:验证与调试
Kernel 侧
1 | # 查看 Camera 设备是否注册 |
HAL 侧
1 | # 在 adb shell 中测试 |
常见问题
| 症状 | 大概率原因 |
|---|---|
| I2C 读不通 | IOVDD 电压不对 / I2C 地址填错 |
| Probe 失败 | 上电时序错 / MCLK 没起 |
| 出图全绿/全粉 | 数据线接错 / MIPI 通道数不对 |
| 画面偏色 | 校准数据没读到 / 白平衡增益不对 |
| 无法对焦 | AF 驱动没配置 / OTP 没读到 |
| 预览卡顿 | FPS 配高了 / 分辨率设置不对 |
📋 快捷自查清单
当你拿到一个新项目配置 Camera 时,按这个顺序检查:
1 | ✅ I2C 地址是否正确(注意左移 1 位) |
推荐资源
- MTK Camera Customization Guide — MTK 官方文档(需账号)
- Android Camera HAL3 官方文档 — 理解 HAL 架构
- GitHub 搜索
imx582_mipi_raw等 sensor 驱动 — 参考别人是怎么写的 - CSDN 搜索
MTK Camera 移植— 中文实战经验多
参考链接: