1. 课程导入与工程全景
在智能驾驶、工业机器视觉与多目环视系统中,TI Jacinto 系列 SoC(如 TDA4VM、TDA4VH、DRA829)常被用作核心计算平台。它内部集成了多路 CSI-2 接收控制器(CSI-RX)、图像信号处理器(ISP)、硬件图像处理加速器(VISS、LDC、MSC)以及多核异构计算单元(A72、R5F、C7x/MMA)。本课程要解决的核心工程问题,就是如何让多颗摄像头通过 MIPI CSI-2 接口稳定地把图像数据送入 Jacinto,并在时间维度上保持同步,最终形成可供感知算法使用的多路图像流。
典型应用场景与系统级挑战
以常见的 4 路环视 + 1 路前视为例:4 颗 200 万像素摄像头(1920×1080@30fps)分别安装在车身前、后、左、右,1 颗 800 万像素前视摄像头(3840×2160@30fps)用于远距感知。所有摄像头通过 CSI-2 差分对连接到 Jacinto 的 CSI-RX 端口,经解串器(如 DS90UB960 四路解串器)汇聚后进入 SoC。系统级挑战集中在四个方面:
- 带宽与通道分配:每路 1080p30 RAW10 数据率约 1.5 Gbps,800 万像素约 4.5 Gbps,需合理分配到 CSI-RX 的虚拟通道(VC)与数据通道(Lane)。
- 时间同步:多摄像头若不同步,环视拼接会出现运动物体错位,前视与环视融合会出现时序偏差。同步依赖外部触发信号(FSYNC)与解串器的帧同步机制。
- 数据完整性:CSI-2 的 CRC、ECC 校验,以及解串器链路锁定状态,直接影响图像是否可用。
- 软件栈协同:从 Linux V4L2 驱动、TI 的 Capture 节点、DMA 搬运到 ISP 处理,任一环节配置错误都会导致丢帧或花屏。
系统数据通路全景
下图给出从摄像头到内存的完整信号链与数据流关系。左侧为摄像头与解串器,中间为 Jacinto 内部 CSI-RX 与处理链,右侧为 DDR 中的图像缓冲区。图中同时标注了同步信号 FSYNC 的走向,以及各环节的关键参数(分辨率、帧率、VC 编号、Lane 数)。
学习路径与实验平台搭建
本课程按“接口基础 → 驱动配置 → 同步机制 → 多路调试 → 性能优化”的路径展开。建议的学习顺序是:先理解 CSI-2 协议与 Jacinto CSI-RX 寄存器模型,再动手配置设备树与 V4L2 管线,接着实现 FSYNC 同步,最后进行多路并发压力测试与带宽调优。
实验平台推荐配置如下:
| 项目 | 推荐配置 | 说明 |
|---|---|---|
| 开发板 | TI TDA4VM EVM 或 SK-TDA4VM | 具备完整 CSI-2 接口与解串器子板 |
| 摄像头 | IMX390(2MP)或 OX08B40(8MP) | 支持外部触发同步输入 |
| 解串器 | DS90UB960-Q1 | 四路 CSI-2 汇聚,支持 VC 映射 |
| SDK | TI Processor SDK Linux / RTOS 8.x+ | 包含 V4L2 驱动与 Capture 示例 |
| 调试工具 | 示波器、I2C 读写工具、v4l2-ctl | 用于验证 FSYNC 与链路状态 |
i2cdetect 确认解串器地址可见,再通过 v4l2-ctl --list-devices 检查 CSI-RX 节点是否注册成功。若节点缺失,优先排查设备树中 CSI-RX 与解串器的 I2C 地址、GPIO 复位引脚和时钟配置。
关键参数与判断依据
在开始编码之前,需要明确几个工程判断依据。第一,链路是否锁定:解串器的 0x1C 寄存器(具体地址依型号而定)可读取每路 RX 的锁定状态,锁定后对应位为 1。第二,帧是否到达:通过 CSI-RX 的中断计数或 V4L2 的 VIDIOC_DQBUF 返回时间戳判断。第三,同步是否有效:用示波器同时抓取 FSYNC 信号与摄像头的帧有效信号(FV),观察两者相位差是否稳定在固定值。第四,带宽是否足够:计算总数据率并与 CSI-RX 端口上限对比,例如 TDA4VM 单端口 4 Lane 在 1.5 Gbps/Lane 下总带宽约 6 Gbps,若前视 4.5 Gbps 加环视 1.5 Gbps 超过上限,就需要拆分到两个 CSI-RX 端口。