随着ADAS、无人驾驶等技术在汽车领域的不断发展,使用传统CAN总线,在通讯速率、带宽等方面,都已经不能满足设计需求。因此汽车以太网作为其基础技术之一,也越来越得到行业内的重视和认同。在车载以太网中,控制单元的交互是通过SOME/IP来实现的。下面就请跟着小编的脚步,走进SOME/IP的世界。
SOME/IP,Scalable service-Oriented MiddlewarE over IP,是一种专用于汽车嵌入式的客户端/服务器通信机制。位于OSI七层模型中的5-7层。与CAN总线相比,实现了从小平台到大平台的扩展,兼容更多的用户案例和通信伙伴节点,并且既能够应用到嵌入式AUTOSAR系统中,又可以应用于Linux、QNX或Android等高级操作系统中。
SOME/IP报头格式
SOME/IP的功能
1、数据的序列化和反序列化
将网络中的对象,比如结构体或者字符串转换成二进制流进行传输的过程。娱乐信息的控制器可以支持8Byte对齐,所有的ECU应至少支持4Byte对齐序列化要求字节对齐,提高CPU的访问效率。
2、RPC远程调用机制
远程调用机制包括以下几种:
- 请求/响应(R/R)通信
客户端发送一条Request消息,该消息由服务端Response。
- 焚烧 & 忘记(F & F)通信
客户端向服务器调用方法,无需服务器响应消息的请求称为fire&forget。
- 通知事件(Notification Event)
与CAN报文类似,当客户端订阅Event Group后,当发生某些特定事件时(周期更新、值发生改变或值改变了ε),服务器就会给客户端发送Event报文。
- 域(Field)
Field是Getter、Setter和Notifier的组合。Getter是一个请求/回应调用,请求报文的payload为空,Field的值置于响应报文的payload中。同样Setter也是一个请求/回应调用,将要设置的Field的值置于请求报文的payload中,响应报文的payload也要放置Field设置的值。Notifier同Event类似,Field中的事件报文在Field值更新时会发送出来,但遵循事件发送规则。
3、管理整个网络中服务的状态
- 通信机制
SOME/IP通过以太网提供面向服务的通讯,采用SOME/IP-Service Discovery定位服务实例,并检测服务的运行状态,同时发布订阅处理功能。
客户端收到需要的服务,会发送订阅报文,服务端给出订阅ACK后,开始发送Event。所有需要Event或NotificationEvent的客户端必须在运行时间中利用SOME/IP-SD在某个server上注册。
1.服务发现通信行为
对每一个服务实例或事件组,服务发现在发送条目时必须至少包含初始等待阶段、重复阶段和主阶段。
2.初始等待阶段
随机等待一段时间后发送报文(发现服务和提供服务条目)。
3.重复阶段
服务发现实现时必须在重复阶段等待一段时间,且发送的条目数量有限制。如果发送的条目数量设置为0,则必须跳过重复阶段。在初始等待阶段之后服务实例进入主阶段。
4.主阶段
在进入主阶段之后,必须等待一段时间后发送第一条报文,循环发送提供服务报文。
当某ECU的服务实例停止服务时,必须发送停止提供服务条目。服务端的状态机如下图所示:
客户端在Down阶段如收到提供服务条目,可内部调用服务请求;如未收到提供服务条目,则进入初始等待阶段等待一段时间后进入重复阶段发送报文,接收到提供服务条目,进入主阶段。当收到服务实例停止服务时,服务停止,仍停留在主阶段。客户端的状态机如下图所示:
SOME/IP与AUTOSAR
在AUTOSAR架构中,SOME/IP-SD模块位于AUTOSAR BSW Mode Manager module(BswM)和AUTOSAR Socket Adaptor module (SoAd)之间,如图11所示。BswM模块提供了通用模式请求和服务请求之间的连接。SoAd模块则处理以太网堆栈和Sd模块之间的服务请求。通过配置SoAd中的SocketConnection表,可以接收其他ECU的Sd模块发来的单播和多播报文。
好啦,以上就是关于SOME/IP协议部分的介绍喽,关于SOME/IP的其他方面介绍,我们会在后续陆续为大家推出,敬请期待~