vsomeip 安装与配置
someip配置过程
[toc]
文档描述CommonAPI SomIP的配置和示例运行过程中的步骤和问题
借鉴了github中COMMONAPI SOMEIP DEMO的内容,并针对过程问题改进
I 安装
sudo apt-get install cmake cmake-qt-gui libexpat-dev expat default-jre
安装Java运行环境
地址:http://www.oracle.com/technetwork/java/javase/downloads/server-jre8-downloads-2133154.html
oracle的官网下载必须进行注册后,才能下载!!!,完成jdk-8u341-linux-x64.tar.gz
的下载
安装步骤
|
|
在.bashrc中配置
JAVA_HOME=/home/xxx/java/jdk1.8.0_341
JAVA_BIN=/home/xxx/java/jdk1.8.0_341/bin
export JAVA_HOME JAVA_BIN
执行source .bashrc
执行java -version
查看输出
之前先进行了jre8的安装,然后安装了default-jre,导致jre版本变更到了jre11. 采用命令进行切换 切换JAVA版本到Oracle jdk1.8:
sudo update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_281/bin/java 700
sudo update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_281/bin/javac 700
sudo update-alternatives --install /usr/bin/jar jar /opt/jdk1.8.0_281/bin/jar 700
sudo update-alternatives --config java # 选择jdk1.8
java -version # 检查是否配置成功
安装boost
地址:https://www.boost.org/users/download/
cd boost_1_57_0
./bootstrap.sh
./b2 link=shared
sudo ./b2 install
c++常用库,一般没有安装问题
安装CommonAPI的相关内容
此处主要问题是,中文资料相对过时,提供的资料库已经删除 https://github.com/GENIVI/vsomeip.git
而资料网站也已经关闭,无法打开,导致资料包无从下载 https://docs.projects.genivi.org/yamaica-update-site/CommonAPI
目前所有的安装相关资料包全部托管在github
地址为https://github.com/COVESA/
的仓库中
所用用到的资料包有:
- capicxx-core-runtime-master
- capicxx-core-tools-master
- capicxx-dbus-runtime-master
- capicxx-someip-runtime-master
- capicxx-someip-tools-master
- vsomeip-master
1. 安装vsomeip
cd vsomeip
mkdir build
cd build
cmake -DENABLE_SIGNAL_HANDLING=1 -DDIAGNOSIS_ADDRESS=0x10 …
问题:
- doxygen dot not found
- No package ‘automotive-dlt’ found
- No package ‘libsystemd’ found
- asciidoc is not installed
- source-highlight is not installed
安装依赖:
sudo apt install doxygen
sudo apt install libsystemd-dev
sudo apt install asciidoc
sudo apt install source-highlight
其中‘automotive-dlt需要在安装dlt-daemon,项目同样托管在COVESA中.
2. 安装Core Runtime
cd capicxx-core-runtime/
mkdir build
cd build
cmake …
make
sudo make install
3. 安装SomeIP Runtime
cd capicxx-someip-runtime/
mkdir build
cd build
cmake -DUSE_INSTALLED_COMMONAPI=OFF …
make
sudo make install
4. 编译CommonAPI Core/SomeIP Runtime代码生成工具
其中,需要重新安装maven.sudo apt-get install maven
,利用mvn -v
查看版本
cd capicxx-core-tools/org.genivi.commonapi.core.releng
mvn -Dtarget.id=org.genivi.commonapi.core.target clean verify
命令执行时间很长,会出现无法从eclipse网站下载插件的问题,应该是脚本路径问题
尝试将org.genivi.commonapi.core.target
修改到ustc源上,但是报错.
万幸的是,作者在github中提供了编译好的版本,工具可直接进行下载.
故利用手机下载,然后导入微信(不知道为什么无法导入企业微信),再切换服务器到wifi,登录网页微信,下载到服务器(尴尬).
完成了generator工具的下载后,便可以利用生成工具对fidl文件进行解析
II 编译
从git上拿到工程commonapi_someip_demo
利用生成器生成代码:
./../commonapi_core_generator/commonapi-core-generator-linux-x86_64 -sk ./fidl/HelloWorld.fidl
./../commonapi_someip_generator/commonapi-someip-generator-linux-x86_64 ./fidl/HelloWorld.fdepl
需要解压整个文件夹,负责会出现生成器运行崩溃的问题.
完成运行后,会在工程目录下生成src-gen文件夹,包括:
HelloWorld.hpp
HelloWorldProxy.hpp
HelloWorldProxyBase.hpp
HelloWorldSomeIPDeployment.cpp
HelloWorldSomeIPDeployment.hpp
HelloWorldSomeIPProxy.cpp
HelloWorldSomeIPProxy.hpp
HelloWorldSomeIPStubAdapter.cpp
HelloWorldSomeIPStubAdapter.hpp
HelloWorldStub.hpp
HelloWorldStubDefault.hpp
进行工程编译:
mkdir build
cd build
cmake ..
make
工程编译出现-lvsomip
无法找到的问题
CMakeLists.txt中:
PROJECT(HelloWorldDemo)
cmake_minimum_required(VERSION 3.5)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -std=c++0x")
include_directories(
src-gen
/usr/local/include/CommonAPI-3.2
/usr/local/include/vsomeip
)
link_directories(
/usr/local/lib
)
add_executable(HelloWorldClient
src/HelloWorldClient.cpp
src-gen/v1/commonapi/HelloWorldSomeIPProxy.cpp
src-gen/v1/commonapi/HelloWorldSomeIPDeployment.cpp
)
target_link_libraries(HelloWorldClient CommonAPI CommonAPI-SomeIP vsomeip)
add_executable(HelloWorldService
src/HelloWorldService.cpp
src/HelloWorldStubImpl.cpp
src-gen/v1/commonapi/HelloWorldSomeIPStubAdapter.cpp
# src-gen/v1/commonapi/HelloWorldStubDefault.cpp
src-gen/v1/commonapi/HelloWorldSomeIPDeployment.cpp
)
target_link_libraries(HelloWorldService CommonAPI CommonAPI-SomeIP vsomeip)
vsomeip编译为vsomeip3,问题解决.
III 运行
在fidl文件夹中创建vsomeip.json
.
启动两个ternimal,进入到build目录下,运行
#t1:
cd build
export VSOMEIP_CONFIGURATION_FILE=../fidl/vsomeip.json
VSOMEIP_APPLICATION_NAME=service-sample ./HelloWorldService
#t2:
VSOMEIP_APPLICATION_NAME=client-sample ./
然后,就会出现hello,Bob
从service传送到client,说明运行符合预期.
具体输出在sucess1.