VSOMEIP源码: 可以编译相应的动态库,编译之前,需要依赖boost的库,https://github.com/COVESA/vsomeip
capicxx-core-runtime:commonapi的运行时代码,编译后可生成libCommonAPI.so库,https://github.com/COVESA/capicxx-core-runtime
capicxx-someip-runtime:commonapi-someip-runtime代码,编译时需要依赖commonapi和vsomeip,编译后可生成libCommonapi-Someip.so, https://github.com/GENIVI/capicxx-someip-runtime
Commonapi_core_generator:根据fidl文件生成CommonAPI的代码,https://github.com/COVESA/capicxx-core-tools/releases
commonapi_someip_generator: 根据fdepl文件生成CommonAPI-Someip的代码,https://github.com/GENIVI/capicxx-someip-tools/releases
在编译和运行CommonAPI-SomeIP时遇到的问题:
1. 在编译库时cmake的参数-DCMAKE_PREFIX_PATH=path ,path设置为编译该库需要依赖的库以及头文件目录,DCMAKE_INSTALL_PATH=path1,path1设置为该库编译好之后存放的目录,在cmake之后,执行make install可将该库在之前设定的指定目录安装。
2.使用Commonapi_core_generator的程序时,需要添加参数 -sk 。在linux执行该程序时,可能会出现java环境未安装,报错内容为:“A Java runtimeEnvironment(JRE)or Java Development Kit (JDK) must be available in order to run Commonapi-core-generator-linux-x86_64.No Java virtual machine was found after searching the following locations:*/jre/bin/java java in your current PATH”。可以安装如下命令安装JDK:
sudo apt install openjdk-8-jre-headless
或
sudo apt install openjdk-11-jre-headless
或
sudo apt install default-jre
3. capicxx-core-tools:内容包含CommonAPI-Example,里面有相关的example可以使用,注意编译过程中默认使用的是DBUS,直接编译可能会出现找不到DBUS的情况,修改相应的CMakeLists.txt即可。
4.在运行CommonAPI-Somip时注意加载的配置文件为默认的或者通过自己写sh脚本定义好默认的加载库以及加载配置文件和vsomeip的application name,如果库无法加载,可能会报configuration could not be load的错误,通过vsomeip源码进行查看,该错误出现的原因在于libvsomeip-cfg未成功加载。
5.在移植到其他机器上可能会出现库无法加载,可能是由于以下两个原因:
注意看库的路径是否为库安装路径的直接lib目录,如果目录错误可能无法加载;
可能由于软链接失效出现file is too short,此时依次安装依赖关系建立软链接。
6.在同一个机器上使用vsomeip时,注意配置文件中routing的配置,routing必须为此机器上第一个启动的应用程序的application name,注意此application name并不是生成的可执行程序的名称,而是someip中create application的名称,并且一个机器上只能有一个程序作为路由,如果第二个程序启动配置了不同路由,会出现报错 路由已经存在的错误,因此将第二个配置文件的路由修改为第一个程序启动时使用的路由。同一个机器上可以不用配置IP地址。
7.在进行跨板子传输时,必须正确配置ip地址,并且添加路由服务到本机,添加路由服务的命令如下:
route add -net 224.0.0.0/4 dev ens33
//ens33为网卡名