基本概念
GENIVI基于SOME/IP协议的实现就是vsomeip,其基本架构如下图:
如图所示,vsomeip不仅实现了 SOME/IP中两个设备间的通信,也实现了同个设备中的内部进程间通信。两个设备之间的通信通过 communication endpoint(该endpoint决定使用TCP还是UDP协议)实现的。设备内部的通信通过 local endpoints来实现,实际上是通过 unix domain socket机制实现的。因为内部通信不用通过central component(例如:D-Bus daemon)进行路由管理,所以传输速度非常快。
vsomeip内部的路由管理只有在message需要在两个设备间传输的时候才会起作用。一个机器上只会存在一个路由管理,如果不指定路由管理,那么第一个被启动的app就会被作为路由管理来使用
注意:
vsomeip没有实现数据序列化的功能。序列化是通过SOME/IP绑定的CommonAPI实现的。vsomeip实现了SOME/IP protocol和the Service Discovery。
版本选择
vsomeip依赖boost库,因此在编译vsomeip之前,首先需要编译boost.(对于boost库的要求是大于等于1.55小于等于1.74)
本文选择的版本:
boost:1.74
vsomeip:3.3.8
代码的下载
boost下载地址
vsomeip下载地址
https://github