前言
为了让汽车更加智能,智能网联和智能驾驶功能喷涌而出。满足这些需求,就对传统的以CAN通信为核心的电子电器架构带来严峻的考验。对网络负载,传输速率等方面都提出了更为严格的挑战。同时,随着汽车电动化进程的加速推进,人们对汽车音视频系统的需求越来越高,外部电子产品控制车辆以及彼此交互的场景不断扩大,对网络带宽也提出了更大的挑战。由此,车载以太网应运而生。以太网的首要优势在于支持多种网络介质,同时物理介质与协议无关,因此以太网可以在汽车领域做相应的调整与拓展,形成完整的车载以太网协议。本文简要介绍Classic Autosar下的以太网通信架构。
1.AUTOSAR中以太网功能架构概览
在Classic Autosar架构体系下,以太网功能业务涉及大量模块。
1)Someip业务相关的模块:Eth,Ethif,TcpIp,Soad,Pdur,SomeipXf,LdCom,rte。
2)SoemipSd业务相关的模块:Eth,EthIf,Tcpip,Soad,Sd,Bswm。
3)Doip诊断业务相关的模块:Eth,EthIf,Tcpip,Soad,Doip,Pdur,Dcm。
4)网络管理状态处理业务相关的模块:Tcpip,Ethif,Nm,ComM,UdpNM。
上述模块共同协作,完成了基于以太网的SomeIp,服务发现,网络管理,诊断四大功能。
CP以太网模块架构图
2.CP以太网模块与以太网协议
以太网是一种使用十分广泛的协议,由标准的七层架构组成,但CP中的以太网其实仅用了5层协议,那么CP以太网的模块是如何与以太网协议形成对应的呢?
车载以太网分层协议架构图
以太网第一层是物理层,既可以理解为硬件层,在MCU的软硬件系统中由Phy芯片完成。Phy芯片能对模拟信号与数字信号进行转换,接收报文时,将模拟信号转换成数字信号给MCU芯片处理;发送报文时,将数字信号转换成模拟信号发送至以太网总线上。
以太网第二层是数据链路层。链路层即Mac层,规定了数据帧能被网卡接收的条件,最常见的方式是利用利用网卡的MAC地址,发送方会在欲发送的数据帧的首部加上接收方网卡的MAC地址信息,接收方只有监听到属于自己的MAC地址信息后,才会去接收并处理该数据。在CP中,位于Mcal层的ETH模块实现了MAC功能,即对于对端与本地Mac地址的处理。
以太网第三层是网络层。每一台搭载了以太网的ECU都需要定义ip地址,主机的网络地址该如何定义,以及如何在网络地址和MAC地址之间进行映射,即ARP协议;网络层实现了数据包在ECU之间的传递。网络层的功能由tcpip模块完成。
以太网第四层是传输层。传输层主要是实现UDP以及TCP协议功能,在一个ECU内可能存在不同的应用程序,这些程序可能会使用到不同的IP地址,那么传输层就能区分数据包是属于哪个应用程序的,即传输层可以实现数据包端到端的传递,即ECU1的应用程序至ECU2的应用程序。传输层的功能由TCPIP模块完成。
Someip,Someipsd,Doip位于以太第五层应用层:Someip协议,,Someipsd协议,doip协议本质上是规定了对网络层传递的数据的处理,适应了不同的应用场景。在CP中,实际上Soad,SD,Doip,Soemipxf都是在实现应用层功能。
3.以太网架构完成的主要功能
3.1 Someip业务报文收发
Someip报文收发架构图
1)SWC通过RTE接口将数据传递至RTE中。
2)RTE通过使用SOMEIPXF的功能实现序列化,即将SWC输出的结构体数据序列化为字节流信号。
3)Ldcom模块位于RTE与PDUR之间的模块,负责将RTE中的字节流信号转换成pdu数据传递给PDUR。
4)PDUR模块作为CP中最重要的路由模块,能实现模块与模块之间的PDU路由,在SOMEIP架构中,以太网通信一定要经过Soad模块,因此PDUR实现了以太PDU数据在LDCOM与SOAD之间的路由。
5)在上述模块中,SOMEIP数据本质上还是以PDU的形式进行传递,但是以太网是以套节字(包括本地ip地址,远程ip地址,本地port,远程port,UDP/TCP协议)为基础的通信。SOAD实现了在基于PDU的AUTOSAR通信服务模块和基于SOCKET的TCP/IP堆栈之间创建一个链接。为PDU选择合适套接字进行报文的发送或者接收。
6)在Someip报文发送链路中,TCPIP模块会为以太网报文增加链路层,网络层,传输层的报文头,链路层:本地的mac地址以及对端的mac地址。网络层:本地的ip地址,对端的ip地址,传输层:本地的port,对端的port,TCP/UDP协议。
3.2 服务发现SomeipSd报文收发
SomeipSd报文收发架构图
1)对于SoemipSd服务发现报文的发送与接收,依然会用到Soad,TCPIP,EthIf,Eth模块,这些模块属于公共模块,无论是doip,sd还是someip都会用到这些模块做基础数据传输。
2)服务发现报文作为格式固定的报文数据,不需要用户自定义Payload,直接发送至SD模块进行处理,不需要通过PDUR,Ldcom等模块。
3)SD在收到SomeipSd服务发现报文之后,通过内部的协议计算,对Soad的以太网发送进行实时控制。
3.3 基于以太网的诊断报文收发
以太网诊断报文收发架构图
1)诊断仪或者作为诊断Client端的ECU发送的基于以太的诊断报文通过Switch能够转发至对应ECU中。
2)在诊断报文的收发中,Soad,TCPIP.Ethif,Eth作为公共模块,完成数据链路层以及传输层的报文接收与发送任务。
3)Doip模块基于以太网的通讯协议对UDS数据进行传输,主要实现的基于ISO13400中规定的协议功能。在Doip模块收到Soad模块的诊断报文后,会将诊断报文解析成对应指令通过PDUR传输至DCM中,DCM对该诊断指令进行处理(比如11复位指令)。注意:因为PDUR可以支持跨核信号路由,因此DCM可以与以太栈(ETH,TCPIP等)位于不同的核。
4)同时,Doip具有与SD模块一样的功能,能对Soad模块中套接字进行控制,从而达到控制doip发送开关的效果。
3.4 以太网的网络管理状态处理
以太网网络管理架构图
1)基于以太网的网络管理功能由两部分模块组成,第一部分:以太栈基础模块Soad,TcpIp,EthIf,Eth模块,这部分基本模块完成以太报文接收发送基本功能。第二部分:ComM,Nm,EthSm,UdpNm,这部分是AUTOSAR中管理栈的模块,完成通信状态的管理。
2)UdpNm网络管理模块Nm和 TcpIp之间的适配层,主要用于管理NM集群中NM节点的网络管理状态机。UdpNm模块的功能与CanNM类似,CanNm管理的是基于Can的Nm节点的网络管理状态机,而UdpNm管理的是基于UDP的Nm节点的网络管理状态机。
3)UdpNm在解析完Nm报文并且处理网络管理状态机后,将控制指令通过NM模块传输至COMM模块,最终通过EthSm模块控制TCPIP以及Ethif模块,从而达到控制以太报文收发开关的效果。
注意:
对于仅基于Can的网络管理电器架构,如果需要对以太的报文收发进行控制。需要通过Bswm或者SWC基于can的网络管理状态,向COMM模块请求对应以太网通道的网络管理状态。