本文基于触觉智能RK3576开发板Purple Pi OH2演示,为大家整理一套摄像头异常排障全链路指南!上篇主要讲解排查链路和录像花屏条纹常见问题环节。
开篇
相机问题的本质是:数据流走到哪一段断了、或哪一段处理不对。本文把摄像头链路从头到尾讲透——链路五段定位、画面质量(花屏/偏色)、3A与tuning、帧率瓶颈、再到高频问题清单,一套方法查到底。本文基于触觉智能linux sdk和真实链路整理。
五段职责与“活着”的证据分别对应:传感器→MIPI→CIF→ISP(3A)→VPSS→应用。无图查链路、花屏偏色查链路质量与 3A、帧率低查带宽与处理负载。
下面五个问题域覆盖了相机排障的绝大部分场景。
摄像头黑屏无图?五段链路逐一排查
相机无图不是"驱动坏了"一句话能概括的。从传感器到出流,中间隔着MIPI物理链路、CIF 采集、ISP三A、应用取流五段,每一段都有自己"活着"的证据。逐段确认,就能把问题圈死在某一环。
本SDK(Purple Pi OH2)的摄像头链路在板级dtskernel-6.1/arch/arm64/boot/dts/rockchip/ido-evb7609-v1a-cam.dtsi里是这么连的:
排查就从"哪一段还活着"入手,工具链用 dmesg(看驱动 probe)、media-ctl(看链路拓扑,SDK 里rkisp_demo/setup_link.sh就是现成例子)、media_enquiry(external/camera_engine_rkaiq/media_enquiry/)。
1、逐段定位法
环节 | "活着"的证据 | 查什么 / 用什么工具 | ||
|---|---|---|---|---|
① 传感器 | dmesg 出现 imx415 probe 成功(读到 CHIP_ID 0x311A) | dmesg | grep -i imx415;i2c 地址/时钟/上电 GPIO 是否对(见下文 dts 字段) | ||
② MIPI 物理层 | csi2_dphy 状态正常,lane 数对(4-lane) | dts 里> ③ MIPI CSI2 | mipi0_csi2 probe、端口接好 | dmesg;media-ctl -p 看拓扑 |
④ CIF 采集 | /dev/video 节点存在、能出原始图 | ls /dev/video* /dev/media*;CIF 驱动 drivers/media/platform/rockchip/cif/ | ||
⑤ ISP/3A | rkaiq_3A_server 在跑、rkisp 出图 | pgrep rkaiq_3A;3A 起没起直接影响出图(见 04.03) |
2、第一段最容易出问题:传感器没probe
大部分"黑屏无图"卡在第①段——传感器根本没被驱动认出来。看 dmesg 里有没有 imx415 的 probe 报错,再对着 dts 查这几项(本板 ido-evb7609-v1a-cam.dtsi 的 imx415 节点):
dts 字段 | 本板实际值 | 对不上会怎样 |
|---|---|---|
compatible | "sony,imx415" | 与 drivers/media/i2c/imx415.c 的 of_match 对不上 → 驱动不 probe |
reg(i2c 地址) | 0x1a | 地址错 → i2c 读不到传感器 ID → probe 失败 |
clocks / xvclk | CLK_MIPI_CAMERAOUT_M0 | 传感器主时钟没给 → 不工作 |
reset/pwdn-gpio | gpio3 RK_PB7 / RK_PC0 | 上电时序/复位不对 → 传感器读不到 ID |
power-domains | RK3576_PD_VI | VI 电源域没上 → 采集全段不工作 |
imx415驱动probe时会读芯片ID(IMX415_REG_CHIP_ID 0x311A,见drivers/media/i2c/imx415.c)——读到表示probe 成功,读不到就在dmesg 报错。所以dmesg是最快的分水岭。
3、实操排查命令
# 1. 传感器 probe 了吗dmesg | grep -iE"imx415|camera|rkcif|rkisp"|tail-30# 2. 设备节点在吗ls/dev/video* /dev/media*# 3. 链路拓扑(media-ctl 打印,参考 rkisp_demo/setup_link.sh 的连法)media-ctl -d /dev/media0 -pmedia-ctl -d /dev/media1 -p# 4. 3A 服务在跑吗(没跑可能黑屏)pgrep -a rkaiq_3A || /etc/init.d/S40rkaiq_3A start
五段问题定位里,先确认第①段传感器有没有probe(dmesg见imx415成功/报错),再沿MIPI → CIF → ISP 往上看节点与拓扑;3A服务(S40rkaiq_3A 启动 rkaiq_3A_server)没跑也会直接导致无图。链路每一段都有 dmesg/节点/拓扑三层证据可查,逐段排除就能定位。
出图花屏/条纹/偏色?问题在哪个环节
有画面但"花"和"没画面"是两回事。花屏、条纹、偏色各有各的出身:花屏多半是 MIPI/时钟/带宽,条纹常是曝光/行场同步,偏色基本是 3A/白平衡没干活。按"现象 → 环节"对号入座,很快能圈定。
相机出图链路从传感器 → MIPI → CIF → ISP/3A → VPSS 到应用。画面质量异常,根因基本落在三处:MIPI 物理/采集、ISP 处理、3A 是否在跑。下面把常见现象和它们对应的高概率环节列成一张表。
现象 → 环节映射表
现象 | 高概率环节 | 排查方向 |
|---|---|---|
整屏花屏 / 横条纹乱闪 | MIPI 链路 / CIF 采集 | data-lanes 与传感器输出是否一致、时钟 lane/信号质量、CIF 时序与带宽(见 04.04) |
画面有规律横条纹 (明暗相间) | 曝光 / 3A / 供电 | 是否闪光/频闪(市电 50Hz 频闪常见);曝光时间与行频关系;3A 的 AE 是否在收敛 |
偏绿 / 偏红 / 整体偏色 | ISP 白平衡 / 3A | rkaiq_3A_server 跑没跑、AWB 是否生效(见 04.03) |
画面半边暗/全黑半边亮 | 传感器曝光/复位 / MIPI lane 部分丢失 | 检查 4 条 lane 是否都通;曝光模式 |
花屏且伴随无图 (时有时无) | MIPI 信号不稳定 | 信号完整性:线缆/连接器/速率,必要时降 lane 速率或降分辨率验证 |
最容易踩的两个"花屏"坑
坑1:data-lanes 与传感器实际输出不一致
dts 里传感器 port 的>传感器实际工作模式(几 lane 输出)对上。lane 数不匹配是花屏最常见原因之一。
坑2:xvclk / 主时钟频率不对
传感器靠 dts 里 clocks = <&cru CLK_MIPI_CAMERAOUT_M0>(本板 imx415)提供主时钟。时钟频率不对(驱动里通常按芯片要求配 24/27MHz 等),传感器输出的帧时序就会乱,表现就是条纹/花屏。用 /sys/kernel/debug/clk/clk_summary 看 xvclk 实际频率(见 02.05)。
偏色先看 3A 跑没跑
画面整体偏绿/偏红,十有八九是白平衡(AWB)没生效。RK3576 的 3A 是用户态 rkaiq_3A_server(启动脚本 S40rkaiq_3A,日志走 logger -t rkaiq_3A):
pgrep -a rkaiq_3A# 3A 在不在/etc/init.d/S40rkaiq_3A start# 没跑就拉起logread | grep rkaiq_3A |tail# 3A 日志(openwrt) / journalctl -t rkaiq_3A(systemd)
3A 没跑时,画面通常是"原始直通"状态,白平衡、曝光都不收敛,表现就是偏色/过曝/暗。这也解释了为什么 rkaiq_3A_server 是相机能正常出图的前置条件。
画面质量类问题按"现象对号入座":花屏乱闪查 MIPI(data-lanes/时钟/信号)、规律条纹查曝光与频闪、偏色查 3A/AWB。其中>下篇为大家带来3A调试、相机帧率、高频问题清单等排障