AUTOSAR中的服务发现模块(SOME/IPSD)的规范与实例分析

原创 汽车电子与软件 2024-11-13 08:29

      

 

作者 | 不可说

出品 | 汽车电子与软件



#01
引  入
          
服务发现模块(Service Discovery Module)的主要任务是在车内通信中管理服务(functional entities)的可用性,这些服务被称为功能实体,并控制事件消息的发送行为。这一机制确保仅将事件消息发送给需要它们的接收方(即采用发布/订阅模式)。此处描述的解决方案就被称为SOME/IP-SD(基于IP的可扩展面向服务中间件 - 服务发现,Scalable service-Oriented MiddlewarE over IP - Service Discovery)。
               

 

通过服务发现功能,不同的电子控制单元(ECU)可以提供服务实例,并在车辆网络中查找可用的服务实例。一个ECU可以停止提供之前提供的服务实例,之后对该服务实例的查找将得不到响应。服务实例是由其服务接口定义的服务的单个实现。
               

 

除了管理服务实例的状态外,服务发现还能控制发送一种特殊消息,即事件消息。这些事件消息被分组到事件组中,服务发现可以以发布/订阅的方式开启或关闭这些事件组,从而开启或关闭该事件组中事件的发送和接收。
           


#02
SOME/IP SD对不同ECU角色的职责  

ECU的服务发现模块在处理服务器服务和客户端服务时扮演着不同的角色,并需要执行相应的操作来确保服务的正确提供和查找。   

一个ECU需要处理两种不同类型的服务:

服务端服务(Server Services):本地ECU向车辆的其他部分提供服务器服务实例(即位于本地的服务实例),并可以被视为该服务实例的服务端。

客户端服务(Client Services):本地ECU可能会使用车辆内另一个ECU提供的服务器服务实例,并可以被视为该服务实例的客户端。

对于服务端服务,本地ECU的SOME/IP SD模块(担任服务器角色)需要执行以下操作:

  • 当服务可用时(即提供服务的软件组件(SWC)准备就绪,且服务在当前ECU状态下可用)提供本地服务。

  • 当服务不再可用时,撤回本地服务的提供(停止提供)。

  • 响应其他ECU的查找请求。
         

 

对于客户端服务,本地ECU的服务发现模块(担任客户端角色)需要执行以下操作:

  • 根据配置监听提供的服务和查找请求,并将这些信息存储在易失性存储器中。

  • 监听停止提供的服务信息,并根据配置将这些信息存储在易失性存储器中。

  • 根据当前ECU及其软件组件(SWC)的状态发送查找请求。
         

 

服务发现同样可用于管理发布/订阅(Publish/Subscribe)关系。在基于服务发现的发布/订阅应用场景中,一个ECU(作为具有已消费事件组的发布/订阅客户端)对从另一个ECU(作为具有事件处理器的发布/订阅服务器)接收某些数据(即订阅)感兴趣。
         

 

虽然订阅关系在服务发现(SD)消息中明确定义,但发布关系则基于服务实例本身的可用性(即提供服务条目)。基于所提供的服务实例,发布/订阅客户端可通过订阅事件组条目进行订阅。此时,发布/订阅服务器将利用此订阅关系,将发布/订阅客户端注册为对订阅中指定的某些信息感兴趣的方,并在发生某些事件或超时后,开始将这些信息发送给发布/订阅客户端。   
         

 

为进行优化,服务发现支持使用多播消息而非每个客户端的单播消息,将事件消息发送给多个客户端。但请注意,服务器端和客户端预先配置的多播之间存在差异:
         

 

  • 如果SdServerService(服务端服务)为每个事件处理器预先配置了多播地址和端口(即所谓“事件处理器多播端点”),则当订阅了具有不同端点信息的SdClientServices(客户端服务)达到阈值(SdEventHandler MulticastThreshold,事件处理器多播阈值)时,SdServerService将切换至此多播地址和端口。

  • 如果SdClientService(客户端服务)使用多播地址和端口(即所谓“已消费事件组多播端点”)进行了订阅,则SdServerService在订阅已消费事件组多播端点(多播地址和端口)时,会向其发送事件。

   



#03
SD流程

服务发布流程  



  • Down Phase

服务处于不可用状态

  • Initial Wait Phase

服务准备完成后, 进入该阶段, 延迟一定时间后发送服务发布报文

  • Repetition Phase

重复发送服务发布报文, 重复次数由配置参数决定, 此阶段收到服务发现请求后,通过服务发布报文进行应答

  • Main Phase

周期性发送服务发布报文, 周期时间由配置参数决定, 此阶段收到服务发现请求后,通过服务发布报文进行应答    

服务发现流程  



  • Down Phase

服务未被应用请求

  • Initial Wait Phase

应用发起服务请求后进入该阶段

  • Repetition Phase

重复发送服务发现报文, 重复次数由配置文件参数REPETITION_MAX决定, 收到服务发布报文后, 停止发送服务发现报文

  • Main Phase

不再重复发送服务发现报文, 每次收到服务发布报文后, 触发服务订阅请求报文。
         

 

   

服务订阅流程  


         

 

  • 服务发现

  • 连接建立

  • 注册服务

  • 事件通知
         

 

   


#04
SOME/IP SD协议规范


服务发现消息格式

SOME/IP SD中的Message ID是固定的字段:0xFFFF8100;

Length占用32bits位,其数值表示从Request ID到报文最尾端的字节数;

Request ID 由Client ID 和Session ID 组成。虽然Client ID 不用于服务发现,但Session ID 用于检测车辆中其他服务发现实例的重启或重启,以修复服务发现模块的本地状态。在初始化 Service Discovery Module 后, ECU 发送的消息的 Session ID应为0x0001。
         

 

Protocol Version 字段是用来描述当前SOME/IP协议版本,目前是0x01;

Interface Version 字段是用来描述当前SOME/IP服务的版本;

Message Type 字段用来区分 SOME/IP 消息的类型, SOME/IP-SD 仅仅使用事件消息,因此固定为0x2;

Return Code用于表示请求是否已成功处理。这不适用于SOME/IP-SD;因此返回码被静态设置为0x00。   
         

 

SOME/IP SD从Message ID到Return Code字段的格式与SOME/IP 协议格式是一致的;后面的字段才是SOME/IP SD独有的。
         

 

Flag  


使用Flags字段启动SOME/IP-SD标头。它用于发送全局服务发现信息,其中包括当前上次重新启动的状态以及接收单播消息的能力。

如果服务4端或客户端通过评估通信方发送的SOME/IP-SD消息的会话ID(Session ID)和重启标志(Reboot Flag)检测到重启,则受影响的通信本地状态将失效,并应执行以下操作:
         

 

  • 客户端检测到服务端重启时的处理:

1)如果客户端检测到服务端重启,并且该客户端正在使用该服务端的服务,则客户端应将此次重启视为接收到“停止提供服务”(StopOffer)消息。

2)如果为该服务配置了SdClientServiceTcpRef,则活动客户端应通过调用SoAd_CloseSoCon()函数并设置参数“abort”为TRUE来关闭相应的TCP连接。

  • 服务器检测到客户端重启时的处理:

如果服务器检测到客户端重启,并且该客户端正在使用该服务端的服务,则服务端应将此次重启视为接收到“停止订阅事件组”(StopSubscribeEventgroup)消息。
         

 

Reserved  


保留的字段,当前没有实际含义。

Length of Entries Array  


该字段值表示下面Entries Array字段的大小,单位为byte。   

Entries Array  


该字段大小是浮动的,并且有两种类型,一种是服务Entries,一种是事件组Entries

服务Services Entries


  • Type为0x00时,表示FindService;为0x01时,表示OfferService和StopOfferService

  • Index 1st options 标明属于这个Entry的第一个option的起始索引序号,从0开始计算;Index 2st options 标明属于这个Entry的第二个option的起始索引序号,从0开始计算;#of opt 1表明该entry有几个第一组option;#of opt 2表明有几个第二组option。

  • 该类型Service ID字段应携带服务的Service ID,根据是服务端还是客户端,使用参数SdServerServiceID或SdClientServiceID进行静态配置。

  • Instance ID字段应携带服务的Instance ID,根据是服务端还是客户端,使用参数SdServerSer-viceInstanceID和SdClientServiceInstanceID静态配置。

  • Major Version字段应包含SdServerServiceMajorVersion或者SdClientServiceMajorVersion,这取决于该条消息是服务端发送的还是客户端发送的。

  • TTL字段定义了使用参数SdServerTimer TTL和SdClientTimer TTL配置的服务器条目的生存期(秒),但TTL为0的Stop Entries除外。

  • Minor字段应携带SdServerServiceMinorVersion或者SdClientServiceMinorVersion,这些都是在服务设计阶段就已经规范好的。
         

 

Eventgroups Entries   


Service ID、Instance ID、Major Version、TTL与Services Entries中定义是一致的;

Type为0x06时,表示SubscribeEventgroup和StopSubscribeEventgroup;为0x07时,SubscribeEventgroupAck和SubscribeEventgroupNack;

Counter用于区分同一订阅者的相同订阅事件组。如果不使用,设置为0x0;

Eventgroup ID字段应包含使用参数SdConsumerEvent GroupID配置的事件组的ID,也是在通信设计阶段定义好的事件组ID。
         

 

Length of Options Array  


该字段值表示下面Options Array字段的大小,单位为byte。
         

 

Options Array  


Options Array也是有多种类型的:

Configuration Option


Type为0x1;

Configuration Options Array可以配置服务发现消息中条目的其他属性。可以使用配置选项传输0到n个配置项。这些配置项可以包括例如主机或服务的名称;如:   

         

 

IPv4 Endpoint Option


Type为0x4;

该Option传输单播IP地址、第四层协议(如UDP或TCP)和端口号;从而获取与服务通信所需的信息。当接收到提供服务并传输IPv4选项的服务发现消息时,接收此消息的ECU可以通过更新Socket连接,动态配置套接字适配器以使用此服务。
         

 

IPv4 Multicast Option


Type为0x14;

IPv4多播选项由SdServerService或者SdClientService用于通告其配置的事件多播端点;

  • 如果用作服务端的多播端点,则SdServerService会声明IPv4多播地址、传输层协议(ISO/OSI第4层)和端口号,多播事件和多播通知事件将发送到这些端口。

  • 如果它用作客户端事件组多播端点,则SdClientSer指示IPv4多播地址、传输层协议(ISO/OSI第4层)和端口号,SdClient期望在其中接收事件。作为传输层协议,只支持UDP。  
 
IPv4 SD Endpoint Option


Type为0x24;

IPv4 SD端点选项传输发送方SD实现的端点(即IP地址和端口)。这用于在无法使用IP地址和/或端口号的情况下标识SOME/IP-SD实例。
         

 

Option也支持 IPv6 Endpoint Option、IPv6 Multicast Option、IPv6 SD Endpoint Option,但是在车载通信中,IPv4就足够了,并且通常会禁用IPv6,因此此处不介绍IPv6相关的Option。
         

 



#05
通信实例分析 

第一个(offer)  



Length of Entries Array为0x10,表示Entry有16 bytes大小。只有一个Entry,type为0x01,也就是归属于Services Entries,TTL不为0,表示offer service,即表示服务发布,#opt1值为1,表示有一个option;该服务的服务id为0x12、实例id为0x1,设置的ttl为3,服务主版本为1、次要版本为0。   

Length of Options Array为0xc,表示Option共计12 bytes大小。该option信息是上面的Entry的信息补充。Length为0x9,Type为0x4,表示这个是IPv4 Endpoint Option;IP地址解析为192.168.60.4,对应原始数据为c0 08 3c 04,也表明了L4层使用的是TCP(0x0006)。

最后的ox7725则是表示端口号,即30501。
         

 

第二个(Subscribe)  



Length of Entries Array为0x10,表示Entry有16 bytes大小。只有一个Entry,type为0x06,也就是归属于Eventgroups Entries,TTL不为0,表示Subscribe Eventgroup,即表示服务事件组的订阅,#opt1值为1,表示有一个option;该服务的服务id为0xd、实例id为0x1,设置的ttl为16777215,即0xffffff,表示订阅一直有效,不过一般应该避免这样设置。服务主版本为1、订阅的服务实例ID为1。

Length of Options Array为0xc,表示Option共计12 bytes大小。该option信息是上面的Entry的信息补充。Length为0x9,Type为0x4,表示这个是IPv4 Endpoint Option;IP地址解析为192.168.60.1,对应原始数据为c0 08 3c 01,也表明了L4层使用的是TCP(0x0006)。   

最后的0x771b则是表示端口号,即30491。
         

 


         

 

   
/ END /


汽车电子与软件 主要介绍汽车电子软件设计相关内容,每天分享一篇技术文章!
评论 (0)
  • 后摄像头是长这个样子,如下图。5孔(D-,D+,5V,12V,GND),说的是连接线的个数,如下图。4LED,+12V驱动4颗LED灯珠,给摄像头补光用的,如下图。打开后盖,发现里面有透明白胶(防水)和白色硬胶(固定),用合适的工具,清理其中的胶状物。BOT层,AN3860,Panasonic Semiconductor (松下电器)制造的,Cylinder Motor Driver IC for Video Camera,如下图。TOP层,感光芯片和广角聚焦镜头组合,如下图。感光芯片,看着是玻
    liweicheng 2025-05-07 23:55 110浏览
  • 某国产固态电解的2次和3次谐波失真相当好,值得一试。(仅供参考)现在国产固态电解的性能跟上来了,值得一试。当然不是随便搞低端的那种。电容器对音质的影响_电子基础-面包板社区  https://mbb.eet-china.com/forum/topic/150182_1_1.html (右键复制链接打开)电容器对音质的影响相当大。电容器在音频系统中的角色不可忽视,它们能够调整系统增益、提供合适的偏置、抑制电源噪声并隔离直流成分。然而,在便携式设备中,由于空间、成本的限
    bruce小肥羊 2025-05-04 18:14 245浏览
  • 二位半 5线数码管的驱动方法这个2位半的7段数码管只用5个管脚驱动。如果用常规的7段+共阳/阴则需要用10个管脚。如果把每个段看成独立的灯。5个管脚来点亮,任选其中一个作为COM端时,另外4条线可以单独各控制一个灯。所以实际上最多能驱动5*4 = 20个段。但是这里会有一个小问题。如果想点亮B1,可以让第3条线(P3)置高,P4 置低,其它阳极连P3的灯对应阴极P2 P1都应置高,此时会发现C1也会点亮。实际操作时,可以把COM端线P3设置为PP输出,其它线为OD输出。就可以单独控制了。实际的驱
    southcreek 2025-05-07 15:06 245浏览
  • 浪潮之上:智能时代的觉醒    近日参加了一场课题的答辩,这是医疗人工智能揭榜挂帅的国家项目的地区考场,参与者众多,围绕着医疗健康的主题,八仙过海各显神通,百花齐放。   中国大地正在发生着激动人心的场景:深圳前海深港人工智能算力中心高速运转的液冷服务器,武汉马路上自动驾驶出租车穿行的智慧道路,机器人参与北京的马拉松竞赛。从中央到地方,人工智能相关政策和消息如雨后春笋般不断出台,数字中国的建设图景正在智能浪潮中徐徐展开,战略布局如同围棋
    广州铁金刚 2025-04-30 15:24 387浏览
  • 这款无线入耳式蓝牙耳机是长这个样子的,如下图。侧面特写,如下图。充电接口来个特写,用的是卡座卡在PCB板子上的,上下夹紧PCB的正负极,如下图。撬开耳机喇叭盖子,如下图。精致的喇叭(HY),如下图。喇叭是由电学产生声学的,具体结构如下图。电池包(AFS 451012  21 12),用黄色耐高温胶带进行包裹(安规需求),加强隔离绝缘的,如下图。451012是电池包的型号,聚合物锂电池+3.7V 35mAh,详细如下图。电路板是怎么拿出来的呢,剪断喇叭和电池包的连接线,底部抽出PCB板子
    liweicheng 2025-05-06 22:58 368浏览
  • 2024年初,OpenAI公布的Sora AI视频生成模型,震撼了国产大模型行业。随后国产厂商集体发力视频大模型,快手发布视频生成大模型可灵,字节跳动发布豆包视频生成模型,正式打响了国内AI视频生成领域第一枪。众多企业匆忙入局,只为在这片新兴市场中抢占先机,却往往忽视了技术成熟度与应用规范的打磨。以社交平台上泛滥的 AI 伪造视频为例,全红婵家人被恶意仿冒博流量卖货,明星们也纷纷中招,刘晓庆、张馨予等均曾反馈有人在视频号上通过AI生成视频假冒她。这些伪造视频不仅严重侵犯他人权
    用户1742991715177 2025-05-05 23:08 89浏览
  • 随着智能驾驶时代到来,汽车正转变为移动计算平台。车载AI技术对存储器提出新挑战:既要高性能,又需低功耗和车规级可靠性。贞光科技代理的紫光国芯车规级LPDDR4存储器,以其卓越性能成为国产芯片产业链中的关键一环,为智能汽车提供坚实的"记忆力"支持。作为官方授权代理商,贞光科技通过专业技术团队和完善供应链,让这款国产存储器更好地服务国内汽车厂商。本文将探讨车载AI算力需求现状及贞光科技如何通过紫光国芯LPDDR4产品满足市场需求。 车载AI算力需求激增的背景与挑战智能驾驶推动算力需求爆发式
    贞光科技 2025-05-07 16:54 150浏览
  • 多功能电锅长什么样子,主视图如下图所示。侧视图如下图所示。型号JZ-18A,额定功率600W,额定电压220V,产自潮州市潮安区彩塘镇精致电子配件厂,铭牌如下图所示。有两颗螺丝固定底盖,找到合适的工具,拆开底盖如下图所示。可见和大部分市场的加热锅一样的工作原理,手绘原理图,根据原理图进一步理解和分析。F1为保险,250V/10A,185℃,CPGXLD 250V10A TF185℃ RY 是一款温度保险丝,额定电压是250V,额定电流是10A,动作温度是185℃。CPGXLD是温度保险丝电器元件
    liweicheng 2025-05-05 18:36 278浏览
  • ‌一、高斯计的正确选择‌1、‌明确测量需求‌‌磁场类型‌:区分直流或交流磁场,选择对应仪器(如交流高斯计需支持交变磁场测量)。‌量程范围‌:根据被测磁场强度选择覆盖范围,例如地球磁场(0.3–0.5 G)或工业磁体(数百至数千高斯)。‌精度与分辨率‌:高精度场景(如科研)需选择误差低于1%的仪器,分辨率需匹配微小磁场变化检测需求。2、‌仪器类型选择‌‌手持式‌:便携性强,适合现场快速检测;‌台式‌:精度更高,适用于实验室或工业环境。‌探头类型‌:‌横向/轴向探头‌:根据磁场方向选择,轴向探头适合
    锦正茂科技 2025-05-06 11:36 398浏览
  • 想不到短短几年时间,华为就从“技术封锁”的持久战中突围,成功将“被卡脖子”困境扭转为科技主权的主动争夺战。众所周知,前几年技术霸权国家突然对华为发难,导致芯片供应链被强行掐断,海外市场阵地接连失守,恶意舆论如汹涌潮水,让其瞬间陷入了前所未有的困境。而最近财报显示,华为已经渡过危险期,甚至开始反击。2024年财报数据显示,华为实现全球销售收入8621亿元人民币,净利润626亿元人民币;经营活动现金流为884.17亿元,同比增长26.7%。对比来看,2024年营收同比增长22.42%,2023年为7
    用户1742991715177 2025-05-02 18:40 211浏览
  • UNISOC Miracle Gaming奇迹手游引擎亮点:• 高帧稳帧:支持《王者荣耀》等主流手游90帧高画质模式,连续丢帧率最高降低85%;• 丝滑操控:游戏冷启动速度提升50%,《和平精英》开镜开枪操作延迟降低80%;• 极速网络:专属游戏网络引擎,使《王者荣耀》平均延迟降低80%;• 智感语音:与腾讯GVoice联合,弱网环境仍能保持清晰通话;• 超高画质:游戏画质增强、超级HDR画质、游戏超分技术,优化游戏视效。全球手游市场规模日益壮大,游戏玩家对极致体验的追求愈发苛刻。紫光展锐全新U
    紫光展锐 2025-05-07 17:07 201浏览
  • 你是不是也有在公共场合被偷看手机或笔电的经验呢?科技时代下,不少现代人的各式机密数据都在手机、平板或是笔电等可携式的3C产品上处理,若是经常性地需要在公共场合使用,不管是工作上的机密文件,或是重要的个人信息等,民众都有防窃防盗意识,为了避免他人窥探内容,都会选择使用「防窥保护贴片」,以防止数据外泄。现今市面上「防窥保护贴」、「防窥片」、「屏幕防窥膜」等产品就是这种目的下产物 (以下简称防窥片)!防窥片功能与常见问题解析首先,防窥片最主要的功能就是用来防止他人窥视屏幕上的隐私信息,它是利用百叶窗的
    百佳泰测试实验室 2025-04-30 13:28 643浏览
  • Matter协议是一个由Amazon Alexa、Apple HomeKit、Google Home和Samsung SmartThings等全球科技巨头与CSA联盟共同制定的开放性标准,它就像一份“共生契约”,能让原本相互独立的家居生态在应用层上握手共存,同时它并非另起炉灶,而是以IP(互联网协议)为基础框架,将不同通信协议下的家居设备统一到同一套“语义规则”之下。作为应用层上的互通标准,Matter协议正在重新定义智能家居行业的运行逻辑,它不仅能向下屏蔽家居设备制造商的生态和系统,让设备、平
    华普微HOPERF 2025-05-08 11:40 102浏览
  • 文/郭楚妤编辑/cc孙聪颖‍相较于一众措辞谨慎、毫无掌舵者个人风格的上市公司财报,利亚德的财报显得尤为另类。利亚德光电集团成立于1995年,是一家以LED显示、液晶显示产品设计、生产、销售及服务为主业的高新技术企业。自2016年年报起,无论业绩优劣,董事长李军每年都会在财报末尾附上一首七言打油诗,抒发其对公司当年业绩的感悟。从“三年翻番顺大势”“智能显示我第一”“披荆斩棘幸从容”等词句中,不难窥见李军的雄心壮志。2012年,利亚德(300296.SZ)在深交所创业板上市。成立以来,该公司在细分领
    华尔街科技眼 2025-05-07 19:25 183浏览
  • 5小时自学修好BIOS卡住问题  更换硬盘故障现象:f2、f12均失效,只有ESC和开关机键可用。错误页面:经过AI的故障截图询问,确定是机体内灰尘太多,和硬盘损坏造成,开机卡在BIOS。经过亲手拆螺丝和壳体、排线,跟换了新的2.5寸硬盘,故障排除。理论依据:以下是针对“5小时自学修好BIOS卡住问题+更换硬盘”的综合性解决方案,结合硬件操作和BIOS设置调整,分步骤说明:一、判断BIOS卡住的原因1. 初步排查     拔掉多余硬件:断开所有外接设备(如
    丙丁先生 2025-05-04 09:14 118浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦