# 應(yīng)對(duì)測(cè)試項(xiàng)目
ros2和cyber較大,在低配置工作需求實(shí)現(xiàn)困難别凹。
someip編譯
備注
- 依賴庫 boost1.75(高版本不支持,2022.10.8)
- 依賴lsystemd堕战,arm7(busybox的不支持),??
- aarch64 系統(tǒng)支持
- QNX6薪介,7支持
- 局域網(wǎng)和本機(jī)互聯(lián)
mkdir build
cd build
cmake ..
make examples # 可用測(cè)試req/res
- sudo make install
測(cè)試
基本概念
基本工具部署
- [CommonAPI入門](CommonAPI入門 - 簡(jiǎn)書 (jianshu.com)
)
部署 commonapi (CommonAPI runtime庫越驻,包含用于構(gòu)建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庫和源代碼伐谈,用于構(gòu)建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的可執(zhí)行文件,方便后續(xù)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是一種接口描述語言戒祠,和編程語言無關(guān)速种。fidl文件是用IDL寫的,它描述了服務(wù)提供的接口信息馏颂,包括類型(比如method棋傍、broadcast、attribute等)近上、參數(shù)、返回值。類似proto感帅,asn.1,擴(kuò)展性差點(diǎn),但是適合autosar岖是,例子如下:
package commonapi #hello.fidl
interface HelloWorld {
version {major 1 minor 0}
method sayHello {
in {
String name
}
out {
String message
}
}
}
fdepl文件描述了服務(wù)的部署信息实苞,包括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里面不要有未知符號(hào)绳慎。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
代碼開發(fā)
CommonAPI使用例子-HelloWorld
demo代碼
應(yīng)用
- CommonAPI 的資料: https://github.com/GENIVI/capicxx-core-tools/blob/master/docx/CommonAPICppUserGuide
- 官方給的(例子)[ https://github.com/GENIVI/capicxx-core-tools/tree/master/CommonAPI-Examples]
參考
1沽甥、基本知識(shí) vsomeip - GENIVI的SOME/IP開源實(shí)現(xiàn)
2、編譯SOMEIP編譯指導(dǎo)與應(yīng)用解析