# 应对测试项目
ros2和cyber较大,在低配置工作需求实现困难。
someip编译
备注
- 依赖库 boost1.75(高版本不支持,2022.10.8)
- 依赖lsystemd,arm7(busybox的不支持),
- aarch64 系统支持
- QNX6,7支持
- 局域网和本机互联
mkdir build
cd build
cmake ..
make examples # 可用测试req/res
- sudo make install
测试
基本概念
基本工具部署
- [CommonAPI入门](CommonAPI入门 - (jianshu.com)
)
部署 commonapi (CommonAPI runtime库,包含用于构建runtime库的源代码)
git clone https://ghproxy.com/https://github.com/COVESA/capicxx-core-runtime
mkdir build
cd build
cmake ..
sudo make install
## libCommonAPI.so.3.2.0等
部署capicxx-someip-runtime(CommonAPI SOME/IP runtime库和源代码,用于构建SOME/IP binding的runtime库)
git clone https://ghproxy.com/https://github.com/COVESA/capicxx-someip-runtime
cmake .. -DCMAKE_PREFIX_PATH="/usr/local/lib/cmake/CommonAPI-3.2.0"
mkdir build
cd build
cmake ..
sudo make install
## libCommonAPI-SomeIP.so.3.2.0 等
capicxx-core-tools 直接下载(CommonAPI 代码生成器库,包含CommonAPI代码生成器的源代码(java/xtend eclipse插件))。编译fidl
https://github.com/COVESA/capicxx-core-tools/releases
下载版本3.2.0.1(commonapi_core_generator)
注意,删除windows的可执行文件,方便后续idl
capicxx-someip-tools(CommonAPI SOME/IP代码生成器库,其中包含CommonAPI SOME/IP代码生成器的源代码(java/xtend eclipse插件),该生成器是生成SOME/IP特定源代码(SOME/IP粘合代码)所需的
)可以直接下载已编译好的成果物。编译fdepl
https://github.com/COVESA/capicxx-someip-tools/releases下的
commonapi_someip_generator.zip(commonapi_someip_generator.zip)
基本工具使用
FrancaIDL是一种接口描述语言,和编程语言无关。fidl文件是用IDL写的,它描述了服务提供的接口信息,包括类型(比如method、broadcast、attribute等)、参数、返回值。类似proto,asn.1,扩展性差点,但是适合autosar,例子如下:
package commonapi #hello.fidl
interface HelloWorld {
version {major 1 minor 0}
method sayHello {
in {
String name
}
out {
String message
}
}
}
fdepl文件描述了服务的部署信息,包括Service ID、Instance ID、Method ID、Event ID等。
#HelloWorld.fdepl
import "platform:/plugin/org.genivi.commonapi.someip/deployment/CommonAPI-SOMEIP_deployment_spec.fdepl"
import "HelloWorld.fidl"
define org.genivi.commonapi.someip.deployment for interface commonapi.HelloWorld {
SomeIpServiceID = 4660
method sayHello {
SomeIpMethodID = 123
}
}
define org.genivi.commonapi.someip.deployment for provider as MyService {
instance commonapi.HelloWorld {
InstanceId = "test"
SomeIpInstanceID = 22136
}
}
注意:fidl和fdepl名字要一致,fdepl里面不要有未知符号。java程序的目录依赖不多。放在同一层次即可
./commonapi_core_generator/commonapi-core-generator-linux-x86_64 -sk ./test/hello.fidl
./commonapi_someip_generator/commonapi-someip-generator-linux-x86_64 -ll verbose ./test/hello.fdepl
输出文件目录为src_gen
代码开发
CommonAPI使用例子-HelloWorld
demo代码
应用
- CommonAPI 的资料: https://github.com/GENIVI/capicxx-core-tools/blob/master/docx/CommonAPICppUserGuide
- 官方给的(例子)[ https://github.com/GENIVI/capicxx-core-tools/tree/master/CommonAPI-Examples]
参考
1、基本知识 vsomeip - GENIVI的SOME/IP开源实现
2、编译SOMEIP编译指导与应用解析