汽车领域SOA比较热门的通信中间件主要有DDS和SOMEIP,本次主要做一下SOMEIP的实践,vsomeip是BMW实现的开源someip库,目前主要实现了someip的通信和服务发现功能。
1. 下载vsomeip源代码
地址:https://github.com/COVESA/vsomeip
下载最新的软件包,这里使用3.3.0版本
2. 安装依赖的软件包
打开源码documentation下的vsomeipUserGuide,可以看见编译的依赖要求。
vsomeip 依赖boost库,不同版本的boost库对vsomeip的编译影响都不一样,在这里我们不指定版本。
安装相关指令如下
sudo apt-get install libboost-system-dev libboost-thread-dev libboost-log-dev
sudo apt-get install asciidoc source-highlight doxygen graphviz
sudo apt-get install gcc g++ make
3. vsomeip编译
根据代码的文档按照下面的指令编译
mkdir build
cd build
cmake ..
make
sudo make install
执行大概需要几分钟,如果虚拟机支持多个线程一起编译,可以使用make -j4 代替make,提高编译速度。编译后生成相关的库文件。
其中:
libvsomeip3-cfg.so 配置库
libvsomeip3-e2e.so 安全库
libvsomeip3-sd.so 服务发现库
libvsomeip3.so 通信相关协议库
4. 编译helloworld例子
cd <root directory of vSomeIP-Lib>/examples/hello_world$:
mkdir build
cd build
cmake ..
make
然后分别执行服务端和客户端
在这里为了方便使用两个sh文件
server.sh:
VSOMEIP_CONFIGURATION=../helloworld-local.json \
VSOMEIP_APPLICATION_NAME=hello_world_service \
./hello_world_service3
client.sh
VSOMEIP_CONFIGURATION=../helloworld-local.json \
VSOMEIP_APPLICATION_NAME=hello_world_client \
./hello_world_client