跳到主要内容

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 有哪些单元;本章定 对外引脚/协议/电气 与机器人集成。

核心问题

  1. 多路相机走 MIPI-CSI 还是 GMSL2/FPD-Link?
  2. 对标 Thor PVA、Horizon 24 路 ISP、IQ10 传感栈?
  3. EtherCAT/CAN 在 SoC 还是外扩 MCU/FPGA?
  4. 安全岛 与 NPU 硬件隔离 做到哪一级?
  5. PTP(IEEE 1588) 硬件时间戳如何实现?

2. 需求洞察(具身驱动)

场景IO 诉求来源
人形 6×RGB+腕部6–8 路 相机;同步Figure 类 01
1kHz 伺服EtherCAT 或 CAN-FD10 章
VLA 感知30–60Hz ISP→NPU 零拷贝09/25
功能安全岛硬隔离;急停独立04/28

硬性指标:

  • ≥4 路 MIPI-CSI-22×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 ThorMIPI+GMSL;PVA;编解码GPIO;25GbEPTP;硬件 trigger外设PVA+DeepStream 生态绑 NVIDIA
Horizon 征程 6P24 路 ISP 集成车载以太;ASIL-D MCUgPTP岛内 MCU感知密度非人形主战场
Qualcomm IQ10Spectra ISP;Dragonwing 传感车规 CAN/以太车规 sync混合关键性车规文档新
Intel RealSenseUSB 深度(外设)软件开发友好非量产零拷贝
LeRobot 默认USB/UVCUSB 电机软件简单非硬实时
Beckhoff/EtherCATEtherCAT 1kHz+DC syncSIL 外设工业标准外扩成本
我们(目标)MIPI+可选 GMSL 桥岛侧 ECAT/CANPTP HW04 岛开放栈需载板设计

| 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 → NPU0-copyfd 泄漏(09)
多相机 sync≤1μs skewViT batch 错位

3.1f ros2_control ↔ 岛 IO 映射(ADR-124,承接 10)

ros2_control 接口硬件路径频率
JointStateEtherCAT TxPDO1kHz
JointTrajectoryEtherCAT RxPDO1kHz
VLA action chunkIREE VM → Linux10–30HzLinux
estopGPIO→岛 MCU硬线岛 L3

红线:1kHz 闭环 不得经 Linux DDS;VLA 输出 经共享内存/岛 mailbox 到 ros2_control(10 ADR-059)。

3.1g Figure / GR00T 相机拓扑对比

系统相机数接口同步我们 SKU
GR00T Thor ref3–4 RGBMIPI+GMSLPTPEdge-Std
Figure Helix6–8定制(估计 GMSL)hw triggerEdge-Pro/B
LeRobot dev1–2USB软件M1 demo only

3.1a 相机接口深度对比

接口距离/拓扑优势劣势我们
MIPI-CSI-2板内/短 FPC低延迟;Thor 原生线长短主路径
GMSL2/FPD-Link15m+ 同轴人形/车多相机deserializer高端 SKU
USB3 UVC5mLeRobot 开发CPU 拷贝仅研发

Thor PVA(第三代):可编程视觉加速 —— 我们对标 ISP + DSA 预处理算子(17) 或轻量 DSP(04)

3.1b 实时现场总线对比

总线周期拓扑岛/SoC我们(10 章)
EtherCAT≤1ms菊花链岛 MCU 主站 推荐✅ 硬 1kHz
CAN-FD1–4ms总线岛或 Linux轻量臂
PROFINET/TSN1ms 级以太Linux+TSN工厂可选
ROS2 DDSms–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 QoSArteris04 NoC
L3 物理岛独立 MCU+SRAM+IOHorizon 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/chronyms非感知关键
EtherCAT DC<1μs伺服轴同步

PTP 与 EtherCAT DC 的共同思想:两者都靠硬件打时间戳 + 测量并补偿传播延迟,把分布式节点校准到同一时钟基准。区别是 PTP 面向以太网多相机的采样对齐(FSIN 触发时刻一致 → ViT batch 不错位),EtherCAT DC 面向伺服轴的动作对齐(SYNC0 时刻一致 → 多轴同步)。软件 NTP 只能到 ms 级,根本原因是时间戳打在协议栈软件层,被内核调度抖动污染——这再次印证「确定性来自硬件时间戳」。


4. 候选方案

候选实时成本生态小结
A. MIPI×4 + 岛 EtherCAT + PTP544建议方案
B. GMSL 8 路 + 同 A534人形旗舰
C. USB 相机 + Linux ECAT253M1 demo only

5. 关键权衡:确定性从哪里来(新增)

把前文四条子线索汇成一张「确定性预算」表——这是本章工程判断的浓缩:

确定性来源机制换来的确定性若省略的后果
物理岛(L3)独立 MCU+SRAM+IO,电源域隔离控制回路时间预算不被 NPU/Linux 侵占AI 尖峰负载抢占 → 控制周期漂移
岛侧 EtherCAT DCOn-the-Fly + 分布式时钟多轴同步 jitter <1µs走 Linux DDS → 尾部 ms 级抖动
中断驱动 + RTOS硬件中断 + WCET 分析事件响应有确定上界轮询 → 上界随负载漂移
PTP 硬件时间戳硬件打戳 + 延迟补偿多相机 skew ≤1µs软件 NTP → ms 级偏差,ViT batch 错位
Lockstep 双核逐周期比对计算故障可检测(fail-detect)静默错误 → 安全回路失效

红线复述(承接 §3.1f):1kHz 闭环不得经 Linux DDS;VLA 只在 10–30Hz 侧向岛 mailbox 投递 action chunk。Freedom from Interference 是把上表五项在硬件上钉死的总纲——NPU 再忙,也偷不到岛的 SRAM 端口、中断线与 ECAT MAC。


6. 结论与 ADR

  1. 量产:MIPI + ISP → dmabuf(09);旗舰 GMSL 桥
  2. 1kHz:EtherCAT/CAN 进安全岛;Linux 只规划。周期 1ms、jitter ≤10–100µs 级(p999),靠 EtherCAT DC + 岛内中断驱动保证。
  3. PTP 硬件时间戳 为多相机 ViT(17) 前置条件。
  4. L3 物理隔离 + NoC QoS(04);安全等级对标 ISO 13849 PL d / IEC 62061 SIL 2(机器人级,非车规 ASIL),以官方认证为准
  • ADR-123 传感器:≥4 MIPI;ISP→dmabuf;可选 GMSL;对标 Thor PVA 拓扑。
  • ADR-124 实时 IO:岛侧 EtherCAT 主站 或 CAN-FD;引脚/PHY 随载板冻结;DC 分布式时钟为多轴同步默认。
  • ADR-125 时间同步:PTP hw + 可选 FSIN;≤1μs 感知 skew。
  • ADR-126 安全岛硬件:独立 MCU/电源/IO;FFI 对 NPU/Linux;急停 硬件路径;旗舰可选 lockstep 双核满足 PL d/SIL 2。

深入思考

下面三题每题先给题干,再用 <details> 折叠一份图文并茂的参考答案。建议先合上答案自己想 3 分钟,再展开对照。

思考题 1:EtherCAT DC 同步为何能到 µs 级 jitter

1kHz 伺服回路的周期是 1ms。结合 3.1b-1 节的 On-the-Fly 处理与分布式时钟,论证:为什么 EtherCAT DC 能把多轴之间的同步 jitter 压到 ≤10–100µs 级(目标 <1µs),而「周期 1ms」这个数字本身并不能保证同步?算一遍:如果同步抖动允许到一整个周期(1ms),对伺服意味着什么?

展开参考答案(含 DC 时钟校准图 + 算一遍)

结论:1ms 只规定了「多久发一次命令」(采样率),完全不约束「各轴在同一拍里动作时刻是否对齐」(同步性);EtherCAT DC 把「动作时刻」从「命令到达时刻」中剥离出来,交给校准到同一纳秒基准的分布式时钟在 SYNC0 上同时触发,同步 jitter 于是只取决于时钟校准残差(µs 级),而与帧何时到达无关。

用具体数字算一遍:

  1. 周期 vs jitter 是两个量:1kHz → 周期 T = 1ms,这只是「每 1ms 交换一次 PDO」。同步性问的是「同一拍里,3 号轴和 1 号轴的实际动作时刻差多少」。
  2. 若靠「命令到达」触发(无 DC):帧穿过菊花链,每站硬件转发延迟约数百 ns,3 站累计传播差可达 µs 甚至更多;再叠加主站协议栈抖动,轴间动作时刻差可以到几十 µs~ms 级。若这个差允许到一整个周期 1ms,意味着 1 号轴这一拍动了、3 号轴要到下一拍边缘才动 —— 对需要多关节协调的抓取/行走,这等于「关节不同步」,轨迹跟踪直接崩坏。
  3. DC 把触发从「到达」改成「绝对时刻」:测量并补偿各站传播延迟后,所有从站本地时钟对齐到同一基准(残差通常 <100ns~1µs);之后各轴统一在 SYNC0 的同一个绝对时刻锁存输出。此时轴间同步 jitter ≈ 时钟校准残差,与帧何时到达完全解耦
  4. 结果:同步 jitter 从「帧传播 + 协议栈抖动(几十 µs~ms)」降到「时钟残差(<1µs)」。工程口径写 ≤10–100µs 级是留了余量的保守目标,理想 DC 实现可达 <1µs。

一句话:1ms 定采样率,DC 定同步性;确定性来自校准过的硬件时钟,而非「周期够短」。这正是 §2 把周期与 jitter 拆成两个正交量的原因。

思考题 2:安全岛 lockstep 如何提供硬件级冗余

结合 3.1c-1 节的锁步机制,解释:为什么「两个核跑同一份指令再比对」能提供硬件级冗余?为什么从核要延迟几个周期执行而不是严格同拍?这套机制满足 ISO 13849 PL d / IEC 62061 SIL 2 的哪一环?

展开参考答案(含 fail-detect 因果链图)

结论:单核算错是「静默错误」,系统无从知道结果不可信;lockstep 用第二个核算同一件事、逐周期比对,把「计算出错」变成「可检测的显式故障」——检出即进安全态。这解决的是功能安全里最关键的一环:fail-detect(先能发现故障),它是 fail-safe/fail-operational 的前提。从核延迟执行,是为了打掉「共因瞬态同时算错两核」的漏检。

对比:有无 lockstep

维度单核(无 lockstep)双核 lockstep
瞬态故障后果静默错误,结果照常送 IO比较器检出不一致
诊断覆盖率(DC)低,依赖软件自检高,硬件逐周期比对
共因瞬态无法区分延迟执行打散,同一物理扰动落在两核不同阶段
对安全等级难达 PL d/SIL 2 的类别 3/4 结构提供双通道 + 高 DC,支撑 PL d/SIL 2

为什么从核延迟几周期:若两核严格同拍执行,一个共因瞬态(如一次电源纹波或单粒子同时打中两核逻辑上对应的位)可能让两核同时算出同样的错误结果 → 比较器看到「两核一致」→ 漏检。让从核延迟固定 N 个周期,同一物理扰动到达时两核处于不同执行阶段,产生的错误不再对称,比较器就能捕获 → 消除共因漏检。

满足 PL d/SIL 2 的哪一环:ISO 13849 达 PL d 通常要求类别 3/4(单一故障不导致失去安全功能 + 故障可被检出),核心是诊断覆盖率(DC)要高。Lockstep 提供的正是「计算通道的高 DC + 双通道结构」这一环;再配合独立看门狗、硬线急停,构成 PL d/SIL 2 的硬件底座。(具体等级判定以官方安全评估报告与认证为准。)

回链:这与 §3.1c 的 L4「双通道冗余」、§3.1f 的 estop 硬线路径、§5「Lockstep 让计算故障可检测」一脉相承——冗余的目的不是让系统更快,而是让故障可见、可安全收场

思考题 3:实时中断 vs 轮询的延迟确定性

岛内 MCU 要响应 EtherCAT SYNC0 与急停 GPIO。结合 3.1c-2 节,分析:为什么硬实时回路选中断驱动而非轮询?二者差异的关键是「平均延迟」还是「尾部延迟的确定上界」?为什么通用 Linux 的轮询循环即使平均很快,也不适合 1kHz 硬闭环?

展开参考答案(含中断 vs 轮询延迟分布图)

结论:实时控制要的不是「大多数时候快」,而是「每一次都不超过某个上界」。轮询的响应延迟等于轮询周期抖动,负载一变上界就漂移;中断驱动的响应延迟是可分析、可认证的确定上界(最坏中断延迟)。硬实时选中断,正是为了这个「确定的最坏上界」,而非平均值。

对比:轮询 vs 中断

维度轮询 Polling实时中断
响应延迟本质轮询周期抖动中断延迟(硬件仲裁 + 临界区)
平均延迟可以很低(循环紧)很低
最坏上界(p999)≈ 一个轮询周期,随负载漂移确定、可分析(WCET)
CPU 占用持续空转查询事件才唤醒,省功耗
适合场景极简、专用、无其他任务的紧环有多任务、需确定上界的硬实时

算一遍差异:假设轮询循环周期 20µs、平均响应 10µs——看起来很快。但若循环里偶尔插入一段 200µs 的其他工作,某次事件的响应就被推到 200µs+,p999 尾部炸到毫秒不确定。中断驱动则不同:事件一来立刻打断,只要关中断临界区被严格约束(RTOS 通常保证最坏中断延迟在十几 µs),每一次都落在这个上界内 —— 对 1kHz(每 1ms 必须完成一次采样-计算-输出)的硬闭环,「每一次都不超上界」才是硬指标。

为什么 Linux 轮询不行:通用 Linux 内核调度、非抢占区间、缺页/中断风暴都会污染尾部;即便平均延迟很低,p999 尾部无界。PREEMPT_RT 能大幅改善尾部,但物理隔离的岛 + RTOS(如 Zephyr)+ 中断驱动才是把最坏延迟钉在确定上界上的最强手段。

回链:这与 §2「实时不是快,而是准时」、§3.1f「1kHz 闭环不得经 Linux DDS」、§5「中断驱动 + RTOS 提供确定上界」完全对齐——确定性的敌人是尾部抖动,而中断驱动 + 物理岛是压制尾部的硬件答案


附:信息来源

  • NVIDIA Jetson Thor PVA/MIPI;Horizon 征程 6 ISP;IEEE 1588;EtherCAT(含 DC 分布式时钟、On-the-Fly)。[公开]
  • ISO 13849(PL)、IEC 62061(SIL)机器人功能安全标准;Zephyr RTOS 安全岛实践。[公开]
  • 04/09/10/25 章。[内部]