做机器人或自动驾驶的,十有八九都遇到过这个场面:

板子上电,线也插了,i2cdetect 扫过去——要么一片空白,要么只能看到解串器自己;好不容易 I2C 通了,一抓帧就是 request timed out after 2500 ms。相机前面那块玻璃安安静静,什么也没发生。

GMSL 相机"点不亮"最磨人的地方在于:它不是一颗芯片,而是一条四级链路——

Sensor(摄像头) → Serializer(串行器) → 同轴线 → Deserializer(解串器) → MIPI CSI → SoC

任何一级没起来,现象都一样:没图。你盯着最末端的 timeout,问题却可能在最前端的一个上电时序、一根没到位的时钟。盲目改设备树、反复刷固件,往往折腾一晚上还在原地。

这篇给你一套我一直在用的分层排查法:从电源、时钟,到 link 锁定、I2C 透传,再到 CSI 出流,从前往后一级一级确认,前一级不 OK 绝不查下一级。走完一遍,不管相机起没起来,你都能精确定位卡在哪。

四级链路,五个检查点

先把总图放这。链路本身是四级(Sensor → 串行器 → 同轴线 → 解串器 → SoC),但排查时我们把它拆成五个检查点,沿数据流向从前往后依次确认:

① 电源/上电时序 → ② 参考时钟 → ③ Link 物理锁定(LOCK) → ④ I2C 透传 → ⑤ CSI 出流/抓帧

在这里插入图片描述
图 1 GMSL 相机链路与五级排查点总览(全文主线,后面每章展开一级)

图里有两点值得先记住:

  • 每级检查点都只依赖前一级:LOCK 依赖时钟与电源,I2C 透传依赖 LOCK,CSI 出流依赖透传(才能配置远端)。
  • I2C 有两段:SoC 到解串器是本地总线(不需要链路),到串行器 / Sensor 必须"借道" GMSL 控制通道——这就是第四级要解决的"透传"。看不到 sensor 时,先分清卡在哪一段。

排查铁律:从前往后,一级一确认;前一级不 OK,绝不查下一级。 链路没锁定不调 CSI,I2C 不通不碰 sensor 寄存器——越级排查正是"折腾一晚上还在原地"的根本原因。

五级分层排查法怎么用

级别查什么一句话判据
0 动手前线缆 / 供电 / 模式 strap先怀疑线和电,再怀疑寄存器
1 电源各路电压、上电时序、复位释放量得到、时序对
2 时钟参考时钟、sensor MCLK示波器上有、频率对
3 链路LOCK 引脚 / 状态位稳定为高(不抖)
4 控制I2C 透传、地址映射i2cdetect 能看到 sensor
5 数据CSI lane / settle / VC / DT、抓帧v4l2 出帧、无报错

后续会按这五级逐级展开,其中第三级(链路 LOCK)是最容易卡住、也最值得先讲透的一级。

GMSL 是什么:一代与二代的差别

GMSL(Gigabit Multimedia Serial Link)是 Maxim(现 ADI)的 SerDes 接口:把 MIPI CSI-2 视频打包成高速串行信号,通过一根同轴线(coax)或屏蔽双绞线(STP)传出十几米,再在主控侧还原成 CSI-2。它同时在这根线上承载一条双向控制通道,让 SoC 的 I2C 能"够到"线另一头的串行器和 Sensor。

在这里插入图片描述
图 2 GMSL1 与 GMSL2 的通道结构对比

对排查最有影响的一点差别:GMSL2 的反向控制通道是独立的 187.5 Mbps 全双工通道,不与视频分时复用。 这意味着链路锁定后 I2C 透传即可用,与视频是否配置无关——你可以先把控制通路完全调通,再专心调视频。

世代代表器件前向速率反向控制典型用途
GMSL1MAX9271/9275(串)、MAX9286(解)1.5 / 2.5 Gbps低速反向通道,与视频分时环视、后视(YUV/RAW)
GMSL2MAX9295(串)、MAX9296 / MAX96712(解)6 Gbps187.5 Mbps 独立全双工前视高分辨率、多摄聚合
GMSL3新一代器件12 Gbps 级进一步增强更高分辨率 / 带宽聚合

适用范围与阅读方法

  • 器件:以 MAX9295 / MAX9296 + coax 为例;MAX96712、MAX96717 等仅是路数与封装差别,分层不变。
  • 平台:SoC 侧以 Jetson(NVCSI / VI / V4L2)为例,其他平台的"CSI 接收端"角色完全对应。
  • TI FPD-Link(953/954、913/914):排查分层完全一致,仅寄存器名不同,可对号入座。

注意:文中寄存器地址 / 位定义给出的是公开资料中的典型值(如 MAX9296 的 REG3 0x0013 bit6 LOCKED)。不同版本 datasheet 可能有出入,动手前以你手头版本的 datasheet 与内核驱动为准。

术语表

术语含义
Ser / DesSerializer 串行器(模组侧)/ Deserializer 解串器(主控侧)
GMSLMaxim(ADI)千兆多媒体串行链路,用车规同轴线代替短距 MIPI 走线
LOCK链路物理锁定:解串器 CDR 从线路数据中恢复出比特时钟并与串行器对齐
CDRClock Data Recovery,时钟数据恢复,LOCK 的物理本质
POCPower Over Coax,同轴线上同时传输供电,一根线搞定电 + 视频 + 控制
line rate线路速率,GMSL 链路的比特率,两端必须配置一致
透传(pass-through)SoC 的 I2C 事务经 GMSL 控制通道转发到远端器件的过程
地址重映射(remap)把远端器件的 I2C 地址翻译成另一地址,避免多路冲突
pipe解串器内部的链路→CSI 通道(含 DT 过滤、VC 映射等配置)
strap器件上电时由引脚电平锁定的硬件配置(模式、默认地址等)
MCLK / XCLK送给 Sensor 的主时钟,通常 19.2 / 24 / 25 / 27 MHz
settle timeD-PHY 高速接收端的采样建立窗口,不合适会采不到同步头
VC / DTCSI-2 的虚拟通道号 / 数据类型码(如 0x1E=UYVY、0x2C=RAW12)
syncpt timeoutJetson VI 等不到帧起始的典型报错,即"抓帧超时"

写在最后

GMSL 相机点不亮,本质不是"难",而是链路长、故障点被同一句"没图"掩盖住了。记住这条主线:

电源 → 时钟 → LOCK → I2C 透传 → CSI,从前往后,一级一确认。

绝大多数"死相机",都死在前三级别。下一篇我们专门啃最核心的第三级——Link 物理锁定 LOCK:锁不上时到底该按什么顺序查。


「具身视觉时代」,专注车载 / 机器人相机(GMSL · MIPI · ISP · Jetson/Thor)硬核实战。


Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐