Vsomeip安装配置

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的下载

安装步骤

1
2
3
4
mkdir /home/java/  #创建文件夹

tar -zxvf server-jre-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.

updatedupdated2023-03-032023-03-03