概要介绍
背景
据统计,现在每辆电动车上搭载了近百的车载ECU控制器。为了高效地实现越来越复杂的功能(自动驾驶,人车互动,车云一体等),车载控制器由最初的微控制器(仅仅控制某项硬件单元)到功能域控制器(由多个独立功能的ECU组成)。伴随着车载ECU的发展,车载通信技术也在不断发展,从相对低速的CAN、LIN、FlexRay、MOST通信技术,升级到车载以太网通信技术,从应用场景上是为了满足自动驾驶以及车联网所需的高数据通信的应用需求。作为以太网通信技术之一的SOME/IP,是Autosar AP必不可缺的通信协议。
概念
SOME/IP通信,全程为Scalable service-Oriented MiddlewarE over IP,即基于IP通信的面向服务的可扩展中间件。
基于IP:即通信下层为TCP/IP
面向服务:以服务为基础进行通信
可扩展:可兼容各种平台,并且服务内容能够进行扩展
中间件:应用层之下,驱动层之上的控件
服务
上述名称已经明确了SOME/IP协议的概念,就是一种以服务的形式,可变化的,底层是TCP/IP,以太网,可以让应用层调用的的通信协议。但是其中有个关键的疑问:什么是服务??
在百度百科中的意思是:
指履行职务,为他人做事,并使他人从中受益的一种有偿或无偿的活动,不以实物形式而以提供劳动的形式满足他人某种特殊需要
由此可知,服务就是指某个单位完成某件事来满足他人的需求。比如餐厅提供食品加工服务,电台提供广告服务等等。
服务通信方式
为了实现服务,SOME/IP定义了三种方式:Method(方法)、Event(事件)、Field(数据域)
Method(方法)
所谓方法,就是指方法、过程、函数被调用的形式。其相当于RPC(Remote Procedure Call)。即客户端向服务端发出请求其做某件事,服务端返回结果的调用形式。从客户端角度而言,无需知道客户端做了什么,只需要结果即可。
例如,客户去咖啡店购买一杯咖啡,最终得到的就是一杯咖啡,但是并不需要知道咖啡是怎么制作的。
Event(事件)
事件,指特定条件下,服务端主动发送信息给指定客户端。这里的指定客户端是指执行了订阅的客户端。
例如,客户A和客户B,客户A去奶品店进行了购买服务(订阅),每天早上喝到新鲜牛奶。所以每天早上(事件发生的条件)奶品店会送新鲜牛奶到客户A手中,但是客户B没有购买此服务,所以收不到新鲜牛奶。
Field(数据域)
数据域是指针对特定的数据进行处理。处理方式有获取(Getter),设定(Setter),通知(Notifier)三种方式。
获取和设定其实就是客户端用Method方法的形式,对客户端中特定数据进行读写。
而通知是服务端用Event事件的形式,将特定数据的内容发送给客户端。