您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



文章 咨询 工具 课程  
会员   
   
OCSMP 认证培训
5月27-28日 线上直播
基于模型的数据治理与数据中台
5月19-20日 北京+线上
网络安全原理与实践
5月21-22日 北京+线上
     
   
 订阅
车载通信进化史:从 CAN(1986)到以太网,一辆车里的 6 个技术“彩蛋”
 
作者:机器人不喝咖啡
  21   次浏览      5
 2026-5-6
 
编辑推荐:
本文以“找彩蛋”的比喻,生动地拆解了一辆2025年智能电动车里埋藏的各种车载通信技术和软件架构,希望对你的学习有帮助。
本文来自于机器人不喝咖啡,由火龙果软件Alice编辑,推荐。

有一种游戏叫找彩蛋。我们去拆一辆 2025 年的智能车,找找里面藏着几颗不同年代的彩蛋——有的来自 1986 年,有的昙花一现就消失了,有的你以为认识,打开却发现完全不是那回事。

开场:复活节找彩蛋

有一种游戏叫找彩蛋。

孩子们在草地上、灌木丛里、沙发垫子底下——到处翻找昨晚大人偷偷藏好的彩蛋。

这个传统的逻辑有点反直觉:彩蛋不是今天才放的,是早就藏好的,等你去找。找到的感觉不是"接收礼物",而是**"发现了一个一直在那里、但你从来没注意过的东西"**。

今天,我们去找一辆车里的彩蛋。

拆开一辆 2025 年的智能电动车,你会发现:里面至少藏着 六颗来自不同年代的彩蛋 ——最古老的那颗埋于 1986 年,有的昙花一现就消失了,有的你以为认识它,打开发现里面完全不是那回事。

它们不在同一个地方,用不同的材料,说不同的语言,但此刻都活在同一辆车里。

找彩蛋的规则很简单:你不知道下一颗在哪,但找到了你会懂。

让我们出发。

🥚 彩蛋 #1 :发现于发动机舱。外壳朴素,年份是 1986。以为是废弃旧物——拿起来发现还热的。

第一幕:CAN —— 1986 年,博世解了一道线束题

最古老的蛋,为什么还没腐烂?

每次聊到 CAN(Controller Area Network),总有人说:"这不是 80 年代的东西吗?都 2025 年了还在用?"

CAN 不是因为"没人去替换"才活到现在的。它活到现在是因为,在"低成本、高可靠、小数据量"这个交叉点上, 至今没有更好的替代方案 。

一根线引发的血案

1980 年代,汽车电子化刚起步。一辆车里开始出现发动机控制器、ABS 控制器、仪表盘控制器……它们之间需要交换信息。

最直觉的方案: 点对点连线 。A 要跟 B 说话?拉一根线。A 还要跟 C 说话?再拉一根。

问题来了:如果车里有 10 个控制器,两两互联需要 45 根线。20 个控制器?190 根线。而且每根线都有重量、都占空间、都可能断。

线束重量在当时已经成为工程师的噩梦——一辆中高配车的线束可达 40 公斤以上,而且每多一根线都意味着更多的空间占用、更高的装配复杂度和更多的潜在故障点。

博世的工程师看着这堆意大利面一样的线束,做了一个决定:**不拉专线了,所有人共用一条"总线"**。

CAN 的三件套

CAN 总线拓扑与仲裁机制

CAN 的核心可以压缩成三个要素:

1. 两根线,差分信号

CAN 只需要两根双绞线:CAN_H(高)和 CAN_L(低)。信号不是"有电压 / 没电压",而是两根线之间的 电压差 。为什么?因为如果一根线被电磁干扰了,另一根也会被同样干扰——差值不变。这就是差分信号的抗干扰能力,在发动机旁边、在点火线圈隔壁,这种能力是生死攸关的。

两根线的两头各焊一个 120Ω 的终端电阻,防止信号反射。硬件上就这么多——一颗 CAN transceiver 芯片(几块钱),两根线,两个电阻。成本极低。

2. 广播 + 仲裁:一条路上谁先走?

CAN 是广播式的——任何节点发的消息,总线上所有节点都能收到。每条消息不写"发给谁",而是带一个 Message ID 。接收方自己决定"这条消息跟我有没有关系"。

但一条总线只有一条路,两个节点同时想说话怎么办?

CAN 的仲裁机制堪称精妙:所有节点同时开始发送自己的 Message ID, 逐位比较 。CAN 协议规定"0"(显性位)能覆盖"1"(隐性位)。如果某个节点发出"1"但在总线上读回来是"0"——说明有个 ID 更小(优先级更高)的节点在同时发送——它就自动退出,等下一轮。

整个过程不需要中央调度,没有"主节点",纯靠物理层电气特性实现。 谁的 ID 小,谁先说。天然确定,无需协商。

3. 短小精悍:8 个字节的数据帧

一帧 CAN 消息最多携带 8 个字节 的数据。

8 个字节能干什么?"转向角度 = 13.7°,时间戳 = 0x3F2A"。够了。车辆控制信号大多就是这样的短消息——一个状态值,一个控制指令,一个传感器读数。

8 字节的限制不是缺陷,是 设计 。消息越短,占用总线的时间越短,留给其他节点说话的时间就越多。在 1Mbps 的带宽下,CAN 总线可以同时服务几十个节点,每个节点每 10ms 发一条消息,绰绰有余。

在实际工程里,CAN 长什么样?

理解了原理,我们来看看工程师日常跟 CAN 打交道的真实场景。

打开任何一辆车的 CAN 通信定义,你会看到一个叫 DBC 文件 (Database CAN)的东西。它是整条总线的"字典"——定义了每个 Message ID 对应什么含义、8 个字节里哪几个 bit 是转向角、哪几个 bit 是车速、单位是什么、偏移量是多少。

比如:Message ID 0x123,Byte 2-3 = 转向角,分辨率 0.1°,偏移量 -780°。收到 0x123 后,取出 Byte 2-3 的值乘以 0.1 再减 780,就得到了真实转向角度。

这张 DBC 表就是 CAN 世界的"合同"。 所有节点都拿着同一份合同工作。

为什么要强调这个?因为如果你做过 HIL 测试,你一定接触过一个概念叫 Restbus 仿真 ——把一个 ECU 从整车上拆下来,单独放到测试台架上测。问题来了:这个 ECU 期望从总线上收到其他几十个 ECU 发来的消息(车速、挡位、灯光状态……),但台架上只有它一个。

怎么办? 用测试设备按照 DBC 文件的定义,模拟整条总线上所有其他 ECU 的消息。 这就是 Restbus 仿真——"Rest"就是"剩余的"意思。你在模拟被测 ECU 之外的整个"剩余世界"。

DBC 文件定义得越清楚,Restbus 仿真就越精确。如果 DBC 文件有错、有遗漏——你的 HIL 测试结果就不可信。这就是为什么在车载通信中, 接口定义的质量直接决定了测试的质量 。

CAN 的定位

所以,CAN 的本质是什么?

CAN 是一套用最少的硬件(两根线 + 一颗芯片)、最简单的规则(广播 + 仲裁)、在最恶劣的环境下(发动机舱)实现的多节点可靠通信方案。

它是车载通信的"普通话"——几乎所有 ECU 都会说,从最便宜的车窗控制器到最贵的域控制器。2025 年,全球每年生产的汽车里,平均每辆车有 5-10 条 CAN 总线。不是因为没有更新的技术,而是因为大量控制场景就是"8 个字节、10ms 一次"——CAN 恰好是这个需求的最优解。

后来出了个 CAN FD (Flexible Data-rate)——把数据段从 8 字节扩展到 64 字节,数据段速率可达 5-8Mbps,量产中常见 2-5Mbps(仲裁段仍为 1Mbps,"Flexible"正是指这个切换)。核心机制不变,只是把"快递包裹"从信封升级成了小纸箱。对于那些需要传更多数据但还不到 Ethernet 级别的场景(动力控制、ADAS 数据下发、诊断标定),CAN FD 刚好补位。

💡 接下来的彩蛋怎么看? 车载通信的所有演进,本质上在三件事之间做权衡: 带宽 (一次能传多少)、 确定性 (能不能保证几时到)、 成本 (一颗芯片多少钱)。CAN 赢在成本和确定性,带宽是短板。接下来每颗蛋,都是在这三个维度上做不同的取舍。

🥚 彩蛋 #2 :发现于底盘控制器深处。做工精良,限量版,找到的人很少。翻过来看——只在宝马 7 系的草坪里出现过。

第二幕:FlexRay —— 当"够用"不够了

技术上最完美的蛋,为什么是最孤独的一颗?

很多人以为 FlexRay 出现是因为 CAN 太慢了。

不完全对。CAN 最致命的问题不是慢,而是 不确定 。

一个关于"不确定性"的恐怖故事

想象一下:你在开一辆 线控转向 (Steer-by-Wire)的车。你的方向盘和车轮之间没有机械连接,全靠电信号。你打方向盘,控制器通过 CAN 总线给转向电机发指令。

正常情况下,这条指令 2ms 就到了。但是——

如果这一刻刚好有 5 个高优先级的节点同时在发消息,你的转向指令就得排队。可能等 5ms,可能等 10ms,可能更久。 你无法提前知道要等多久。

对于车窗升降来说,多等几毫秒无所谓。但对于转向和制动——你以 120km/h 的速度行驶,10ms 内车辆前进了约 33 厘米。在这个尺度上,任何不可预测的通信延迟都可能导致危险的轨迹偏差。

CAN 的仲裁机制保证了 高优先级消息一定能发出去 ,理论上也可以通过调度分析(schedulability analysis)算出最坏响应时间。但在实际工程中,当总线负载增高、节点增多时, 低优先级消息的时延会显著恶化,且系统级的时延验证变得复杂 。对于线控转向、线控制动这种需要 所有控制消息都在严格时间窗内到达 的场景,CAN 的优先级仲裁机制不够用了。

FlexRay 的解法:时间表

FlexRay TDMA 时间表

FlexRay 的核心思路可以这样理解:

用通信架构的术语说:CAN 是 event-triggered(事件触发) ——有事就说,没事闲着;FlexRay 是 time-triggered(时间触发) ——不管有没有事,到了你的时间你就说。这是车载通信范式的一次根本切换。

打个比方: CAN 像一个自由市场——谁嗓门大(优先级高)谁先说。FlexRay 像一张火车时刻表——每个节点在什么时间说话、说多久,提前排好。

FlexRay 把通信周期分成两段:

静态段(Static Segment) :时间被等分成固定的 slot,每个 slot 分配给一个特定节点。到了你的时间,你就发;不到你的时间,你就闭嘴。这就是 TDMA(Time Division Multiple Access) ——和 2G 手机网络的原理一样。

动态段(Dynamic Segment) :用一种类似 CAN 的优先级机制,处理那些不需要严格确定性的消息。

静态段保证了每条消息的最大延迟 可计算、可承诺 。如果你的转向指令被分配在第 3 个 slot,你就精确地知道它会在周期开始后的第 3 个 slot 到达——误差在微秒级别。

硬件代价

FlexRay 的带宽提升到 10Mbps (Classic CAN 的 10 倍),而且支持 双通道冗余 ——两条物理总线同时跑,一条断了另一条接管。

但这些能力都有代价:

  • 需要 专用的 FlexRay 控制器芯片 (不能复用 CAN 芯片)
  • 需要 专用的 FlexRay 收发器
  • 需要 精确的全局时钟同步 (所有节点必须对"现在是第几个 slot"达成共识)
  • 系统集成的复杂度远高于 CAN——时间表的设计本身就是一门学问

配一张时间表有多难?

CAN 不需要提前规划"谁什么时候说话"——仲裁机制自动搞定。但 FlexRay 要求你 在系统上线之前,把整张通信时间表排好 ——就像给一个 50 人的公司排共享会议室,每个人需求不同、时长不同、优先级不同,改了一个人的安排,其他人全得跟着调。在 HIL 测试中,这意味着你的测试设备必须 精确复现这张时间表 ——在错误的 slot 发消息,被测 ECU 会直接报通信故障。

FlexRay 的命运

FlexRay 赢了技术,输了经济学。

它主要在 BMW、奔驰等豪华品牌旗舰及高端平台 上量产(用于底盘控制和 ADAS),但从未像 CAN 那样普及。原因很简单:大多数量产车不需要 Steer-by-Wire,传统的 CAN + 机械冗余就够用了。而 FlexRay 的成本和复杂度,让普通车型望而却步。

FlexRay 是"高铁"——准时、冗余、可靠,但造价高,只在关键线路上跑。 到了 2020 年代,随着 CAN FD 带宽提升和 TSN Ethernet 逐步成熟,部分原本使用 FlexRay 的场景开始有了替代选项——但 FlexRay 在确定性实时通信上留下的范式(TDMA、时间触发、双通道冗余),深刻影响了后来所有车载通信的设计,包括 TSN 的很多思路都有 FlexRay 的影子。

这颗蛋藏得太深,只有愿意多挖一铲的人才能找到——而大多数车的草坪里,根本没有它的位置。

🥚 彩蛋 #3 :发现于域控制器旁边,长得和家里网线的蛋一模一样。但掂了掂——不对,轻了很多。打开一看,里面只有两根铜芯,不是八根。

第三幕:Automotive Ethernet —— 数据洪水来了

这颗蛋看起来认识,但不是你认识的那颗

当自动驾驶开始上车,工程师们面对了一个新问题:

一颗 800 万像素的车载摄像头,以 30fps 拍摄,每秒产生约 300-400MB 的 RAW 数据。一辆 L4 级别的自动驾驶车通常有 8-12 颗摄像头、若干颗激光雷达和毫米波雷达。加在一起,传感器每秒产生的数据量是 GB 级别 。

CAN?1Mbps。也就是每秒 125KB。

即使是 CAN FD 的 5-8Mbps、FlexRay 的 10Mbps——面对 GB 级的数据洪水,就像用吸管排大坝。

"那直接用以太网不就行了?办公室里的网线就是千兆的。"

思路对了,但 直接用消费级以太网,车会出大问题 。

两根铜芯 vs 家里网线的八根,差距在哪里?先记住这个问题,我们后面拆开来看。

消费级以太网进不了车的三个理由

理由一:线太多,太重。

标准的 Cat5/Cat6 网线用 4 对双绞线(8 根铜芯)。一辆车里如果有 20 个以太网节点,每个节点拉一根 Cat5 到交换机,光以太网线束就得几十公斤。车里每多一公斤,能耗就多一分。

理由二:电磁兼容(EMC)。

汽车不是办公室。发动机、电机、逆变器产生的电磁干扰强度,是办公环境的几十到上百倍。消费级以太网的物理层设计不是为这种环境准备的。

理由三:温度和振动。

车载电子要在 -40°C 到 +125°C 范围内工作,还要承受持续振动。消费级以太网的 RJ45 接头?上几次高速公路就松了。

Automotive Ethernet 的改造

汽车行业没有"重新发明以太网",而是 改造了物理层 ,保留了上层协议。

最核心的改变:

单对线(Single Twisted Pair) 。把 4 对双绞线压缩成 1 对 ——只用 2 根铜芯。这就是 100BASE-T1(100Mbps)和 1000BASE-T1(1Gbps)标准的物理层。线束重量和成本一下子降下来了。

怎么做到的?靠更先进的编码和回声消除技术——同一对线上同时收发数据(全双工),用 DSP 算法把发出去的信号从收到的信号里扣除。技术上比消费级以太网的 PHY 芯片更复杂,但换来了 少用 6 根铜芯 的巨大优势。

其他改造:

  • 非屏蔽线缆 (UTP)就能满足 EMC 要求(经过优化的编码和物理层设计)
  • 车规级 PHY 芯片 (如 Marvell 88Q2112、NXP TJA1103),工作温度 -40°C ~ +125°C
  • 车载以太网交换机 (如 NXP SJA1110),一颗芯片集成多端口交换 + CAN/LIN 网关

硬件画面:打开一辆特斯拉的域控制器,你会看到 PCB 上那些不起眼的小芯片旁边,引出的不再只是 CAN 的两根线,还有以太网的 T1 接口——同样只是两根线,但跑的速度是 CAN 的 1000 倍。

以太网的阿喀琉斯之踵

Automotive Ethernet 解决了带宽问题。但它有一个天生的缺陷:

标准以太网是 best-effort(尽力而为)的。

没有额外机制的以太网不承诺"你的数据包一定能在 X 毫秒内到达"。它会尽力而为,但如果网络拥堵,数据包可能被延迟、甚至被丢弃。在办公室传文件?无所谓。在 120km/h 的高速上传制动指令?要命。

这和 CAN 的问题不同但本质相近——都是 时延不确定 。而且在没有 QoS 机制的情况下,以太网甚至不如 CAN(CAN 至少有优先级仲裁保证高优先级消息一定能发出去)。

为此,IEEE 推出了 TSN(Time-Sensitive Networking) ——一系列标准(802.1AS 时间同步、802.1Qbv 时间门控调度、802.1CB 帧复制与消除……),试图给以太网装上"确定性时延"的能力。TSN 的思路和 FlexRay 有几分神似——用时间表来保证关键流量的时延上界。

但 TSN 在车载领域仍然在成熟过程中——标准还在演进,芯片支持还在完善,整车级别的 TSN 部署案例还不多。这也是为什么 Ethernet 至今没有完全替代 CAN 和 FlexRay 在安全关键场景中的地位 。

调试以太网:从总线到拓扑

CAN 的调试有一种"透明感"——接一个逻辑分析仪或 CANalyzer 到总线上,所有消息一览无余,因为它是广播的。哪条消息丢了、哪个节点不发了,一眼就能看出来。

以太网不一样。它是 交换式拓扑 ——每个节点通过交换机连接,消息只在必要的端口之间转发。你想抓取两个节点之间的通信?得在交换机上配置端口镜像(port mirroring)。想分析全车网络流量?需要在多个点同时抓包。

这意味着在 HIL 测试中,以太网的可观测性比 CAN 差很多。CAN 时代你用一根线就能"旁听"整条总线,以太网时代你需要专门的网络分析工具和策略。但反过来说,交换式拓扑也带来了一个好处——不同端口之间的流量互不干扰,不会像 CAN 那样因为总线拥堵而互相影响。

车载以太网是"高速公路"——带宽大、成本越来越低,是传感器数据和非安全关键通信的主力。但如果你需要"保证几点几分到达",它还在考驾照。

隐藏彩蛋:差点找到的那颗——光

🥚 隐藏彩蛋 :发现于 2001 年的宝马车载娱乐系统深处。材质特殊——不是铜,是塑料光纤。找到时以为是重大发现,结果发现它已经停产了。

有人真的试过用光

"既然铜线这么多麻烦,为什么不用光纤?"

这不是脑洞,是有人真的做过的事。

1998 年,一个叫 MOST (Media Oriented Systems Transport)的协议诞生了,物理层用的是 塑料光纤(POF,Plastic Optical Fiber) 。2001 年,它开始在奔驰、宝马的高端车型上量产,专门跑车内娱乐和音频系统。到了 2011 年,MOST 的最高版本带宽达到 150Mbps ——比 CAN 快 150 倍,而且光不受电磁干扰,在发动机舱旁边天然免疫。

这颗光纤蛋,一度看起来是终极答案。

光纤为什么输了

MOST 在量产高端车里用了将近十年,然后悄然淡出。不是因为光纤本身不好,而是三个致命伤让它输给了改良铜线:

第一,光传数据,但传不了电。

每根光纤旁边,必须跟一根铜线——数据走光,电走铜。你以为省掉了铜,结果还是要跑铜。光纤减掉的重量,供电铜芯给你加回来。线束变复杂了,不是更简单。

第二,MOST 是环形拓扑。

所有节点串成一个环,信号绕圈传。逻辑简单,但有一个致命弱点: 环上任何一个节点挂掉,整条链路断 ——就像一根项链断了一颗珠子,剩下的珠子全散了。

第三,时机不对。

2015 年前后,Automotive Ethernet 的单对铜线方案(100BASE-T1)完成 IEEE 标准化。带宽从 100Mbps 起跳,直接追上 MOST;物理层用了回声消除技术,两根铜芯做到全双工,EMC 表现满足车规。以太网庞大的芯片生态涌了进来——芯片量大价低,MOST 的专有芯片瞬间失去竞争力。

铜赢了——不是因为铜比光更好,而是"改良铜"的系统代价比"光 + 铜"低。

那么,车载以太网和你家网线到底有什么不一样?

刚才那颗"长得像家里蛋"的 Ethernet 彩蛋,现在来认真拆一下。

很多人以为车载以太网就是"把家里网线插进车里"。差得远。

维度 消费级以太网(家用) Automotive Ethernet(车用)
物理线对数 4 对双绞线(8 根铜芯) 1 对双绞线(2 根铜芯)
接口 RJ45 FAKRA / HSD / H-MTD(车规防水接口)
工作温度 0°C ~ 70°C -40°C ~ +125°C
PHY 芯片 消费级(几毛钱) 车规级(Marvell 88Q2112、NXP TJA1103),贵 3-5 倍
供电方式 PoE(4 对线同时供电) PoDL (单对线同时传数据 + 供电)
EMC 认证 家用/办公标准 汽车 EMC(CISPR 25、ISO 11452),严格 10 倍以上
设计寿命 3-5 年 15 年 / 15 万公里 + 振动冲击

一句话: 同样叫以太网,车用的换了芯子——线少了 6 根,接口换了,PHY 重新设计,工作温度扩大一倍,寿命要求翻三倍。

脑洞大开:如果我们把光推到极限?

光纤在车里输掉了,但这个问题值得在每个复活节重新问一遍——

脑洞 1:如果全车光纤化?

先算一笔线束账:一辆车有 2000-3000 米线束,重量 30-50 公斤。如果全换光纤,数据线确实轻了——但每根光纤旁边还要跟着一根供电铜芯。两根比一根重,连接器翻倍,维修复杂度翻倍。

你还消除了电磁干扰——但现代车规铜双绞线 + 好的物理层设计,EMC 已经够用了。光纤的这个优势,在这个时代不再是差异化。

结论: 全光纤化的极限,不是技术能不能做到,而是系统工程代价不值得。

脑洞 2:其实你车里已经有光通信了

激光雷达。

每秒发射几十万次激光脉冲,测量反射时间,得出距离。这不就是 单向光通信 吗?发出去的是激光,收回来的是信息。只不过信息是"这里有个障碍物,距离 15 米",而不是数据包。

延伸一下:车队行驶中,两辆车之间能不能用激光做点对点高速通信(FSO,Free Space Optical)?短距离 < 100 米,带宽可达 10Gbps,完全不需要铺线,不怕电磁干扰。在工业和军事领域,这已经是成熟方案。

难点只有一个:激光需要 精确对准 ——两辆以 100km/h 行驶的车,光束指向精度要求 < 0.1°。路上的颠簸、车道变换——这是一个让光学工程师头疼的问题。

脑洞 3:光子芯片会重写这一切吗?

Intel、台积电都在做 硅光子 (Silicon Photonics) ——把激光通信直接集成进芯片,芯片之间用光互联,不走铜。数据中心里,几十米的服务器间互联已经在用光子芯片了。

如果这个技术规模化进入汽车——"车内光通信"的形态会和 MOST 完全不同。不是光纤总线绕一圈,而是域控制器内部的芯片间直接用光说话,带宽几十 Gbps,延迟极低,功耗比铜互联低 30% 以上。

这个时间表现在还是"数据中心的事",但技术路径已经可见。

铜赢了 2001 年的那场比赛。但每颗彩蛋都值得被重新找一次——说不定这次翻开的是光。

前面三颗彩蛋——CAN、FlexRay、Ethernet——解决的都是同一类问题: 数据怎么在车里流动 。接下来这颗蛋解决的是另一个问题: 软件怎么在硬件上活下来 。

插曲:AUTOSAR —— 没有它,你连车都测不了

🥚 隐藏关卡彩蛋 :你把一个 ECU 从整车上拆下来,放到测试台架上——它为什么不会崩溃?因为有人偷偷给它造了一个假的世界。那个造假世界的规则,就藏在这颗蛋里。

在继续聊 SOA 和 SOME/IP 之前,我们需要先认识一个绕不开的角色: AUTOSAR (AUTomotive Open System ARchitecture)。

"AUTOSAR 不就是个标准文档吗?"

很多人对 AUTOSAR 的第一印象是:一堆 PDF、一个委员会、一套无聊的规范。如果你是写算法的工程师,可能觉得它离自己很远。

但我要告诉你一件事: 如果没有 AUTOSAR,整个仿真测试体系——SIL(在电脑上跑算法测试)、HIL(把真实硬件接到模拟环境里测试)——全部不成立。

这不是夸张。让我解释为什么。

2003 年以前:软件焊死在硬件上

2003 年以前,汽车软件的世界是这样的:

博世的发动机控制软件,跑在博世的芯片上,用博世自己的驱动层。大陆集团的 ABS 软件,跑在大陆的芯片上,用大陆自己的驱动层。算法代码和硬件驱动深度耦合——就像你用焊枪把软件焊死在了硬件上。

这带来两个致命问题:

问题一:换芯片就要改算法。 OEM 想把博世的算法移植到大陆的硬件上?改不动。每次换芯片、换供应商,上层软件都要大改。

问题二:不拆硬件就没法测软件。 你的控制算法直接调用硬件驱动,没有中间层。要测试这个算法?必须连着真实 ECU 硬件一起跑。想在电脑上做 SIL(Software-in-the-Loop)?做不到——因为你的代码里写满了对特定芯片寄存器的直接操作,PC 上根本跑不了。

AUTOSAR 的三层三明治

AUTOSAR 三层架构与 SIL 测试

AUTOSAR 的核心就是在"软件"和"硬件"之间 强行插入了一层标准化的中间层 :

底层:BSW(Basic Software) ——包括芯片驱动、操作系统、通信栈、诊断栈。这一层负责屏蔽硬件差异。换芯片?只换 BSW,上面不动。

中间:RTE(Runtime Environment) ——运行时环境。这是整个架构的关键接缝。所有软件组件之间的通信都通过 RTE 中转。你的算法不直接调 CAN 驱动,而是告诉 RTE"我要发一个转向角度信号"——至于这个信号走 CAN 还是走 Ethernet,RTE 来决定。

上层:SWC(Software Component) ——你的控制算法、状态机、业务逻辑都住在这里。SWC 不知道自己跑在什么芯片上,不知道数据是通过 CAN 还是 Ethernet 传来的——它只跟 RTE 打交道。

这三层结构不只是为了"移植方便"。它还创造了一个革命性的可能:你可以把 SWC 从真实硬件上"摘下来",放到 PC 上跑。

怎么做?把 BSW 换成一套在 PC 上运行的模拟替身(Mock BSW——"假装是真实硬件"的替身程序),RTE 接口不变,SWC 代码一行不改——你的控制算法就能在电脑上运行了。 这就是 SIL 测试的基础。

更进一步:在 HIL 测试中,你把真实 ECU 放到台架上,用 Restbus 仿真模拟它期望的 CAN 消息。ECU 内部的 AUTOSAR 通信栈负责接收消息、通过 RTE 分发给 SWC——整个流程和整车上完全一致。 AUTOSAR 的标准化通信接口,是 Restbus 仿真能够"骗过" ECU 的前提。 如果每个供应商的通信栈都是私有的,你的测试设备根本不知道怎么跟被测 ECU 说话。

Classic 和 Adaptive:两个时代

AUTOSAR 有两个版本,对应两个时代:

Classic AUTOSAR (2003 年至今)——绝大部分功能在出厂时确定,软件升级主要通过 4S 店或 UDS/DoIP 做整 ECU 级刷写。静态配置为主,通信方式以 信号级 为主(基于 CAN 矩阵的 DBC 世界),但也支持 TCP/IP 和一定程度的服务接口。适合确定性、硬实时的控制场景。

Adaptive AUTOSAR (2017 年至今)——像手机一样,可以下载新应用、推送新功能、运行时动态部署。通信方式是 服务级 的(基于 SOME/IP),适合自动驾驶、智能座舱这种需要灵活性的场景。

Classic 是砖墙——每块砖的位置在施工前就定好了,稳固但不能改。Adaptive 是乐高——模块化、可拆装、可动态重组。

两者不是替代关系,而是 共存 。一辆车里,底盘控制器跑 Classic,域控制器跑 Adaptive,两者通过网关通信。

AUTOSAR 的定位

AUTOSAR 不是一个产品,不是一段代码,而是一套"游戏规则"。 它规定了车载软件应该分成哪几层、每层之间怎么说话、数据格式是什么。遵守这套规则,三件事才成为可能:

  1. 换供应商 ——不同厂商的软件组件像乐高积木一样拼装
  2. 做仿真 ——SIL 能跑、HIL 能测、Restbus 能骗,全靠标准化接口
  3. 搞服务化 ——Adaptive AUTOSAR 里的 SOME/IP,正是下一个话题

🥚 彩蛋 #4 :发现于域控制器的软件层深处,没有实体形状,但能说话。它不发消息,它提供服务。敲了敲——对面说:"我在,你需要什么?"

第四幕:SOME/IP —— 从"发信号"到"调服务"

管道修好了,但没有快递公司

假设你已经在车里铺好了 Automotive Ethernet,每秒 1Gbps 的带宽管道已经就位。

但管道只是管道。数据怎么发?发给谁?对面的节点怎么知道你能提供什么服务?

这就像修好了高速公路,但没有快递公司——货物怎么编号、怎么寻址、怎么派送,一概不知。

在 CAN 的世界里,通信方式是 信号级 的:一张 DBC 文件(数据库文件)定义了"Message ID 0x123 的第 3-4 字节是转向角度,单位是 0.1°,偏移量 -780°"。所有节点都拿着这张表,看到 0x123 就知道怎么解析。这张表在编译前就定死了,运行时不会变。

这在 20 个 ECU、几十条消息的年代没问题。但当一辆车里有 几百个软件服务 、需要动态发现、动态调用、支持 OTA 更新呢?

你不能每加一个服务就改一次全车的"信号表"。你需要一种 面向服务 的通信方式。

SOME/IP 的三个核心能力

SOME/IP (Scalable service-Oriented MiddlewarE over IP)就是为这个需求设计的。它的核心可以压缩成三个能力:

1. 服务发现(Service Discovery)

在 CAN 的世界里,"谁提供什么信号"是写死在配置文件里的。在 SOME/IP 的世界里,服务提供者会在网络上 广播自己的存在 :"我是导航服务,我能提供路径规划,我的 IP 是 192.168.1.10,端口是 30000。"

客户端不需要预先知道服务在哪里。它只需要在网络上"喊一声":"谁能提供路径规划?"——然后自动发现并连接。

这就是 Service Discovery ——就像你打开手机蓝牙,能自动发现附近的耳机一样。

2. 请求/响应(Request/Response)

就像你打电话问路——你问,对方答,一来一回。客户端发请求:"请帮我规划从 A 到 B 的路径",服务端返回结果。如果你熟悉互联网开发,这和调一个 REST API 没有本质区别——只不过跑在车载以太网上,用的是序列化效率更高的二进制格式。

3. 事件通知(Event/Subscribe)

有些信息不适合"请求-响应"模式。比如"车速"——你不可能每 10ms 主动去问一次"现在多快"。更高效的方式是:车速服务发布事件,有兴趣的节点 订阅 。车速一变化,所有订阅者自动收到更新。

这就是 发布-订阅(Pub/Sub)模式 ——就像你关注了一个人的朋友圈,他发动态你自动看到,不需要每次手动去翻。如果你接触过 MQTT 或 Redis 的 pub/sub,是同一个思路。

SOME/IP 和 Ethernet 的关系

这里是一个很多人搞混的点:

SOME/IP 跑在 Ethernet 上,但 SOME/IP ≠ Ethernet。

Ethernet 是 OSI 模型的第 1-2 层(物理层 + 数据链路层)。SOME/IP 是应用层协议,它基于 TCP/UDP/IP 协议栈工作。

打个比方:

  • Ethernet = 高速公路
  • IP = 地址编码系统
  • TCP/UDP = 快递运输规则(可靠送达 vs 尽力送达)
  • SOME/IP = 快递公司的业务系统(下单、查件、通知送达)

你需要有高速公路才能开快递公司,但修了高速公路不等于你就有了快递公司。

SOME/IP 的定位

SOME/IP 是车载以太网之上的"服务语言"——它让 ECU 之间不再交换"信号",而是交换"服务"。 一个软件模块可以在运行时发现、连接、调用另一个模块的能力,不需要在编译前把所有通信关系写死。

这就是 SOA(Service-Oriented Architecture)在车上的具体实现 。SOA 是架构思想,SOME/IP 是让这个思想跑起来的协议。

从测试的角度看,SOME/IP 带来了一种新的测试需求: 契约验证(Conformance Testing) 。在 CAN 的世界里,你验证的是"这个 ECU 发的 Message ID 0x123 的第 3-4 字节是不是转向角度"——对照 DBC 文件逐位核对。在 SOME/IP 的世界里,你验证的是"这个服务的 Service Discovery 是否符合规范?Request/Response 的序列化格式对不对?事件通知的订阅机制是否正确?"

这就是为什么 Open-loop HIL 中出现了 SOME/IP 契约验证 和 UDS/DoIP 协议合规测试 ——它们本质上都是在验证:你的 ECU 说的"语言",跟标准规定的一不一样?

第五幕:为什么刹车还不敢走以太网?

一个看似矛盾的现实

到这里,叙事看起来很完美:CAN 解决了可靠通信 → FlexRay 解决了确定性 → Ethernet 解决了带宽 → SOME/IP 实现了服务化。技术一路向上,未来应该是"全车 Ethernet + SOA"一统天下。

但现实不是这样。

2025 年的量产车里, 制动控制仍然走 CAN/CAN FD,底盘域的部分高端平台仍有 FlexRay 的身影 。SOA 的服务化架构主要活跃在智能座舱和部分 ADAS 功能中,而不是在安全关键的控制链路上。

为什么?

先搞清楚一件事:功能安全到底在要求什么?

很多人听到"功能安全"(FuSa, Functional Safety)就想到"安全",但不清楚它到底在考什么。

ISO 26262 是汽车功能安全的国际标准。它的核心逻辑很简单: 你的电子系统出故障时,不能伤人。 注意——不是"不出故障"(那不可能),而是"出了故障也要安全"。

为此,ISO 26262 定义了四个安全等级: ASIL-A、B、C、D 。D 最高,意味着"如果这个功能失效,人大概率会死"。

  • ASIL-A:比如氛围灯控制——坏了无所谓
  • ASIL-B:比如胎压监测报警——出问题有风险但不致命
  • ASIL-D:比如线控转向、线控制动——失效就是生死问题

等级越高,认证要求越严。ASIL-D 要求你证明的不是"这个系统通常很快",而是**"在最坏情况下,这个系统一定能在规定时间内完成动作"**——数学级别的证明,不是统计级别的。

具体到通信层面,ASIL-D 要求三件事:

  1. 可证明的最坏时延上界 ——不是"平均 2ms",而是"最坏不超过 5ms,可数学推导"
  2. 可穷举的故障模式 ——每种可能的故障都被分析过,每种都有对应的安全策略
  3. 可审查的软件复杂度 ——代码量要在人类可逐行审查的范围内

这三件事,就是挡在 Ethernet + SOA 面前的三道门。

安全关键场景的三道铁门

第一道门:确定性时延

我们前面聊过,Ethernet 是 best-effort 的。即使加了 TSN,它的确定性保障也是 通过软件调度实现的 ——交换机里的时间门控队列、全网的时钟同步。任何一个环节出问题(交换机固件 bug、时钟漂移、配置错误),时延保障就可能失效。

而 CAN 的仲裁靠物理层电气特性硬保证;FlexRay 的 TDMA 虽然也依赖全局时钟同步,但其确定性机制在协议层有严格定义,且经过了十多年的量产验证。 两者的安全认证路径都已成熟。 相比之下,TSN 的车载认证路径还在建立中。

前面说了,ASIL-D 要求"可证明的最坏时延上界"。用 CAN 证明这一点——翻协议手册就能算出来。用 TSN Ethernet 证明这一点——你需要验证整个交换机芯片 + TSN 软件栈 + 时钟同步链路的正确性,复杂度高出几个数量级。

第二道门:故障模式的可预测性

CAN 的故障模式是高度可预测的:线断了?有错误帧计数器。节点挂了?它停止发送,其他节点通过超时检测。总线短路?有明确的电气故障特征。

Ethernet + TCP/IP + SOME/IP 的故障模式要复杂得多:交换机端口故障、IP 路由错误、TCP 重传风暴、SOME/IP 服务发现超时……每一层都有自己的失败模式,层层叠加后的故障空间是指数级的。

ASIL-D 要求"可穷举的故障模式"——你必须列出所有可能的故障并证明系统能安全应对。对于 CAN,这个清单是可控的。对于 Ethernet + SOA 全栈,这个清单还在研究中。

第三道门:软件复杂度

CAN 的协议栈可以用几千行代码实现,一个资深工程师可以逐行审查,在一颗几块钱的微控制器上裸跑。

Ethernet + TCP/IP + SOME/IP + Service Discovery 的完整协议栈需要操作系统支持(通常是 Linux 或 QNX),代码量在百万行级别——相当于十几个 Linux 内核模块的体量。

ASIL-D 要求"可审查的软件复杂度"——代码越多,bug 越多,每一行都需要严格审查。百万行级别的协议栈要做到 ASIL-D 级别的认证,目前在工程上还不现实。

所以现实方案是什么?

混合架构。

一辆 2025 年的智能车,通信架构通常是这样的:

┌─────────────────────────────────────────────────┐
│            应用层(SOA 服务)                      │
│  导航  │  OTA  │  远程诊断  │  自动泊车  │  ...    │
├─────────────────────────────────────────────────┤
│          SOME/IP + Service Discovery             │
├─────────────────────────────────────────────────┤
│               TCP / UDP / IP                     │
├──────────────────────┬──────────────────────────┤
│  Automotive Ethernet │    CAN / CAN FD          │
│  (传感器数据、非安全  │   (安全关键控制信号、     │
│   关键的服务通信)     │    底盘域通信)            │
├──────────────────────┴──────────────────────────┤
│              整车网关(Gateway)                   │
│        Ethernet ←→ CAN/CAN FD 协议转换            │
└─────────────────────────────────────────────────┘

SOA 的服务编排和发现跑在 Ethernet 上,但安全关键的执行指令最终仍然通过 CAN/CAN FD 下发到执行器。 域控制器( Domain Controller )充当翻译官——它用 SOME/IP 和上层服务通信,用 CAN 和底层执行器通信。

这不是过渡方案。这是 当下的工程理性 选择。

值得一提的是,行业正在快速推进中。TTEthernet(时间触发以太网)、冗余以太网 + SOME/IP-Safety + E2E 保护的方案,已经在部分量产的线控转向和线控制动系统中开始应用。以太网进入安全关键领域不是"能不能"的问题,而是"认证路径和工程验证还需要多久"的问题。CAN XL(CAN 家族的下一代,带宽提升到 10Mbps 级别,帧长从 64 字节扩展到 2048 字节并引入 VLAN 机制)、10BASE-T1S(多点以太网,让以太网可以像 CAN 一样共享总线)等新协议也在填补"带宽 vs 确定性"之间的空白。

但在 2025 年的大部分量产车里,上面这张混合架构图仍然是主流现实。

🥚 隐藏底牌 :这不是一颗蛋,这是放蛋的草坪本身。所有其他彩蛋由它决定在哪里出现。

第六幕:E/E 架构——协议进化背后的推手

"为什么不是所有车都直接上以太网?"

到这里你可能会问:既然 Ethernet 带宽大、SOME/IP 灵活,为什么不从一开始就全用 Ethernet?答案藏在一个更底层的问题里—— 车里的电子零件是怎么组织的?

这就是 E/E 架构(Electrical/Electronic Architecture) ——它决定了一辆车里有多少个控制器、它们怎么分工、用什么网络连接。E/E 架构的演进,才是通信协议更替的根本驱动力。

三代架构,三种通信需求

E/E 架构三代演进

第一代:分布式架构(2000s 及以前)

每个功能对应一个独立的 ECU——车窗一个、雨刮一个、ABS 一个、发动机一个。一辆高配车可能有 70-100 个 ECU,每个都是独立的小电脑。

这个时代的通信需求很简单:ECU 之间交换短消息("车速 60km/h""左转灯已开"),消息量不大,但节点很多、环境恶劣。 CAN 是为这个时代量身定做的 ——两根线、广播仲裁、便宜可靠,完美匹配"大量小节点交换小数据"的场景。

第二代:域集中式架构(2015-2025)

功能越来越多,70 个 ECU 管不过来了。工程师们开始把相关功能归类到"域"里——动力域、底盘域、车身域、座舱域、ADAS 域。每个域有一个算力更强的 域控制器(Domain Controller) ,域内的小 ECU 变成了执行器。

通信需求分裂了:

  • 域内 :域控制器和执行器之间仍然是短消息(CAN/CAN FD 继续)
  • 域间 :域控制器之间要交换大量数据——摄像头视频流、地图数据、传感器融合结果。 Automotive Ethernet 在这里登场 ,作为域间骨干网
  • 域控制器内部 :需要运行复杂软件服务,动态发现、动态调用。 SOME/IP 在这里登场 ,实现服务化通信

这就是为什么"混合架构"不是凑合,而是必然 ——域间用高速公路(Ethernet),域内用普通公路(CAN),安全关键走专用高铁(FlexRay / CAN FD + E2E),每种协议各守其位。

第三代:区域式架构(Zonal,2025+)

最新的趋势是更进一步:不再按功能分域,而是按 物理位置 分区。车的前部、后部、左侧、右侧各有一个 区域控制器(Zone Controller) ,负责采集本区域所有传感器数据、驱动本区域所有执行器。中央是一台或几台 中央计算平台(Central Compute) ,集中处理所有高层逻辑。

区域式架构的通信需求又变了:

  • 中央计算 ↔ 区域控制器 :大带宽骨干网(多 Gbps Ethernet,甚至 10Gbps)
  • 区域控制器 ↔ 末端执行器 :短距离、低成本的最后一公里(CAN/LIN,以及正在出现的 10BASE-T1S 多点以太网)

区域式架构的终极愿景是: 线束不再跟着功能走,而是跟着物理位置走 ——大幅缩短线束长度、降低重量和成本。但核心通信格局不变:高速骨干 + 低速末梢,Ethernet + CAN 的组合只是在不同的拓扑上重演。

为什么换代这么慢?

如果你来自互联网行业,看到"第二代到第三代"可能会想:这不就是升个级吗?半年搞定?

不是。汽车行业的时间尺度跟互联网完全不同:

  • 一颗车规芯片 从设计到量产: 3-4 年
  • 一款新车 从立项到量产交付: 4-5 年
  • 一辆车 从出厂到报废: 15-20 年
  • 一个新通信协议 从标准发布到通过 ASIL-D 安全认证: 5-10 年的量产验证

这意味着什么?2025 年量产的车,它的 E/E 架构是 2020 年冻结的,芯片是 2021 年定的,通信协议是那时候已经被验证过的。你不可能在 2025 年的量产车上用一个 2023 年刚发布的协议标准——来不及做安全认证。

而且, 物理层不能 OTA 。你可以远程升级软件,但不能远程换掉 CAN 收发器、不能远程重新布线。一辆车出厂那天用的通信硬件,就是它这辈子用的通信硬件。

所以路上跑的车是三代架构的叠加态:2015 年出厂的车还是纯分布式 + CAN,2020 年的车是域集中式 + CAN FD + 少量 Ethernet,2025 年的新车刚开始试水区域式。 不是行业不想快,是物理世界的时钟速度决定了换代节奏。

这也解释了文章标题的答案——为什么 2025 年的车还在用 1986 年的 CAN?不仅因为 CAN 好用,还因为汽车的时间常数就是这么长。一个协议一旦进入量产车,它至少还会再活 20 年。

协议不是孤立进化的

回头看整条时间线,你会发现一个规律:

不是"有了新协议所以换架构",而是"架构变了所以需要新协议"。

  • 分布式架构催生了 CAN
  • 域集中式架构引入了 Ethernet + SOME/IP
  • 区域式架构正在推动 10Gbps Ethernet + 10BASE-T1S + CAN XL

每一种通信协议的诞生和消亡,都不是技术自嗨,而是 被架构需求拉着走 的——而每一次拉动,都要花十年才能传导到路上跑的车里。理解了 E/E 架构的演进和汽车行业的时间尺度,你就理解了"为什么这辆车里同时有四种协议"——因为这辆车正站在第二代和第三代架构的交界处,而上一代的遗产还要在路上跑十年。

🥚 彩蛋 #5 :发现于所有协议的底层。没有颜色,没有重量,但如果少了它,其他五颗蛋都会"对不上"——因为它是整个草坪的时钟。

第七幕:时间——车载通信的隐藏维度

"数据到了,但几点到的?"

前面聊的所有协议——CAN、FlexRay、Ethernet——都在解决"怎么把数据从 A 送到 B"。但有一个问题我们一直在提、却从没正面回答:

车里几十个节点,怎么就"现在几点"达成共识?

这不是哲学问题。这是工程里要命的问题。

为什么时间如此重要?

想象一辆自动驾驶车在做传感器融合:前方有一个行人,摄像头"看到"了,激光雷达也"看到"了。融合算法需要把两份数据对齐——确认它们描述的是 同一个时刻 的同一个行人。

摄像头说"我在 T=100.000ms 时拍到了这一帧"。激光雷达说"我在 T=100.000ms 时扫到了这个点云"。融合算法把两者叠在一起,计算行人位置。

但如果摄像头的时钟和激光雷达的时钟差了 5ms 呢?以行人 5km/h 的步行速度,5ms 对应约 7mm 的位移——也许还可以接受。但如果差了 50ms?那就是 7cm。如果是一辆 60km/h 的对向车?50ms 对应 83cm——快一米了。 你的融合算法会认为两份数据在说同一个位置,但实际上目标已经移动了将近一米。

这就是为什么自动驾驶对时间同步的要求是 微秒级 的。

三种协议,三种时间观

时间同步:三代协议的三种时间观

CAN:没有统一时间

CAN 是事件触发的——有事就说,没事就闭嘴。它不需要全局时钟,也没有"现在是第几个时间槽"的概念。每个 CAN 节点各自维护自己的本地时钟。如果你需要知道一条 CAN 消息是什么时候发的,你得在接收端打时间戳——而这个时间戳的精度取决于接收端的时钟,不保证跟发送端一致。

对于传统车身控制(车窗、灯光、空调),这不是问题。但对于需要多传感器时间对齐的场景,CAN 的"各过各的日子"就不够了。

FlexRay:强制对表

FlexRay 是时间触发的——整个通信周期被切成固定的 slot,每个节点必须在自己的 slot 里说话。这要求所有节点对"现在是第几个 slot"达成精确共识。

FlexRay 内置了 时钟同步机制 :每个通信周期里,节点之间会互相校准时钟,把偏差控制在微秒级别。这是 FlexRay 能做 TDMA 调度的前提——如果大家的钟对不齐,整张时间表就乱了。

Ethernet + gPTP:给全车装一个"原子钟"

到了以太网时代,时间同步被独立出来,成了一个专门的协议: gPTP(generalized Precision Time Protocol,IEEE 802.1AS) 。

gPTP 的思路很直觉:网络里选出一个 主时钟(Grandmaster Clock) ,其他所有节点都跟它对齐。主时钟定期发送时间消息,每个节点测量消息在链路上花了多少时间(传播延迟),然后修正自己的本地时钟。层层传递,全网所有节点的时钟偏差可以控制在 亚微秒级别 (通常 < 1μs)。

这不仅是 TSN 做时间门控调度(802.1Qbv)的基础——没有精确的全网时钟,交换机不知道什么时候该开门放行关键流量——也是自动驾驶传感器融合的基础。摄像头、激光雷达、毫米波雷达,只有被同一个 gPTP 时钟源打过时间戳,它们的数据才能被精确对齐。

时间的本质

在静止的电脑里,时间是性能指标——"跑得快不快"。在运动的车辆里,时间是安全维度——"对得齐对不齐"。

CAN 时代,每个 ECU 各过各的时间,没人在乎时钟偏差。FlexRay 把时间变成了通信机制的基石。Ethernet + gPTP 把时间变成了全车的公共基础设施——就像 GPS 给全球提供统一时间一样,gPTP 给一辆车里的所有节点提供统一时间。

没有这个"统一时间",TSN 的确定性调度做不了,传感器融合做不了,多域协同控制也做不了。 时间同步不是通信的附加功能,它是高级别自动驾驶的前提条件。

串起来:一次紧急制动的数据旅程

今天找到的彩蛋,明暗共六颗:CAN、FlexRay、Automotive Ethernet、AUTOSAR、SOME/IP、gPTP。

现在让我们把它们全部亮出来,摆在同一张桌上—— 跟着一次 AEB(自动紧急制动)的数据流,看这六颗蛋如何在 300 毫秒内协同完成一次紧急制动。

一次 AEB 紧急制动的数据旅程

第一段:传感器 → ADAS 域控制器

前视摄像头拍到一帧画面,800 万像素的 RAW 数据约 12-14MB(12bit RAW)。这帧数据通过 GMSL SerDes (串行化/解串行化芯片)压缩后,经 Automotive Ethernet (1Gbps)送入 ADAS 域控制器。同一时刻,激光雷达的点云数据、毫米波雷达的回波数据也通过各自的以太网链路汇入。

这段路需要什么? 带宽 。三种传感器每秒合计产生 GB 级数据,只有以太网扛得住。丢了一两帧?没关系,下一帧马上就来。

第二段:域控内部——感知、融合、决策

数据进入域控制器后,感知模块识别出"前方 15 米有行人正在横穿"。但单靠摄像头不够——需要跟激光雷达的距离测量、毫米波雷达的速度估计做 多传感器融合 。

融合的前提是什么? gPTP 时间同步 。三个传感器的数据必须对齐到同一个时间戳(误差 < 1μs),融合算法才知道它们在描述同一个时刻的同一个行人。

融合结果交给规划模块,规划模块判断"以当前车速,如果不刹车,1.2 秒后会撞上"。决策: 全力制动 。

域控内部这些模块之间怎么通信?如果是 Adaptive AUTOSAR 架构,它们通过 SOME/IP 进行服务调用——感知服务发布检测结果,融合服务订阅并消费,规划服务请求控制服务执行制动。服务发现让这些模块可以动态注册和查找,不需要在编译前写死所有通信关系。

第三段:域控 → ESP 制动控制器

域控制器生成制动指令:"请求制动力 = 最大,目标减速度 = 9.8 m/s²"。

这条指令不走以太网。它通过 CAN FD 发送给 ESP(电子稳定程序)控制器——64 字节的数据帧,包含目标减速度、制动力分配比例、时间戳。CAN FD 的仲裁机制保证这条高优先级指令能在 2ms 内 送达。

为什么不用以太网?因为这是 ASIL-D 级别的安全关键链路 ——前面我们聊过的三道铁门:可证明的最坏时延、可穷举的故障模式、可审查的代码复杂度。CAN FD 全部满足,Ethernet + TSN 还在考试。

第四段:ESP → 制动执行器

ESP 接到指令后,计算四个车轮各自需要多少制动力(避免抱死),然后通过 CAN (经典 1Mbps)给四个轮端的制动执行器发指令——每条指令 8 个字节,每 10ms 一次。

为什么这里连 CAN FD 都不用,而是用最古老的经典 CAN?因为轮端执行器就是一个液压阀或电机——8 字节的指令足够了,1Mbps 的带宽绰绰有余,而经典 CAN 的芯片成本最低、可靠性经过了四十年验证。 杀鸡不用牛刀。

全程时间预算

整个 AEB 从"看到行人"到"车轮抱死",行业标准要求 < 300ms :

  • 传感器传输 + ISP 处理:~20ms
  • 感知 + 融合 + 规划 + 控制:~150-200ms
  • CAN FD 传输:~2ms
  • ESP 执行:~30ms
  • 机械响应:~50ms

注意看—— 通信传输本身只占总时间的零头 (20ms + 2ms)。真正的大头是算法计算和机械响应。但通信的要求不是"快",而是**"确定"**——你可以接受传输花 2ms,但不能接受"有时候 2ms、有时候 200ms"。这就是为什么安全关键链路用 CAN 而不是 Ethernet。

一次制动,四种协议

回头看这条数据旅程:

Ethernet (大带宽)→ SOME/IP (服务化调用)→ CAN FD (安全关键传输)→ CAN (末端执行)

四种协议各守一段路,每段路的需求完全不同。没有哪一种协议能单独走完全程。这不是历史包袱,这是 ADAS 系统的 通信本质 ——不同安全等级、不同数据量级、不同时延要求的数据流,天然需要不同的通信管道。

而贯穿全程的两个隐形基础设施:gPTP 给所有传感器对齐时钟,AUTOSAR 让软件可以从硬件上摘下来做 SIL 测试。 没有前者,融合做不了;没有后者,测试做不了。

通信协议 × 仿真测试

理解了 AEB 的数据旅程,再来看仿真测试就顺理成章了—— 你测试的每一个场景、注入的每一个故障、验证的每一个接口,都是在验证这条数据旅程中某一段路的正确性。

  • Open-loop SIL :把传感器录像回放给感知算法——验证的是域控内部的 SOME/IP 服务链路
  • Open-loop HIL :用 Restbus 仿真模拟 CAN 消息,把真实 ESP 放到台架上——验证的是 CAN FD 链路上的指令响应
  • 故障注入 :破坏 CAN 的差分信号或终端电阻——验证的是 ASIL-D 级别的故障安全策略
  • SOME/IP 契约验证 :检查服务发现和事件通知是否合规——验证的是域控内部服务通信的正确性
  • 时间同步测试 :注入 gPTP 时钟偏差——验证的是传感器融合的鲁棒性

不理解协议,你就不知道你在测什么。不理解 ADAS 的数据旅程,你就不知道为什么要测这些。

全景视图

一路走来,我们见证了车载通信从两根线到服务化架构的四十年进化。

简单说: CAN 便宜可靠管小事,FlexRay 准时但贵只管大事,以太网带宽大但确定性还不够硬,SOME/IP 让大家学会了"点菜式"沟通。

让我们把所有角色放在一张桌上:

维度 CAN CAN FD FlexRay Automotive Ethernet SOME/IP (on Ethernet)
诞生年代 1986 2012 2005 2015(100BASE-T1 标准化) 2014
最大带宽 1 Mbps 数据段 5-8 Mbps 10 Mbps 100M / 1G / 10Gbps 取决于底层
数据帧大小 8 字节 64 字节 254 字节 1500 字节 (MTU) 可变
时延确定性 优先级保证 优先级保证 TDMA 硬保证 Best-effort(+TSN) 依赖底层
典型硬件 Transceiver + 双绞线 同 CAN 专用控制器 + 收发器 PHY + Switch + 单对线 软件栈(无专用硬件)
单节点成本 ~$1 ~$1-2 ~$5-10 ~$3-5 软件成本
典型场景 车身控制、动力系统 动力控制、ADAS、诊断标定 底盘安全控制 传感器数据、ADAS 服务化应用
安全等级 可达 ASIL-D 可达 ASIL-D 可达 ASIL-D PHY 可达 ASIL-B(系统级取决于架构) 正在进入安全关键场景(需 E2E 保护)

最后,回到我们开篇的那个比喻——

一辆智能车就是一座 通信城市 :

  • CAN 是城市里的普通公路——到处都有,什么车都能跑,便宜耐用
  • FlexRay 是高铁线路——准点、冗余,但只在关键干线上铺设
  • Automotive Ethernet 是高速公路——吞吐量大,但不保证几点到达
  • SOME/IP 是快递公司的业务系统——让包裹知道该去哪、找谁签收
  • AUTOSAR 是城市的交通法规和标准——保证不同厂商建的路和车能互通
  • E/E 架构 是城市的总体规划——从村镇散居到区域集中再到中央集权,每次规划升级都重新定义了需要什么样的路
  • ISO 26262 是安全监管局——决定哪条路允许跑危险品,审批标准严格到数学证明级别

这座城市没有"一种路通吃一切"的银弹。每种协议的存在都不是因为别的协议不够好,而是因为 不同的乘客需要不同的路,不同的城市规划需要不同的路网 。

理解了这一点,你就理解了车载通信的全部底层逻辑。

终局长什么样?

回到开头那个三维权衡——带宽、确定性、成本。四十年来,每一代协议都在其中某个维度上突破,同时在另一个维度上妥协。有没有可能,终局是三者兼得?

行业正在收敛的方向是:

Zonal 架构 + Ethernet 骨干 + CAN 边缘 + TSN 补确定性。

中央计算平台和区域控制器之间跑多 Gbps 以太网骨干网,TSN(802.1Qbv 时间门控 + 802.1CB 帧冗余)逐步给以太网补上确定性这块短板。区域控制器到末端执行器——车窗、车灯、阀门——仍然是 CAN 或 LIN,因为 8 字节 + 10ms 的需求不会消失。新出现的 10BASE-T1S(多点以太网)试图用以太网协议栈替代 CAN 做"最后一公里",但它要走完安全认证还需要时间。

换句话说: 终局不是一种协议统一天下,而是每种协议各退一步、各进一步,在新的架构里找到自己的位置。 CAN 不会死——它会缩回到"低成本末端控制"这个它最擅长的生态位。Ethernet 不会包办一切——它需要 TSN 才能进入安全关键领域。FlexRay 的基因(TDMA、时间触发、冗余)不会消失——它会以 TSN 的形态在以太网里重生。

这座通信城市还会继续扩建。但城市规划的终极逻辑不会变: 不同的路服务不同的人,不同的协议服务不同的需求。

   
21 次浏览       5
相关文章

中央计算的软件定义汽车架构设计
汽车电子控制系统中的软件开发过程
一文读懂汽车芯片-有线通信芯片
OTA在汽车上有哪些难点痛点?
相关文档

汽车设计-汽车的整体结构及动力系统
自动驾驶汽车软件计算框架
SysML在汽车领域的应用实践
电子电气架构-大陆汽车系统架构平台
相关课程

AutoSAR原理与实践
功能安全管理体系(基于ISO26262)
MBSE(基于模型的系统工程)
基于SOA的汽车电子架构设计与开发

最新活动计划
OCSMP 认证培训 5-27[在线]
企业网络安全防护体系 5-20[北京]
基于模型的数据治理 5-19[北京]
具身智能技能与实践 6-11[厦门]
AI Spec Coding工程化实践 6-17[北京]
Open Claw和Agent Skill实战 6-25[北京]
 
 
最新文章
ASPICE中配置管理是个什么东西?
了解软件安全分析与组件鉴定
掌握Autosar ComStack的精髓!
基于整车功能的正向诊断需求开发
搞定Autosar SWC开发秘籍,码住!
汽车OTA更新的系统性威胁评估
最新课程
基于SOA的汽车电子架构设计与开发
Auto SAR原理与实践
AUTOSAR架构与实践(从CP到 AP )
AUTOSAR架构建模方法与工具(EA)
ASPICE4.0核心开发过程指南
MBSE(基于模型的系统工程)
更多...   
成功案例
某知名车企 AUTOSAR应用设计与开发
吉利汽车 MBSE工程体系汽车建模及评估
某整车企业 《功能需求分析与设计》
富奥汽车零部件 建模工具EA
零跑汽车 建模工具EA及服务
北汽福田 建模工具EA
小鹏汽车 建模工具EA
更多...