4. 多摄像头接口与带宽规划

多摄像头平台能否稳定跑起来,往往不取决于“摄像头能不能点亮”,而取决于数据从传感器到内存这条链路上,每一段是否都留有余量。Jetson 上常见的接入方式有 MIPI CSI-2 直连、GMSL/FPD-Link 解串后转 CSI、USB UVC 摄像头以及 PCIe 采集卡。它们最终都要把图像写进同一块内存,再交给 ISP、VIC 或 GPU 处理。因此带宽规划必须按“链路分段核算、取最窄环节”的思路来做,而不是只看摄像头标称分辨率。

一、先算清单路摄像头的原始数据率

规划的第一步是把图像格式换算成比特率。以 RAW10 为例,每个像素占 10 bit,但 CSI-2 按字节打包,实际传输效率约为 80%。单路数据率可近似为:

单路带宽 ≈ 宽 × 高 × 帧率 × 每像素bit数 ÷ 打包效率
例:1920×1080 @30fps RAW10
= 1920 × 1080 × 30 × 10 ÷ 0.8
≈ 777.6 Mbps ≈ 0.78 Gbps

若换成 3840×2160 @30fps RAW10,则约为 3.11 Gbps;若再叠加 4 路,就是 12.4 Gbps。这个数字必须与 CSI 通道的 lane 速率、解串器输出能力、内存带宽逐项比对。注意:ISP 输出 YUV422 时每像素 16 bit,但通常已经过压缩或降帧,不能简单用 RAW 数据率替代。

二、CSI 通道分配:lane 数与虚拟通道

Jetson Orin 系列通常提供多组 CSI 接口,每组可配置为 2 lane 或 4 lane。以 D-PHY 为例,单 lane 速率常见为 1.5~2.5 Gbps/lane。4 lane 配置下理论带宽约 10 Gbps,扣除协议开销后可用约 8 Gbps。因此:

  • 1080p30 RAW10 单路约 0.78 Gbps,4 lane 可挂 8 路以上,但受虚拟通道数限制;
  • 4K30 RAW10 单路约 3.11 Gbps,4 lane 最多挂 2 路,且需确认解串器是否支持聚合输出;
  • 若使用 2 lane,则 4K30 单路已接近上限,不建议再复用。

当多路摄像头共享一组 CSI 时,必须使用虚拟通道(Virtual Channel, VC)区分数据流。CSI-2 规范支持 VC 0~3,共 4 个。若 4 路以上共用一组 CSI,就需要解串器或 FPGA 先做时分复用或聚合,否则无法区分。实际配置中,设备树里要为每路 sensor 指定 channel-id 或 vc-id,并与解串器寄存器中的 VC 映射一致,否则会出现“能出图但串流”的现象。

多摄像头接入链路与带宽瓶颈定位 Camera 0 1080p30 RAW10 Camera 1 1080p30 RAW10 Camera 2 4K30 RAW10 Camera 3 4K30 RAW10 GMSL 解串器 MAX9296 / 9295 VC 映射 0~3 输出 4-lane CSI 聚合带宽 ≈ 8 Gbps 瓶颈点 A Jetson CSI 接口 4-lane D-PHY 2.5 Gbps/lane 可用 ≈ 8 Gbps VC 0~3 瓶颈点 B CSI-2 内存 / ISP / VIC LPDDR5 带宽 读写共享 ISP 吞吐上限 多路并发竞争 瓶颈点 C 写入 总需求:0.78+0.78+3.11+3.11 ≈ 7.78 Gbps 解串器上限 8 Gbps → 余量仅 2.8% 建议降帧或改 2 路 4K

三、PCIe 与 USB 控制器的带宽边界

PCIe 采集卡常见为 x1、x4 两种。PCIe Gen3 x1 单向约 8 GT/s,实际可用约 985 MB/s;Gen3 x4 约 3.94 GB/s。若用 x1 采集卡接 4 路 1080p30 YUV422,每路约 1920×1080×30×2 ≈ 124 MB/s,4 路约 497 MB/s,尚在 x1 范围内;但若接 4K30,单路就约 497 MB/s,x1 只能接 1 路。因此 PCIe 采集卡选型时,先看总带宽,再看通道数。

USB 侧更需谨慎。USB 3.0 理论 5 Gbps,实际可用约 400 MB/s;USB 3.1 Gen2 约 900 MB/s。UVC 摄像头通常输出 MJPEG 或 YUY2,MJPEG 压缩后带宽低,但 CPU 解压开销大;YUY2 未压缩,1080p30 单路约 124 MB/s,USB 3.0 控制器下挂 3 路已接近上限。若多路 UVC 共享同一控制器,还会因等时传输调度产生抖动,表现为丢帧而非单纯降速。规划时应把同一控制器下的所有 UVC 摄像头带宽相加,并预留 20% 余量。

四、GMSL 解串器的聚合与瓶颈

GMSL2 单链路下行速率可达 6 Gbps,但解串器输出到 Jetson 的 CSI 接口才是关键。以 MAX9296 为例,它支持 4 路输入、2 路 CSI 输出,每路 4 lane。若 4 路 1080p30 RAW10 聚合到一组 4-lane CSI,总需求约 3.11 Gbps,余量充足;但若其中两路是 4K30,总需求约 7.78 Gbps,已逼近 8 Gbps 上限。此时即使解串器本身能收,CSI 输出也会成为瓶颈,表现为高分辨率路数丢帧或整组异常。

实际调试中,可用 v4l2-ctl --list-devices 确认设备节点,用 v4l2-ctl -d /dev/video0 --get-fmt-video 查看格式,再通过 sudo cat /sys/kernel/debug/bpmp/debug/clk/vi/clk_rate 观察 VI 时钟。若发现某路帧率不达标,先单独测试该路,再逐路叠加,定位是解串器、CSI 还是内存侧先饱和。

规划口诀:先算单路,再算聚合;先看解串器输出,再看 CSI lane,最后看内存与 ISP。任何一段余量低于 20%,都应降帧、降分辨率或改用压缩格式。

五、一个可复用的带宽核算表

链路环节典型上限本例需求余量判断
GMSL 解串器输出≈ 8 Gbps7.78 Gbps不足,需调整
CSI 4-lane≈ 8 Gbps7.78 Gbps不足,需调整
PCIe Gen3 x1≈ 7.88 Gbps视采集卡而定4K 仅 1 路
USB 3.0 控制器≈ 3.2 GbpsYUY2 3 路约 3 Gbps接近上限
LPDDR5 内存数十 GB/s通常不是首瓶颈需看 ISP 并发

把这张表填满,就能在选型阶段判断方案是否可行。若某行余量不足,优先调整该行的输入:降低帧率、改用 RAW8/MJPEG、减少同组路数,或把部分摄像头移到另一组 CSI/PCIe/USB 控制器上。带宽规划的本质不是追求单点最快,而是让整条链路每一段都留有可观测、可回退的余量。