06 外设与实时 IO/安全岛洞察(硬件层)
- 章节编号:06
- 所属层:H 硬件层(传感器/现场总线/安全岛硬件;与 04 SoC 集成、09 dmabuf、10 分域衔接)
- 关联 ADR:ADR-123(传感器接口:MIPI/GMSL/ISP)、ADR-124(实时 IO:EtherCAT/CAN/TSN)、ADR-125(时间同步:PTP/硬件触发)、ADR-126(安全岛硬件与 Freedom from Interference)
- 上游依赖:01(多相机/1kHz)、04(安全岛/ISP)、09(零拷贝)、10(ros2_control/岛)
学习目标
- 前置知识:读过 04 章(SoC 集成:知道安全岛、ISP、NoC QoS 是 SoC 内部单元)与 09 章(dmabuf 零拷贝)、10 章(分域调度与 ros2_control)。了解「机器人要在同一块板子上同时跑高算力感知与硬实时控制」这个基本矛盾即可。无需嵌入式驱动开发经验。
- 学完产出:① 能画出一条完整的感知数据路径(MIPI/GMSL → ISP → NV12 dmabuf → NPU)与一条控制数据路径(EtherCAT DC → 岛 MCU → ros2_control),说清两条路径为什么必须物理隔离;② 能用「周期 vs jitter」两个正交量解释为什么控制总线光有 1kHz 周期不够,还必须约束 p999 抖动到 µs 级;③ 能说清 EtherCAT 分布式时钟(DC) 靠什么把全链路轴同步 jitter 压到 µs 级,而普通以太网做不到;④ 能解释安全岛 lockstep(锁步) 如何用「两个核算同一件事再比对」提供硬件级冗余,以及 ISO 13849 PL d / IEC 62061 SIL 2 这类机器人安全等级(区别于车规 ASIL)对硬件的最低要求;⑤ 能对比实时中断与轮询两种 IO 触发范式在延迟确定性上的根本差异。
- 阅读姿势:盯住一条主线——「感知要吞吐、控制要确定性,而这两者在同一块硅上天生冲突」。本章所有设计(dmabuf 零拷贝、岛侧 EtherCAT 主站、PTP 硬件时间戳、Freedom from Interference)本质都在回答同一个问题:如何让高算力、非确定性的 AI 负载,永远不去偷走硬实时控制回路的时间预算。
1. 范围与目标
本章定义 传感器接入、ISP/视觉加速、实时现场总线、硬件 时间同步、安全岛硬件边界。04 章定 SoC 有哪些单元;本章定 对外引脚/协议/电气 与机器人集成。
核心问题
- 多路相机走 MIPI-CSI 还是 GMSL2/FPD-Link?
- 对标 Thor PVA、Horizon 24 路 ISP、IQ10 传感栈?
- EtherCAT/CAN 在 SoC 还是外扩 MCU/FPGA?
- 安全岛 与 NPU 硬件隔离 做到哪一级?
- PTP(IEEE 1588) 硬件时间戳如何实现?
2. 需求洞察(具身驱动)
| 场景 | IO 诉求 | 来源 |
|---|---|---|
| 人形 6×RGB+腕部 | 6–8 路 相机;同步 | Figure 类 01 |
| 1kHz 伺服 | EtherCAT 或 CAN-FD | 10 章 |
| VLA 感知 | 30–60Hz ISP→NPU 零拷贝 | 09/25 |
| 功能安全 | 岛硬隔离;急停独立 | 04/28 |
硬性指标:
- ≥4 路 MIPI-CSI-2 或 2×GMSL 汇聚 8 路。
- ISP/vis-accel 输出 YUV/NV12 → dmabuf 直连 NPU(09)。
- PTP ≤1μs 硬件 timestamp(多相机)。
- 控制总线:周期 1ms(1kHz),jitter ≤10–100µs 级(p999)。
为什么把 jitter 单列:早期口径写「控制总线 ≤1ms jitter」在 1kHz(周期 1ms)语境下等于没有约束——抖动允许到一整个周期,意味着某一拍的数据可以晚到几乎一整个周期才到达,伺服环节根本无从保证确定性。正确表述必须把周期(1ms,决定采样率)与 jitter(周期之间起始时刻的抖动,决定确定性)拆成两个正交量:周期 1ms 定「多快」,jitter ≤10–100µs 级(且要看 p999 尾部而非均值)定「多稳」。这也是本章后文反复强调「实时不是快,而是准时」的根源。
3. 技术现状与趋势(2025–2026)
3.1 TOP 级机器人传感/IO 方案深度对比
| 平台 | 相机/视觉 | 实时 IO | 时间同步 | 安全 | 优势 | 劣势 |
|---|---|---|---|---|---|---|
| NVIDIA Jetson Thor | MIPI+GMSL;PVA;编解码 | GPIO;25GbE | PTP;硬件 trigger | 外设 | PVA+DeepStream 生态 | 绑 NVIDIA |
| Horizon 征程 6P | 24 路 ISP 集成 | 车载以太;ASIL-D MCU | gPTP | 岛内 MCU | 感知密度 | 非人形主战场 |
| Qualcomm IQ10 | Spectra ISP;Dragonwing 传感 | 车规 CAN/以太 | 车规 sync | 混合关键性 | 车规 | 文档新 |
| Intel RealSense | USB 深度(外设) | — | 软件 | — | 开发友好 | 非量产零拷贝 |
| LeRobot 默认 | USB/UVC | USB 电机 | 软件 | — | 简单 | 非硬实时 |
| Beckhoff/EtherCAT | — | EtherCAT 1kHz+ | DC sync | SIL 外设 | 工业标准 | 外扩成本 |
| 我们(目标) | MIPI+可选 GMSL 桥 | 岛侧 ECAT/CAN | PTP HW | 04 岛 | 开放栈 | 需载板设计 |
| Isaac NITROS 4.4 | Gxf+GPU zero-copy | ROS2 桥 | CUDA event | 应用层 | NITROS 拓扑参考 | 绑 CUDA | | Figure Helix(估计) | 6+ RGB onboard | 定制总线 | 硬 sync | S0 岛 | 全 onboard | 闭源 |
3.1e 感知数据路径:硬件 → 09 dmabuf → 25 ROS(ADR-123)
MIPI/GMSL → ISP(HW) → NV12 dmabuf ──► NPU(ViT, 17)
│
└──► dsa_ros_inference (25) ──► VLM condition
PTP timestamp 写入 buffer metadata → 多相机 batch 对齐(17)
| 阶段 | 延迟预算 | 失败模式 |
|---|---|---|
| ISP → dmabuf | ≤2ms/帧 | CPU memcpy 回退 |
| dmabuf → NPU | 0-copy | fd 泄漏(09) |
| 多相机 sync | ≤1μs skew | ViT batch 错位 |
3.1f ros2_control ↔ 岛 IO 映射(ADR-124,承接 10)
| ros2_control 接口 | 硬件路径 | 频率 | 域 |
|---|---|---|---|
JointState 读 | EtherCAT TxPDO | 1kHz | 岛 |
JointTrajectory 写 | EtherCAT RxPDO | 1kHz | 岛 |
VLA action chunk | IREE VM → Linux | 10–30Hz | Linux |
estop | GPIO→岛 MCU | 硬线 | 岛 L3 |
红线:1kHz 闭环 不得经 Linux DDS;VLA 输出 经共享内存/岛 mailbox 到 ros2_control(10 ADR-059)。
3.1g Figure / GR00T 相机拓扑对比
| 系统 | 相机数 | 接口 | 同步 | 我们 SKU |
|---|---|---|---|---|
| GR00T Thor ref | 3–4 RGB | MIPI+GMSL | PTP | Edge-Std |
| Figure Helix | 6–8 | 定制(估计 GMSL) | hw trigger | Edge-Pro/B |
| LeRobot dev | 1–2 | USB | 软件 | M1 demo only |
3.1a 相机接口深度对比
| 接口 | 距离/拓扑 | 优势 | 劣势 | 我们 |
|---|---|---|---|---|
| MIPI-CSI-2 | 板内/短 FPC | 低延迟;Thor 原生 | 线长短 | 主路径 |
| GMSL2/FPD-Link | 15m+ 同轴 | 人形/车多相机 | 需 deserializer | 高端 SKU |
| USB3 UVC | 5m | LeRobot 开发 | CPU 拷贝 | 仅研发 |
Thor PVA(第三代):可编程视觉加速 —— 我们对标 ISP + DSA 预处理算子(17) 或轻量 DSP(04)。
3.1b 实时现场总线对比
| 总线 | 周期 | 拓扑 | 岛/SoC | 我们(10 章) |
|---|---|---|---|---|
| EtherCAT | ≤1ms | 菊花链 | 岛 MCU 主站 推荐 | ✅ 硬 1kHz |
| CAN-FD | 1–4ms | 总线 | 岛或 Linux | 轻量臂 |
| PROFINET/TSN | 1ms 级 | 以太 | Linux+TSN | 工厂可选 |
| ROS2 DDS | ms–10ms | 以太 | Linux | 禁止 1kHz 闭环 |
3.1b-1 EtherCAT「On-the-Fly」处理与 DC 分布式时钟(新增)
EtherCAT 之所以能在一条标准百兆/千兆物理链路上做到 1kHz 周期 + µs 级轴同步,靠的是两项与普通以太网截然不同的机制:
- On-the-Fly 处理(数据帧飞行中读写):主站发出一个以太网帧穿过菊花链上所有从站;每个从站的 ESC(EtherCAT Slave Controller)在帧流经硬件时就地读走属于自己的 TxPDO、写入自己的 RxPDO,不做「接收整帧→CPU 解析→再转发」的存储转发。整条链路的往返因此只有硬件转发延迟(每站数百纳秒级),而非 N 个从站各自协议栈的累加延迟。这是周期能压到 1ms 以内的物理前提。
- DC 分布式时钟(Distributed Clocks):主站选定第一个支持 DC 的从站作为参考时钟,通过测量帧到达各站的传播延迟,把每个从站本地时钟校准到同一个纳秒级基准;之后各从站不再等「命令到达」才动作,而是在**约定的同一个绝对时刻(SYNC0 信号)**同时锁存/输出。轴与轴之间的同步误差因此与「帧何时到」解耦,只取决于时钟校准残差——这就是 EtherCAT DC 能把多轴同步 jitter 压到 <1µs 的根因(见 3.1d)。
对比要点:普通以太网(乃至 ROS2 DDS over UDP)的到达时刻由协议栈调度、内核网络栈、GC/中断抖动共同决定,尾部延迟(p999)可以飙到毫秒级;EtherCAT DC 把「动作时刻」从「消息到达」中剥离出来,交给校准过的硬件时钟,才实现了确定性。这与本章开篇「实时不是快,而是准时」完全一致。
3.1c 安全岛硬件(承接 04 ADR-015)
| 隔离层级 | 机制 | 代表 | 我们 |
|---|---|---|---|
| L1 软件分区 | Linux cgroups | 通用 | 不足 |
| L2 总线防火墙 | NoC QoS | Arteris | 04 NoC |
| L3 物理岛 | 独立 MCU+SRAM+IO | Horizon ASIL-D;Zephyr 岛 | ADR-126 建议方案 |
| L4 双通道冗余 | 双 MCU 投票 | 车规 | 旗舰可选 |
Freedom from interference:NPU 不得 阻塞岛 SRAM/中断/ECAT MAC —— NoC 硬 QoS + 独立电源域(05)。
3.1c-1 Lockstep 锁步:硬件级冗余的核心机制(新增)
L4 之所以叫「双通道冗余」,关键实现是 lockstep(锁步):两个结构相同的处理核执行完全相同的指令流、逐周期比对输出。
逐组件读这张图:
- 两核同流:主核与从核跑同一条指令流、同一份数据,理论上任何时刻输出应当逐位相同。
- 延迟错开(delayed lockstep):从核比主核延迟固定几个周期执行。这是为了对抗共因瞬态(如电源纹波、单粒子翻转 SEU 同时打中两核同一位)——错开时序后,同一个物理扰动落在两核的不同执行阶段,不再产生「两核同时算错同样的错误结果」的漏检。
- 比较器:逐周期比对两核输出;一旦不一致,说明至少一个核出了故障,立即触发安全态(如硬线急停或切换到降级控制)。锁步的价值在于:它把「计算出错」从「静默错误」变成了「可检测的显式故障」——这正是功能安全要求的核心(fail-safe / fail-operational 的前提是先能 fail-detect)。
机器人安全等级 ≠ 车规 ASIL:本站目标是机器人本体,适用 ISO 13849(PL,Performance Level) 与 IEC 62061(SIL,Safety Integrity Level) 而非道路车辆的 ISO 26262 ASIL。急停/防护回路通常要求 PL d / SIL 2 量级(危害较高但非最高)。达到 PL d 一般需要:双通道结构(类别 3/4)、故障检测覆盖率(DC)达标、以及合理的 MTTFd。Lockstep 岛核 + 独立看门狗 + 硬线急停 是满足这一等级的典型硬件底座。(roadmap 相关等级以官方认证与安全评估报告为准。)
3.1c-2 实时中断 vs 轮询:延迟确定性的分野(新增)
岛内 MCU 处理 EtherCAT SYNC0、急停 GPIO、看门狗喂狗,面临一个基础选择:中断驱动还是轮询。二者的差异不在「平均快慢」,而在「延迟的确定性(尾部抖动)」。
- 轮询(polling):CPU 在一个循环里反复读状态位,「有没有事件」靠不停查。响应延迟 = 「上一次检查到下一次检查」的周期抖动,最坏情况可达一整个轮询周期;若循环里混入其他任务,尾部延迟进一步恶化且难以界定上界。
- 实时中断(RT interrupt):事件到来时硬件主动打断 CPU,跳转到中断服务例程(ISR)。响应延迟 = 中断延迟(interrupt latency),由硬件中断控制器 + 当前是否处于关中断临界区决定,可以给出确定的上界(通常 µs 到十几 µs 级,取决于 MCU 与 RTOS)。
关键在于确定性:实时控制要的不是「大多数时候很快」,而是「每一次都不超过某个上界」。中断驱动能把最坏情况延迟收敛到一个可分析、可认证的确定上界(WCET/最坏中断延迟),而轮询在负载变化时上界会漂移。这也是为什么 1kHz 硬实时回路跑在岛内 RTOS(如 Zephyr)+ 中断驱动上,而不是跑在通用 Linux 的轮询循环里——PREEMPT_RT 能改善 Linux 的尾部,但物理隔离的岛 + 中断驱动才是确定性的最强保证(见 §5)。
3.1d 时间同步
| 方案 | 精度 | 用途 |
|---|---|---|
| IEEE 1588 PTP(hw) | <1μs | 多相机 |
| FSIN 硬件触发 | 帧级 | 立体/多目 |
| NTP/chrony | ms | 非感知关键 |
| EtherCAT DC | <1μs | 伺服轴同步 |
PTP 与 EtherCAT DC 的共同思想:两者都靠硬件打时间戳 + 测量并补偿传播延迟,把分布式节点校准到同一时钟基准。区别是 PTP 面向以太网多相机的采样对齐(FSIN 触发时刻一致 → ViT batch 不错位),EtherCAT DC 面向伺服轴的动作对齐(SYNC0 时刻一致 → 多轴同步)。软件 NTP 只能到 ms 级,根本原因是时间戳打在协议栈软件层,被内核调度抖动污染——这再次印证「确定性来自硬件时间戳」。