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 映射一致,否则会出现“能出图但串流”的现象。
三、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 还是内存侧先饱和。
五、一个可复用的带宽核算表
| 链路环节 | 典型上限 | 本例需求 | 余量判断 |
|---|---|---|---|
| GMSL 解串器输出 | ≈ 8 Gbps | 7.78 Gbps | 不足,需调整 |
| CSI 4-lane | ≈ 8 Gbps | 7.78 Gbps | 不足,需调整 |
| PCIe Gen3 x1 | ≈ 7.88 Gbps | 视采集卡而定 | 4K 仅 1 路 |
| USB 3.0 控制器 | ≈ 3.2 Gbps | YUY2 3 路约 3 Gbps | 接近上限 |
| LPDDR5 内存 | 数十 GB/s | 通常不是首瓶颈 | 需看 ISP 并发 |
把这张表填满,就能在选型阶段判断方案是否可行。若某行余量不足,优先调整该行的输入:降低帧率、改用 RAW8/MJPEG、减少同组路数,或把部分摄像头移到另一组 CSI/PCIe/USB 控制器上。带宽规划的本质不是追求单点最快,而是让整条链路每一段都留有可观测、可回退的余量。