SOME/IP在Linux/Android编译运行

本文介绍了SOME/IP服务的组成,包括Method、Event和Field。详细阐述了SOME/IP协议,包括消息头和消息体的结构。接着,文章展示了如何在Linux环境下编译和运行VSOMEIP,包括测试示例和hello_world应用。最后,提到了在Android平台上编译VSOMEIP的步骤,涉及boost库的集成和动态库编译。

SOME/IP服务的组成

SOME/IP,全称为Scalable service-Oriented MiddlewarE over IP,是用于控制消息的汽车中间件解决方案。它提供基于网络的面向服务的通信机制,而每个服务一般都是由相近或相关的一些功能组成,服务是SOME/IP的最核心概念。在一个服务中,定义了Server和Client两个角色:Server提供服务,Client调用服务。对于同一个服务,只能存在一个Server,但可以同时存在多个Client调用服务。一个Service由0~多个Event/Method/Field组成。与CAN相比,面向服务的通讯方式能够大大降低总线的负载率。
在SOME/IP中规定服务中可以包含三种接口,分别称为Method、Event和Field,如下图:
在这里插入图片描述

SOME/IP 协议介绍

SOME/IP的报文格式如下图所示,由消息头部(Header)和消息体(Payload)组成,Header主要包括以下字段:
在这里插入图片描述

  • Message ID,用于唯一标识消息,当消息为Method类型时,由Service ID和Method ID组成,当消息为Event类型时,由Service ID和Event ID组成
  • Length,消息长度(从Request ID开始到Payload结束)
  • Request ID,服务提供者和调用者可用于区分相同消息的不同调用,由Client ID和Session ID组成
  • Protocol Version,协议头版本号,目前该值必须为1;
  • Interface Version,接口版本号,一般由服务提供者定义
  • Message Type,用于标识消息的类型,如下图所示:
    在这里插入图片描述
  • Return Code,用于标识请求是否成功处理,不同的消息类型,它们在传输时所携带的Return Code也不同
  • Payload,也叫有效载荷,是消息内容,通常它的长度是可变的

Method | Event | Field

Method

调用或引用一个进程/函数/子程序,通常由Client发起,并由Server答复。Request是最常见的一种Method,由Client向Server请求数据;Response是Request的结果,由Server答复Client的Request。而Method Fire & Forget方式,只Client向Server发起,但Server对该请求不回复。
在这里插入图片描述

Event

Event刚好和Method相反,一个单向的数据传输,用于Server主动向订阅(Subscribe)了相关服务的Client发布(Publish)信息。

FAILED: out/soong/.intermediates/packages/modules/Permission/framework-s/framewo rk-permission-s/android_common_apex30/javac/framework-permission-s.jar rm -rf "out/soong/.intermediates/packages/modules/Permission/framework-s/framewo rk-permission-s/android_common_apex30/javac/classes" "out/soong/.intermediates/p ackages/modules/Permission/framework-s/framework-permission-s/android_common_ape x30/javac/anno" "out/soong/.intermediates/packages/modules/Permission/framework- s/framework-permission-s/android_common_apex30/javac/srcjars" "out/soong/.interm ediates/packages/modules/Permission/framework-s/framework-permission-s/android_c ommon_apex30/javac/framework-permission-s.jar" && mkdir -p "out/soong/.intermedi ates/packages/modules/Permission/framework-s/framework-permission-s/android_comm on_apex30/javac/classes" "out/soong/.intermediates/packages/modules/Permission/f ramework-s/framework-permission-s/android_common_apex30/javac/anno" "out/soong/. intermediates/packages/modules/Permission/framework-s/framework-permission-s/and roid_common_apex30/javac/srcjars" && out/host/linux-x86/bin/zipsync -d out/soong /.intermediates/packages/modules/Permission/framework-s/framework-permission-s/a ndroid_common_apex30/javac/srcjars -l out/soong/.intermediates/packages/modules/ Permission/framework-s/framework-permission-s/android_common_apex30/javac/srcjar s/list -f "*.java" out/soong/.intermediates/packages/modules/Permission/framewor k-s/framework-permission-s/android_common_apex30/gen/aidl/aidl0.srcjar && (if [ -s out/soong/.intermediates/packages/modules/Permission/framework-s/framework-pe rmission-s/android_common_apex30/javac/srcjars/list ] || [ -s out/soong/.interme diates/packages/modules/Permission/framework-s/framework-permission-s/android_co mmon_apex30/javac/framework-permission-s.jar.rsp ] ; then out/host/linux-x86/bin /soong_javac_wrapper prebuilts/jdk/jdk17/linux-x86/bin/javac -J-Xmx2048M -J-XX:O nError="cat hs_err_pid%p.log" -J-XX:CICompilerCount=6 -J-XX:+UseDynamicNumberOfG CThreads -J-XX:+TieredCompilation -J-XX:TieredStopAtLevel=1 -Xmaxerrs 9999999 -e ncoding UTF-8 -sourcepath "" -g -XDskipDuplicateBridges=true -XDstringConcat=inl ine -processorpath out/soong/.intermediates/tools/apifinder/java_api_used_by_mai nline_module/linux_glibc_common/combined/java_api_used_by_mainline_module.jar -p roc:none -Xlint:-dep-ann --system=out/soong/.intermediates/build/soong/java/core -libraries/core-module-lib-stubs-system-modules/android_common/system -classpath out/soong/.intermediates/frameworks/base/android_module_lib_stubs_current/andro id_common/turbine-combined/android_module_lib_stubs_current.jar:out/soong/.inter mediates/frameworks/libs/modules-utils/java/framework-annotations-lib/android_co mmon/turbine-combined/framework-annotations-lib.jar:out/soong/.intermediates/pre builts/sdk/current/androidx/androidx.annotation_annotation/android_common_apex30 /turbine-combined/androidx.annotation_annotation.jar:out/soong/.intermediates/fr ameworks/libs/modules-utils/java/framework-annotations-lib/android_common/turbin e-combined/framework-annotations-lib.jar:out/soong/.intermediates/packages/modul es/Permission/framework-s/framework-permission-s-shared/android_common_apex30/tu rbine-combined/framework-permission-s-shared.jar -source 11 -target 11 -d out/so ong/.intermediates/packages/modules/Permission/framework-s/framework-permission- s/android_common_apex30/javac/classes -s out/soong/.intermediates/packages/modul es/Permission/framework-s/framework-permission-s/android_common_apex30/javac/ann o @out/soong/.intermediates/packages/modules/Permission/framework-s/framework-pe rmission-s/android_common_apex30/javac/framework-permission-s.jar.rsp @out/soong /.intermediates/packages/modules/Permission/framework-s/framework-permission-s/a ndroid_common_apex30/javac/srcjars/list ; fi ) && out/host/linux-x86/bin/soong_z ip -jar -o out/soong/.intermediates/packages/modules/Permission/framework-s/fram ework-permission-s/android_common_apex30/javac/framework-permission-s.jar -C out /soong/.intermediates/packages/modules/Permission/framework-s/framework-permissi on-s/android_common_apex30/javac/classes -D out/soong/.intermediates/packages/mo dules/Permission/framework-s/framework-permission-s/android_common_apex30/javac/ classes && rm -rf "out/soong/.intermediates/packages/modules/Permission/framewor k-s/framework-permission-s/android_common_apex30/javac/srcjars" An exception has occurred in the compiler (17.0.2). Please file a bug against th e Java compiler via the Java bug reporting page (http://bugreport.java.com) afte r checking the Bug Database (http://bugs.java.com) for duplicates. Include your program, the following diagnostic, and the parameters passed to the Java compile r in your report. Thank you. com.sun.tools.javac.code.Symbol$CompletionFailure: class file for androidx.annot ation.RecentlyNonNull not found printing javac parameters to: /home/ts/jiangtao/gauss-chtmas/lagvm/LINUX/android /javac.20250730_102359.args [ 4% 373/8633] //external/guice:guice javac [linux_glibc common] warning: [options] system modules path not set in conjunction with -source 11 out/soong/.intermediates/external/guice/guice/linux_glibc_common/javac/srcjars/e xternal/guice/core/src/com/google/inject/internal/InternalFlags.java:125: warnin g: [removal] AccessController in java.security has been deprecated and marked fo r removal AccessController.doPrivileged( ^ out/soong/.intermediates/external/guice/guice/linux_glibc_common/javac/srcjars/e xternal/guice/core/src/com/google/inject/internal/BytecodeGen.java:142: warning: [removal] AccessController in java.security has been deprecated and marked for removal return AccessController.doPrivileged( ^ 3 warnings 10:24:04 ninja failed with: exit status 1 #### failed to build some targets (08:04 (mm:ss)) ####
07-31
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值