第4章:车载以太网基础

各位同学,今天我们来聊聊车载以太网。说实话,我刚入行那会儿,车上用的还是CAN、LIN这些老伙计。那时候谁能想到,有一天以太网会跑到车上去?但现在,这已经是标配了。

为什么需要以太网?你想想看,自动驾驶、高清地图、OTA升级,这些功能的数据量有多大?CAN总线那1Mbps的带宽,根本扛不住。以太网就不一样了,动不动就是100M、1G,甚至更高。

4.1 以太网在汽车中的应用

车载以太网不是简单地把办公室的网线扯到车上。它要面对的是电磁干扰、温度变化、振动这些恶劣环境。我见过一个项目,因为以太网线束没做好屏蔽,导致摄像头数据时不时丢包,排查了整整两周。

目前车载以太网主要用在以下几个地方:

  • ADAS系统:摄像头、雷达的数据传输,带宽要求高
  • 信息娱乐系统:多媒体流、导航地图更新
  • 诊断系统:通过DoIP进行远程诊断
  • 域控制器之间:高速数据交换

核心要点:车载以太网不是简单的"以太网上车",它有自己的物理层标准,比如100BASE-T1和1000BASE-T1,这些和咱们电脑上的以太网完全不同。

4.2 100BASE-T1与1000BASE-T1

这两个标准,说白了就是车载以太网的物理层规范。100BASE-T1是100Mbps,1000BASE-T1是1Gbps。它们和普通以太网最大的区别是什么?

单对非屏蔽双绞线。普通以太网至少需要两对线,而车载以太网只用一对。为什么?为了减重、降成本。车上每多一根线,就是多一份重量和成本。

特性 100BASE-T1 1000BASE-T1
速率 100 Mbps 1 Gbps
线缆 单对非屏蔽双绞线 单对非屏蔽双绞线
最大距离 15米 15米
主要应用 摄像头、传感器 域控制器、骨干网

个人经验:我在调试一个环视摄像头系统时,用的就是100BASE-T1。当时发现图像偶尔有撕裂,排查了半天,最后发现是线束的阻抗不匹配。嗯,这里要注意,车载以太网对线束的要求比普通以太网严格得多。

1000BASE-T1现在越来越普及了。特别是随着自动驾驶等级提升,摄像头分辨率越来越高,100M带宽已经不够用了。我记得有个项目,客户要求用8个800万像素的摄像头,那数据量,100BASE-T1根本扛不住,最后全换成了1000BASE-T1。

4.3 SOME/IP协议

SOME/IP,全称是Scalable service-Oriented MiddlewarE over IP。名字很长,但核心思想很简单:把汽车上的功能封装成服务,通过以太网来调用。

为什么要用SOME/IP?传统的CAN总线是基于信号的,每个信号都有固定的ID和周期。但以太网不一样,它是基于服务的。你想想看,一个摄像头要发送图像数据,如果用CAN,你得把图像拆成无数个小包,每个包都要定义ID,太麻烦了。用SOME/IP,直接定义一个服务,摄像头发布,其他节点订阅,多简单。

SOME/IP的核心概念:

  • Service:服务,比如"摄像头图像服务"
  • Method:方法,比如"获取当前帧"
  • Event:事件,比如"图像数据到达"
  • Field:属性,比如"摄像头状态"
// SOME/IP服务定义示例
service CameraService {
    method GetFrame() -> FrameData;
    event OnFrameReady(FrameData);
    field CameraStatus;
}

避坑指南:我曾经在一个项目中,SOME/IP的Service Discovery配置不当,导致ECU启动后花了30秒才找到所有服务。后来发现是重复周期设置得太长了。记住,Service Discovery的周期要合理设置,不能太长也不能太短。

4.4 DoIP协议

DoIP,Diagnostics over Internet Protocol。说白了,就是用以太网来做诊断。以前做诊断,得用CAN总线,一根线一根线地接,速度慢,还容易出错。现在好了,直接插根网线,或者通过WiFi,就能远程诊断。

DoIP的好处很明显:

  • 速度快:刷写一个ECU的固件,用CAN可能要半小时,用DoIP几分钟搞定
  • 远程诊断:车在用户手里,工程师在办公室就能诊断
  • 数据量大:可以传输诊断日志、故障码快照等大文件

DoIP的通信流程大概是这样的:

  1. 车辆发现:诊断仪发送广播,寻找车辆
  2. 路由激活:车辆响应,建立连接
  3. 诊断通信:发送UDS诊断请求,接收响应
  4. 断开连接:诊断完成,关闭连接

实际案例:我参与过一个项目,需要远程刷写T-Box的固件。用的就是DoIP。当时遇到一个问题,刷写到一半网络断了,结果T-Box变砖了。后来我们加了断点续传和校验机制,才解决了这个问题。所以,DoIP虽然方便,但可靠性设计一定要做好。

DoIP的报文格式也很简单,它是在TCP/IP之上封装了UDS诊断报文。你想想看,UDS本来是在CAN上跑的,现在搬到以太网上,本质上没变,只是传输层换了。

// DoIP报文头格式
// 协议版本 | 反向协议版本 | 负载类型 | 负载长度
0x02       | 0xFD          | 0x8001   | 0x00000008

好了,这一章的内容就到这里。车载以太网是个大话题,今天我们只讲了基础。后面在具体项目中,我们还会深入讲解如何配置SOME/IP、如何调试DoIP。记住,理论是基础,但真正能让你成长的,是动手去调、去试、去踩坑。