01、前言
众所周知,汽车无人驾驶已成为汽车发展的一种趋势,它对汽车ECU系统数量和质量有了更大的需求。目前主流的电子架构体系已逐渐显露出不足,而车载以太网因其具众多优点,必然会在汽车车载网络中普遍应用。本文将从入门者的角度,讲解车载以太网中的重要知识.
车载以太网用于连接汽车内不同电气设备的一种网络,从而满足车载环境中一些特殊需求,它与传统以太网不尽相同,车载以太网主要由MAC(介质访问控制)、PHY(物理接口收发器)组成,与传统以太网不同,车载以太网固定为全双工通信方式,出于对汽车启动时间的考虑而没有引入自动协商机制,此外车载以太网是通过单对非屏蔽或屏蔽电缆连接,与之对应的100M的MDI接口为100Base-T1,以此满足EMC要求。
传统以太网已经存在了20年以上,为什么一直没有被应用在车载上面?
(1) 传统以太网不能满足汽车OEM厂商对于EMI(电磁干扰)和RF(辐射)的要求,民用的100BASE-TX和1000BASE-TX的辐射噪声很难控制,并且承受噪声干扰(抗扰)的能力比较差。
(2) 车载系统对于传感器及控制系统的响应速度有非常高的要求,而传统以太网不能保证ms级别(或更小)的传输延迟。
(3) 传统以太网没有提供网络带宽分配的方法,因此在不同的数据流同时传输时,无法保证每个数据流所需要的带宽。
(4) 传统以太网没有提供网络设备之间进行时钟同步的方法,无法保证多个设备同一时刻针对数据进行同步采样(尤其是音视频数据)。
什么促使以太网被应用在汽车上?
1. 数据带宽需求
汽车上的电子设备变得越来越复杂,各种控制系统以及传感器的使用越来越多,车内的各种处理器和域控制器需要更多的数据交互,这种大量的数据交互对于车内数据传输带宽的要求越来越高。
2. 车内布线需求
通常,车内各个电子设备之间都是通过专用的电缆进行连接,这使车内的线缆的布置和连接变得更加复杂,同时也带来了车内线缆成本和重量的成倍增加(车内线束的重量是在整车成本排名第三位,同时成本也仅次于动力总成和底盘排名第三)。
博通(Broadcom)和博世(Bosch)通过一起研究和评估,实现了通过使用非屏蔽双绞线(UTP)作为10/10/100Mbps以太网的传输介质,而且可以使用更小的连接器端子,这样可以使得线缆的重量大大减少。并且通过以车载太网的应用,车内的电子设备可以抛弃点对点的传统布线连接,只需要将各个设备连接到车载网关控制器上即可,这样也大大减少了车内布线的复杂度。
02、概述
车载以太网主要工作在OSI的最后两层:物理层和数据链路层。
物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口。物理层的芯片称之为PHY;
数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。数据链路层的芯片称之为MAC控制器;
很多时候,这两个部分是做到一起的,他们之间的关系是MCU/MPU接到MAC总线、MAC接PHY、PHY接网线(当然也不是直接接上的,还有一个变压装置)。
其中与车载以太网强相关的模块有:
SOME/IP(Scalable Service-Oriented MiddlewarE over IP):是一种用于传输服务(Service)信息的基于IP的可伸缩中间件,能够适应基于不同操作系统的不同大小的设备,小到摄像头,大到车机或自动驾驶模块;相比于传统的CAN总线的面向信号的通信方式,SOME/IP是一种面向服务的通信方式。
SOME/IP是车载以太网通信领域的一个概念,是一种位于应用层的通信协议。在目前主流的以 CAN 总线为主的车载网络中,通信过程是面向信号的(除了诊断通信之外),这是一种根据发送者需求实现的通信过程,当发送者发现信号的值变化了或者到达预定的发送周期,就会向外发送该信号,而不考虑接收者是否有需求。而 SOME/IP 则不同,它是在接收方有需求的时候才发送,这种协议使得总线上不会出现过多不必要的数据收发,从而有效地降低总线负载。在车载网络中,某个 ECU 有时会需要调用实现在其他 ECU 上的服务,此时两个ECU 就分别扮演了网络通信中client 和 server 的角色,而 SOME/IP 就是实现这种远程服务调用的接口
DoIP:基于以太网的诊断传输协议,能够将UDS进行封装并基于IP网络进行传输;应用于车辆检查和维修、车辆或ECU软件的重编程、车辆或ECU的下线检查和维修等,其主要工作原理类似于Diagnostic over CAN(或称为DoCAN)。
XCP:XCP on Ethernet能够基于以太网进行车载控制器的标定,主要用于标定、测量、少量的编程和刷新(大部分刷新会利用诊断协议)、ECU旁路功能等。
UDPNM:是AUTOSAR组织制定的基于汽车以太网的网络管理协议,能够有效的实现车载以太网节点的协同睡眠和唤醒,其主要工作原理类似于AUTOSAR的CAN NM
其中与传统以太网最核心区别是物理层车载以太网要用 100BASE-T1,而非100BASE-TX,下面依次介绍与车载相关的各层。
03、物理层PHY
3.1 概述
物理层PHY:数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口;
数据链路层MAC:提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。
100BASE-T1在物理连接上使用了一对双绞线实现全双工的信息传输,而100BASE-TX则使用了两对双绞线实现全双工,一对用于收,另一对用于发。
100BASE-T1利用所谓的回音消除技术(echo cancellation)实现了在一对双绞线上的全双工通信。
回音消除技术的主要过程:作为发送方的节点将自己要发送的差分电压加载到双绞线上,而作为接收者的节点则将双绞线上的总电压减去自己发出去的电压,做减法得到的结果就是发送节点发送的电压。
车载以太网固定为全双工通信方式,出于对汽车启动时间的考虑而没有引入自动协商机制,此外车载以太网是通过单对非屏蔽或屏蔽电缆连接。
3.2 物理层架构
物理层主要作用:
1)定义硬件接口;
2)定义信号与编码;
3)定义数据与信号之间的转换收发;
物理层基本架构
主要包括PMD,PMA和PCS。
PMD,介质依赖层,主要职责是转换PMA的数据与实际网络上的信号。发送时,它从PMA读取数据并执行实现该功能所需的必需的低级行编码功能设计的媒介。接收时,它会读取并解释这些内容编码信号,然后将它们转换回位以发送到PMA。
PMA,介质连接层,结余PMA和PCS之间,其中PMD是按照bit串行处理方式,而PCS则是按照数据块处理方式,因此PMA则是起到中间转换的作用,此外还起到数据冲突检测的功能。
PCS,编码子层,主要进行初始编码 ,实现特定于以太网速度和传输介质要求的子层中的一部分。
以下为物理层控制器架构图,其中,MDI , Medium Dependent Interface。MII Medium Independent Interface,MIIM主要用于寄存器的配置管理。
我们这里需要注意的是RXD 和TXD都是4个数据。
3.3 物理层编码原理
首先总线上的电平信号有,-1 0 和 1如图
数据和电平的编码转换关系有如下表关系:
如数据 000 对应两根线上的电平为 -1 01 ,
主要数据到电平转换过程为以下四步:
1. 首先从MII接收到数据(4bit 4bit...)
2. 接下来分割成(3bit 3bit...)进行处理;
3. 根据上表,电平与数据编码的关系,转换为电平信号;
4. 将电平信号发到总线。
04、链路层MAC
MAC层主要内容,
1) 寻址
2) 传输方式
3) 帧格式
4.1 MAC控制器架构
其中比较关键的是MII 和 MIIM 与PHY接口连接。
数据发送,MAC协议会判断当前是否适合发送数据,若能,它会在将要发送的数据上附加一些控制信息,最终使数据以规定的格式到达物理层;
数据接收,它会判断数据是否有错误,如果没有错误的话,它会去掉附加的控制信息发送至LCC(逻辑链路控制)子层。
SMI接口包括MDIO(控制和管理PHY以获取PHY的状态)和MDC(为MDIO提供时钟)。
MDC由MAC提供,MDIO是一根双向的数据线。用来传送MAC层的控制信息和物理层的状态信息。
MDIO数据与MDC时钟同步,在MDC上升沿有效。
4.2 MAC地址
在我们给别人联系时,我们往往需要知道对方的邮件地址或电话或住址,而以太网通信也是类似。因此需要通信的两个设备,必须具有唯一标识的MAC地址。
MAC地址长度为48bit、6byte,前三个字节是组织标识ID,后三个字节是本地管理ID。
全局或本地地址U/L:第一个字节的第二位MAC地址的OUI字段(从右数第二低位开始计数)被称为U / L(通用/本地)标志。设为0时,将MAC地址标记为被普遍管理;当它是1时,MAC地址是本地管理的。
单播与组播MAC地址I/G:OUI的第一个字节的第一个(最低有效)位MAC地址的字段,称为I / G(个人/组)标志。当这个位设置为0,MAC地址是单个设备,并且消息是单播。设置为1时,表示组地址(多播)。
广播MAC地址:FF-FF-FF-FF-FF-FF
4.3 数据传输
主要介绍一下CSMA/CD 冲突检测方法。
在以太网中,网络不断监控(或感知)传输线,侦听确定线路是否繁忙。任何设备听到正在进行的传输则禁止尝试发送自己的消息,直到线路空闲为止。
它可以检测到网络上是否有数据在传送,如果有数据在传送中就等待,一旦检测到网络空闲,再等待一个随机时间后将送数据出去。如果两个碰巧同时送出了数据,那样必将造成冲突。这时候,冲突检测机构可以检测到冲突,然后各等待一个随机的时间重新发送数据。这个随机时间很有讲究的,并不是一个常数,在不同的时刻计算出来的随机时间都是不同的,而且有多重算法来应付出现概率很低的同两台主机之间的第二次冲突
4.4 MAC帧格式
Preamble:7byte 帧前缀,主要用于帧设备之间的事件同步;
Start of frame delimiter:1byte,标识帧开始
MAC destination :目标MAC地址
MAC source :源MAC地址
802.1Q Tag:是一个可选项,主要用于VLAN,如在这个字段中定义VLAN的ID或优先级等,未定义的则会自动把该帧丢弃。
length:数据长度/payload长度
Payload:有效负载、数据
frame check :CRC
interframe gap :帧之间的间隔
05、网络层
5.1 IP地址
主要作用为,寻址,数据封装,路由。仅以IPV4说明
长度为4byte 32bit,每个字节用dot隔开,用十进制表示。
192.168.0.1 ,其中加粗的前三个字节192.168.0 表示网络ID,最后一个字节 1表示主机ID
网络ID(网络ID):一定位数,从头开始从最左边的位开始,用于标识主机或位于其他网络接口。有时也称为网络前缀,甚至只是前缀。
主机ID(主机ID):其余位用于标识 网络上的主机。
IP地址类别:
类别 | 默认子网掩码 |
A类 | 255.0.0.0 |
B类 | 255.255.0.0 |
C类 | 255.255.255.0 |
A类地址第一字节为网络ID,后三个字节为主机ID
范围是1.0.0.1—126.155.255.254;
B类地址第一二字节为网络ID,后两个字节为主机ID
范围是128.0.0.1—191.255.255.254
C类地址前三个字节为网络ID,最后一个字节为主机ID
范围是192.0.0.1—223.255.255.254
D类地址:为组播地址
224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用;
224.0.1.0~224.0.1.255是公用组播地址,可以用于Internet;
224.0.2.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效;
239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。
D类地址的MAC有特殊转换关系:
MAC地址前三位为:01 00 5E
MAC地址后三位为:0x7FFFFF & 组播IP地址
举例来说 组播IP地址 242.147.109.235 对应的MAC地址为:01.00.5E.13.6D.EB
5.2 IP协议
Version:版本 如4表示IPV4 IPV4:4,IPV6:6
IHL:Internet Header length,Header 长度 没有选项,则一般为5(5x32bit=20B)
DSCP:Differentiated Service 一般没有使用,详细参考RFC
ECN:Explicit Congestion Notification 用于扩展检测丢包
Total length :总长度,header+数据 总长度
Identification :占16位,它是一个计数器,用来产生数据报的标识
Flags:标明是否分片 bit 0: Reserved; must be zerobit 1: Don't Fragment (DF) bit 2: More Fragments (MF)
Fragment Offset :占12位,指较长的分组在分片后某片在原分组中的相对位置.片偏移以 8 个字节为偏移单位
Time to Live :生存时间,占8位,记为TTL (Time To Live) 数据报在网络中可通过的路由器数的最大值,TTL 字段是由发送端初始设置一个 8 bit字段.推荐的初始值由分配数字 RFC 指定,当前值为 64.发送 ICMP 回显应答时经常把 TTL 设为最大值 255
Protocol:占8位,指出此数据报携带的数据使用何种协议以便目的主机的IP层将数据部分上交给哪个处理过程, 1表示为 ICMP 协议, 2表示为 IGMP 协议, 6表示为 TCP 协议, 17表示为 UDP 协议
Header checksum:数据头CRC
Source IP address:源IP地址
Destination IP Address:目标IP地址
5.3 ICMP协议
ICMP:Internet Control Message Protocol 网际控制报文协议
作用:提高 IP 数据报交付成功的机会 用于ping,跟踪路由
这里的Type如下图所示:
5.4 ARP协议
ARP:Address Resolution Protocol 地址解析协议
由于上层用的是IP地址,下层用的是MAC地址,ARP协议就是用于解决协议转换的问题。
主要用两种映射方式,一种为直接mapping,一种为动态mapping
以下说明ARP过程:
1)首先查询表中是否有目标地址,若没有则下一步;
2)产生ARP请求帧;
3) 广播ARP请求帧;
4)目标方接收ARP请求帧,并处理
5)目标方产生ARP响应帧
6)目标方更新ARP表
7)目标方发送ARP响应帧
8)请求方接收响应帧并处理
9)请求方更新ARP表。
06、传输层
传输层的目的在于,控制分段传输大块数据。
6.1 端口与Socket
前面我们提到了IP地址,IP地址一般表示一个ECU级别;
而为了进一步表示一个ECU上的不同软件进程,功能或模块,我们引入端口的概念(port)。
在TCP和UDP中,都包含了16bit的 源地址端口和目标地址端口。
而 IP地址+port = socket。
6.2 UDP
UDP:User Datagram Protocol 用户数据报协议
主要特点:传输协议比TCP轻,不保证发包的传输以及数据包的顺序,主要用于对时间敏感的传输;
6.3 TCP
TCP:Transmission Control Protocol 传输控制协议
主要特点,主要是用于可靠的面向连接的传输,在传输数据之前,必须先建立连接,同时确保所有数据按顺序到达客户端,客户端收到数据包后需要给出确认应答,若未确认,则该数据包会进行重传。
握手过程:
协议格式:
Source Port :源端口
Destination Port:目标端口
Sequence Number:序列号,用于确保传输顺序;
Acknowledgment Number:应答号 比如当前接收端接收到一个净荷为12byte的数据包,SN为8,则会回复一个确认收到的数据包,如果这个数据包之前的数据也都已经收到了,这个数据包中的ACK Number则设置为12+8=20,表示之前的数据都已经收到了,准备接受SN=20的数据包
data offset:4位包括TCP头大小,指示TCP头的长度,即数据从何处开始。
CWR(Congestion Window Reduce):拥塞窗口减少标志set by sender,用来表明它接收到了设置ECE标志的TCP包;
ECE(ECN Echo):ECN响应标志被用来在TCP3次握手时表明一个TCP端是具备ECN功能的。在数据传输过程中也用来表明接收到的TCP包的IP头部的ECN被设置为11;
URG(Urgent):该标志位置位表示紧急(The urgent pointer) 标志有效。
ACK:取值1代表Acknowledgment Number字段有效,这是一个确认的TCP包,取值0则不是确认包。
PSH(Push):该标志置位时,一般是表示发送端缓存中已经没有待发送的数据,接收端不将该数据进行队列处理,而是尽可能快将数据转由应用处理。
RST(Reset):用于reset相应的TCP连接。通常在发生异常或者错误的时候会触发复位TCP连接。
SYN:同步序列编号(Synchronize Sequence Numbers)有效。该标志仅在三次握手建立TCP连接时有效。
FIN(Finish):No more data from sender。当FIN标志有效的时候我们称呼这个包为FIN包。
Window Size:从Ack Number开始还愿意接收多少byte的数据量,用于TCP的流量控制。
Urgent Pointer:优先指针 指向后面是优先数据的字节,在URG标志设置了时才有效。
声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有,如涉及侵权,请联系小编邮箱 demi@eetrend.com 进行处理。