1. 简述
1.1 架构框图
-
全称
Scalable service-Oriented MiddlewarE over IP。基于IP的可扩展面向服务的中间件。面向服务(SOA) -
术语:
-
Service:提供接口功能的实体;零个或者多个方法、零个或者多个事件、零个或者多个字段的逻辑组合
-
Service Instance:服务的单个实例。服务的实现,服务可以在车辆中多次存在并且在ECU中多次存在
-
Event Group:一个或多个事件的逻辑分组。是服务的一部分
-
Method:被调用或调用的方法、过程、函数、子例程
-
-
传输层协议
-
如果传输的数据长度超过了1400字节,并且没有严苛的时间延迟要求,使用TCP传输
-
如果有时间延迟的要求(小于100毫秒),使用UDP传输
-
如果传输的数据长度超过1400字节,同时要求较小的延迟,可以使用SOME/IP-TP;SOME/IP-TP支持UDP之上大数据传输。
-
使用大端序
-
1.2 涉及模块
-
Someip业务相关的模块:Eth,Ethif,TcpIp,Soad,PduR,SomeipXf,LdCom/Com,Rte。
-
SoemipSd服务发现业务相关的模块:Eth,EthIf,Tcpip,Soad,Sd,Bswm。
-
Doip诊断业务相关的模块:Eth,EthIf,Tcpip,Soad,Doip,Pdur,Dcm。
-
网络管理状态处理业务相关的模块:Tcpip,Ethif,Nm,ComM,UdpNM。
1.3 业务报文收发架构
-
SWC通过RTE接口将数据传递至RTE中
-
RTE通过使用SOMEIPXF的功能实现序列化,即将SWC输出的结构体数据序列化为字节流信号
-
Ldcom模块位于RTE与PDUR之间的模块,负责将RTE中的字节流信号转换成pdu数据传递给PDUR
-
PDUR模块作为CP中最重要的路由模块,能实现模块与模块之间的PDU路由,在SOMEIP架构中,以太网通信一定要经过Soad模块,因此PDUR实现了以太网PDU数据在LDCOM与SOAD之间的路由。
-
在上述模块中,SOMEIP数据本质上还是以PDU的形式进行传递,但是以太网是以套节字(包括本地ip地址,远程ip地址,本地port,远程port,UDP/TCP协议)为基础的通信。SOAD实现了在基于PDU的 AUTOSAR通信服务模块和基于SOCKET的TCP/IP堆栈之间创建一个链接。为PDU选择合适套接字进行报文的发送或者接收。
-
在Someip报文发送链路中,TCPIP模块会以太网报文增加链路层以及网络层的报文头,链路层:本地的mac地址以及对端的mac地址。
1.4 服务发现报文收发架构
-
对于SoemipSd服务发现报文的发送与接收,依然会用到Soad,TCPIP,EthIf,Eth模块,这些模块属于公共模块,无论是doip,sd还是someip都会用到这些模块做基础数据传输。
-
服务发现报文作为格式固定的报文数据,不需要用户自定义Payload,直接发送至SD模块进行处理,不需要通过PDUR,Ldcom等模块。
-
SD在收到SomeipSd服务发现报文之后,通过内部的协议计算,对Soad的以太网发送进行实时控制。
1.5 诊断报文收发架构
-
诊断仪或者作为诊断Client端的ECU发送的基于以太的诊断报文通过Switch能够转发至对应ECU中。
-
在诊断报文的收发中,Soad,TCPIP.Ethif,Eth作为公共模块,完成数据链路层以及传输层的报文接收与发送任务。
-
Doip模块基于以太网的通讯协议对UDS数据进行传输,主要实现的基于ISO13400中规定的协议功能。在Doip模块收到Soad模块的诊断报文后,会将诊断真报文解析成对应指令通过PDUR传输至DCM中,DCM对该诊断指令进行处理(比如11复位指令)。注意:因为PDUR可以支持跨核信号路由,因此DCM可以与以太栈(ETH,TCPIP等)位于不同的核。
-
同时,Doip具有与SD模块一样的功能,能对Soad模块中套接字进行控制,从而达到控制doip发送开关的效果。
1.6 PDU流向
-
SoAd<------------------>UdpNM
-
SoAd<------------------>SD
-
SoAd<------------------>DoIP; DoIP<------------------>PduR; PduR<------------------>Dcm
-
SoAd<------------------>PduR; PduR<------------------>LdCom/Com