someip部署测试

# 应对测试项目

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程序的目录依赖不多。放在同一层次即可


image.png
./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编译指导与应用解析

你可能感兴趣的:(someip部署测试)