汽车Automotive > SOME/IP应用学习

news2025/7/12 14:57:19

目录

SOME/IP介绍

SOME/IP主要功能

SOME/IP协议

SOME/IP服务类型

SOME/IP-举例

SOME/IP各模块协议

SOME/IP-基础元件

SOME/IP-SoAD

SOME/IP-SD协议

SOME/IP-SD举例

SOME/IP-TP协议

SOME/IP-TP举例


SOME/IP介绍

        SOME/IP ( Scalable service-Oriented Middleware over IP),即“运行于IP之上的可伸缩(可扩展)的面向服务的中间件”。是一个汽车中间件解决方案,可以用于控制消息。从一开始,它的设计就是为了完美地适应不同尺寸和不同操作系统的设备。这包括小型设备,如相机、AUTOSAR设备,以及头部单元或远程信息处理设备。同时还确保了SOME/IP支持Infotainment域以及车内其他域的功能,从而使SOME/IP可以用于多数替换场景以及更传统的CAN场景。所谓“Middleware中间件”是一种独立的系统软件或服务程序,分布式应用软件可借助Middleware在不同的技术之间共享资源。所谓的分布式应用软件,在这里指的就是“服务”;不同的技术之间,在这里指的就是“不同的平台或操作系统,比如Adaptive AUTOSAR系统等。

        SOME/IP服务是SOME/IP的最核心概念。在一个服务中,定义了ServerClient两个角色:Server提供服务,Client调用服务。对于同一个服务,只能存在一个Server,但可以同时存在多个Client调用服务。一个Service0~多个Event/Method/Field组成。与CAN相比,面向服务的通讯方式能够大大降低总线的负载率。

        SOME/IP不等同于SOA,SOME/IP只是实现了SOA(面向服务的架构)和符合其协议规范。

  •         SOME/IP允许应用程序进行通信。
  •         数据包格式由服务规范自动确定。
  •         服务器提供了一个实现服务接口的服务实例。
  •         客户端使用SOME/IP来使用服务实例。
  •         一个Service0~多个Event/Method/Field组成

SOME/IP主要功能

1) SOME/IP中间件在运行时(而不是在系统设计时)动态地创建服务提供者和服务使用者之间的连接
2) 通过网络提供面向服务的通信
3) SOME/IP 支持广泛的中间件功能
        -序列化转换为二级制序列转换,包含基本数据类型(e.g. Boolean、uint8和sint32等)和复杂数据类型(e.g. struct string和array等)
        -远程过程调用 (RPC) 实现函数的远程调用。
        -服务发现 (SD) 动态查找功能并配置其访问权限。
        -发布/订阅 (Pub/Sub) 动态配置需要哪些数据并将其发送到客户端。
        -UDP 消息的分段允许通过 UDP 传输大型 SOME/IP 消息而无需分段。
4) SOME/IP 可以在不同的操作系统上实现(即 AUTOSAR、GENIVI Linux和 OSEK),甚至没有操作系统的嵌入式设备
5) SOME/IP 用于 ECU 间客户端/服务器序列化

英文原始内如如下:

  • SOME/IP provides service oriented communication over a network
  • SOME/IP supports a wide range of middleware features
  • Serialization–transforming into and from on-wire representation.
  • Remote Procedure Call (RPC) –implementing remote invocation of functions.
  • Service Discovery (SD) –dynamically finding functionality and configuring its access.
  • Publish/Subscribe (Pub/Sub) –dynamically configuring which data is needed and shall be sent to the client.
  • Segmentation of UDP messages –allowing the transport of large SOME/IP messages over UDP without the need of fragmentation.
  • SOME/IP can be implemented on different operating systems (i.e. AUTOSAR, GENIVI Linux and OSEK) and even embedded devices without operating system
  • SOME/IP is used for inter-ECU Client/Server Serialization
  • https://www.mathworks.com/help/autosar/ug/autosar-platform-comparison.html

SOME/IP协议

Message ID,用于唯一标识消息,当消息为Method类型时,由Service IDMethod ID组成,当消息为Event类型时,由Service IDEvent ID组成,如下图所示:

Length,消息长度(Request ID开始到Payload结束)

Request ID,服务提供者和调用者可用于区分相同消息的不同调用,由Client IDSession ID组成。通常我们称服务提供者为Service,服务调用者为ClientService IDClient ID用于区分,一般会在一个SOA架构中统一地配置这些ID的数值。

Protocol Version,协议头版本号,目前该值必须为1

Interface Version,接口版本号,一般由服务提供者定义;

Message TypeReturn Code,用于标识消息的类型,报文类型,目前共5/返回码

Payload,数据段,需要传输的相关数据

SOME/IP服务类型

  • 服务说明
  • 服务是SOME/IP的最核心概念。在一个服务中,定义了ServerClient两个角色:Server提供服务,Client调用服务。
  • 对于同一个服务,只能存在一个Server,但可以同时存在多个Client调用服务。一个Service0~多个Event/Method/Field组成。
  • CAN相比,面向服务的通讯方式能够大大降低总线的负载率。
  • Method
  • 调用或引用一个进程/函数/子程序,通常由Client发起,并由Server答复。
  • Request是最常见的一种Method,由ClientServer请求数据;ResponseRequest的结果,由Server答复ClientRequest
  • Method Fire & Forget方式,只ClientServer发起,但Server对该请求不回复。
  • Event
  • 一个单向的数据传输,只能是on change类型,用于Server主动向订阅(Subscribe)了相关服务的Client发布(Publish)信息。
  • Field
  • 由以下三项内容构成:
  • Notifier:通知,ServerClient订阅了服务后第一时间主动向其发送数据。
  • Getter:获取,由ClientServer读取数据。
  • Setter:设置,由Client修改Server的数据。

SOME/IP-举例

SOME/IP各模块协议

  • SOME/IP被定义到AUTOSAR CPBSW模块的一部分。
  • SOME/IP被统一到AUTOSAR AP的通信管理中。
  • VSOME/IP开源,可以移植到Linux平台,有公司基于VSOME/IP进行自己产品开发

SOME/IP-基础元件

SOME/IP-SoAD

  • SoAD层通过TCP/IP网络实现基于PDU的通信
  • AUTOSAR I-PDU映射到SoAD配置和维护的Socket连接。
  • 要对多个I-PDU使用Socket连接,可在每个I-PDU前面添加一个SoAD PDU头
  • PDU路由组管理-启用/禁用从/到Socket的PDU路由
  • SOME/IP-Socket适配器[SoAD]-AUTOSAR型号通用上层支撑的构建块
    •         要了解Autosar中的通讯栈,就必须了解PDUProtocol Data Unit)。 PDUAutosar通讯中重要的概念,每个PDU包含着SDUPCI,每个PDU拥有独自的ID用于互相区分。 非TP层的I-PDU数据不应超过8字节的长度。 这确保了可以在单个CAN消息中发送I-PDU
  • SOME/IP-SD协议

  •         由于服务需要由ServerClient共同完成,因此在进行正常的数据传输之前,需要一系列的准备工作确认ServerClient之间是否已有网络连接。之后,Client还要询问Server能否提供所需的服务,并对服务的Event进行订阅。这些工作都是通过SOME/IP服务发现(Service Discovery)实现的。SOME/IP服务发现用于定位服务实例、检查服务是否可用以及部署发布和订阅句柄。服务发现只能通过UDP实现。服务发现的报文格式与一般的SOME/IP报文相同,但是其Message ID固定为0xFFFF8100
    •         主要功能
  • 定位服务实例
  • 检测服务实例是否在运行(即服务实例的状态)
  • 发布/订阅行为的管理
    •         SD报文解析
      •         SOME/IP SD报文也是一种SOME/IP报文,是在SOME/IP报文的基础上进行了扩展增加了EntryOption等字段;
  • Entries用于同步服务实例的状态和发布/订阅的管理。
  • Options用于传输Entries的附加信息。
    •         SOME/IP SD报文的ServiceID0xFFFF)、MethodID0x8100)、Request ID0x0000)、ProtocolVersion0x01)、Interface Version0x01)、MessageType0x02)、ReturnCode0x00)等属性都是固定值。
      •         Entry
  • Entry字段可以理解为服务实例的“入口”,该入口包含服务实例以及需要订阅的事件组的信息。主要通过Entry实现提供服务、发现服务,以及订阅事件组的功能。

SOME/IP-SD举例

Term

Description

描述

Service

A functional entity that offers an interface. A logical combination of zero or more methods, zero or more events, and zero or more fields.

提供接口的功能实体。零个或多个Methods、零个或多个events以及零个或多个Field的逻辑组合。

Service Instance

A single instance of the Service. Implementation of a service, which can exist more than once in the vehicle and more than once on an ECU

服务的单个实例。实施一项服务,该服务可以在车辆中存在多次,也可以在ECU中存在多次

Offer Service

A message entry that declares offer of a Service Instance

声明服务实例提供的消息条目

Stop Offer

A message entry that declares stopping of a Service Instance

声明停止服务实例的消息项

Find Service

A message entry used to find a Service Instance.

用于查找服务实例的消息条目

Event

A message send by an ECU implementing a Service Instance to an ECU using this Service Instance.

由执行服务实例的ECU向使用该服务实例的ECU发送的消息

EventGroup

A logical grouping of 1 or more events. An EventGroup is part of a Service.

一个或多个事件的逻辑分组。事件组是服务的一部分

Field

A field does represent a status and thus has an valid value at all times on which getter, setter and notifieract upon.

一个字段确实代表一个状态,因此在gettersetternotified所依赖的任何时候都有一个有效值。

Getter/Setter

A Request/Response call that allows Read/Write access to a field.

允许对字段进行读/写访问的请求/响应调用。

Method

A method, procedure, function, or subroutine that is called/invoked.

被调用的方法、过程、函数或子例程。

Notification Event

An event message of the notifierof a field.

通知字段的事件消息。

Notifier

Sends out event message with a new value on change of the value of the field.

在字段值发生变化时,发送带有新值的事件消息。

Remote Procedure Call (RPC)

A method call from one ECU to another that is transmitted using messages

从一个ECU到另一个ECU的方法调用,使用消息进行传输

  • SD - 服务器角色
  • 回复“查找”
  • 提供服务
  • 收回提供
  • SD - 客户角色
  • 发送“查找”
  • 倾听提供
  • 倾听停止的提供

 

SOME/IP-TP协议

        我们知道CAN-TP是用来对当总线CAN数据过大时,就需要对CAN整包数据进行分割拆包进行发送,这个时候发送方的TP层就起作用,同理对于接收方而言,也需要将分割的数据包进行组包完成整包数据的重组还原。

        因此,举一反三,我们便可以知道SOME/IP-TP模块的主体功能就是为了实现对应用层发送数据过大时进行的必要拆包与组包的工作,进而完成大量数据包的发送与接收。

        SOME/IP作为一种应用层协议,既可以运行在TCP之上,也可以运行在UDP之上,由于TCP协议本身支持发送大量数据同时还支持流控等特点因此无需用到SOME/IP-TP,该协议仅针对运行在UDP协议基础上的SOME/IP协议

        如下图7.1所示,则较为清晰的表明了SOME/IP-TPCP AUTOSAR的具体位置以及与其他模块的交互关系。

 

 

SOME/IP-TP举例

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/39337.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

面向大规模队列,百万并发的多优先级消费系统设计

大规模队列的核心诉求,不仅需要「快」,还需要兼顾「公平」。01 引言 HTTP是一种常用的通信协议,除了常见网站访问、上传下载,HTTP协议还经常被用在消息推送场景上。 设想你搭建了一个电商平台,有很多大型商家入驻了该…

Kotlin协程Flow浅析

Kotlin协程中的Flow主要用于处理复杂的异步数据,以一种”流“的方式,从上到下依次处理,和RxJava的处理方式类型,但是比后者更加强大。 Flow基本概念 Flow中基本上有三个概念,即 发送方,处理中间层&#x…

HTML+CSS大作业 (水果之家10个网页)

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

数字验证学习笔记——SystemVerilog芯片验证11 ——类的继承

一、类和继承 类的第二核心要素,即类的“继承”,继承也符合我们认识实际的观点,在自然界和科学界我们对世界的认识无外乎归纳法和演绎法。 归纳论证是一种由个别到一般的论证方法。它通过许多个别的事例或分论点,然后归纳出它们所…

17、Mybatis获取参数值的情况3(若mapper接口方法的参数为多个时,可以手动将这些参数放入map中存储)

Mybatis获取参数值的情况3(若mapper接口方法的参数为多个时,可以手动将这些参数放入map中存储) 第一步: 第二步: 第三步:

Linux系统tcp连接设置

目录net.ipv4.tcp_syn_retriesnet.ipv4.ip_local_port_rangenet.ipv4.tcp_net.core.somaxconnnet.ipv4.tcp_max_syn_backlognet.core.netdev_max_backlognet.ipv4.tcp_synack_retriesnet.ipv4.tcp_abort_on_overflownet.ipv4.tcp_syncookiesnet.ipv4.tcp_fastopennet.ipv4.tcp_…

兆易创新GD32 (四)FreeRTOS 移植 与 CMSIS OS2

可以完全参考STM32系列的方法 FreeRTOS 逛网下载 FreeRTOS源码 https://www.freertos.org/a00104.html GitHub地址 https://github.com/FreeRTOS/FreeRTOS-Kernel 下载后的FreeRTOS-Kernel复制到LIB文件夹下 在KEIL中添加文件,首先是公共部分 添加MDK移植文件CM4F…

含抽水蓄能电站系统的调峰经济调度研究matlab程序(粒子群算法)

含抽水蓄能电站系统的调峰经济调度研究matlab程序(粒子群算法) 参考文献:抽水蓄能电站的最佳调度方案研究 调峰电源的优化调度是促进电力系统安全稳定运行,实现可靠供电的要措施。因为目前我国的调峰电源严重不足,尤其…

【畅购商城】订单模块之收货人列表

目录 构建订单服务&#xff1a;8100 收货人列表 接口 后端实现&#xff1a;JavaBean 后端实现 前端实现 构建订单服务&#xff1a;8100 步骤一&#xff1a;构建项目&#xff0c;changgou4-service-orders 步骤二&#xff1a;修改pom.xml文件&#xff0c;添加依赖 <de…

Spring核心与设计思想

文章目录Spring 是什么&#xff1f;什么是容器&#xff1f;什么是IoC&#xff1f;传统程序开发控制反转式程序开发对比总结规律理解 Spring IoCDI 概念Spring 是什么&#xff1f; 我们通常所说的 Spring 指的是 Spring Framework&#xff08;Spring 框架&#xff09;&#xff…

ignite集群

ignite集群 基础知识 集群中的结点 Ignite 是一个分布式系统&#xff0c;集群是标配功能。 集群中的 节点&#xff0c;有两类&#xff1a; 服务器结点。具备完全功能的结点。 客户端结点&#xff1a;这个我没有完全理解&#xff0c;但从编程的角度&#xff0c;我初步认为这个…

Jenkins-CentOS安装jenkins

CentOS安装jenkins jenkins适配的jdk版本是17和11 第一步&#xff1a;安装jdk11 &#xff08;1&#xff09;在oracle下载jdk11 jdk-11.0.16.1_linux-x64_bin.tar,放到非root用户的家目录下 &#xff08;2&#xff09;解压&#xff0c;tar -zxvf jdk-11.0.16.1_linux-x64_bin…

校园论坛设计(Java)——介绍篇

校园论坛设计&#xff08;Java&#xff09; 文章目录校园论坛设计&#xff08;Java&#xff09;0、写在前面1、项目介绍2、项目背景3、项目功能介绍3.1 总体设计图3.2 帖子模块3.3 学习模块3.4 个人信息模块3.5 数据报表模块3.6 校园周边模块3.7 用户管理模块3.8 登录注册模块4…

基于桶的排序之基数排序以及排序方法总结

基于桶的排序之基数排序以及排序方法总结 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;基于桶的排序之基数排序以及排序方法总结 CSDN&#xff1a;基于桶的排序之基数排序以及排序方法总结 说明 基于桶的排序有两种&#xff0c;分别是计数排序和基数排…

智源社区AI周刊No.107:英伟达推出Magic3D;Stable Diffusion2.0发布

汇聚每周AI热点&#xff0c;不错过重要资讯&#xff01;欢迎扫码&#xff0c;关注并订阅智源社区AI周刊。英伟达推出Magic3D&#xff0c;性能超过谷歌DreamFusion近一段时间&#xff0c;让AI生成3D点云成为业界研究的重点。谷歌曾在9月提出DreamFusion&#xff0c;引起广泛关注…

【LEACH协议】最佳簇半径的无线传感器网络分簇路由算法【含Matlab源码 2087期】

⛄一、 数据融合的LEACH协议简介 1 基于自适应数据融合的LEACH协议 1.1 基本定义和概念 无线传感器网络中的一个簇可以用一个无向加权全连通图G(V,E)来表示,V是簇中所有传感器节点的集合,E使簇中两个节点之间可以直接通信。假设顶点v∈V代表簇中的一个传感器节点,边euv(u,v)∈…

合作共赢,就在2022亚马逊云科技re:Invent全球大会

一年一度的科技狂欢盛会&#xff0c;2022年亚马逊云科技re:Invent全球大会即将于北京时间2022年11月29日盛大开启&#xff01;届时全球各领域关注“云计算圈”发展的人都将齐聚一堂&#xff0c;共同聆听5大重磅嘉宾的主题演讲&#xff0c;700前沿技术话题…… 携全球合作伙伴…

APP逆向案例之(三)sign 参数破解

说明&#xff1a;某新闻APP sign 参数 抓包发现包含内容&#xff1a; url: https://124.*.*.*/api/categorynews/lists 参数&#xff1a; 其中 sign 参数是需要变化的否则访问失败&#xff0c;其余都是固定的 page: 3, size: 10, category: -2, from: -1, lng: 116.363…

快收藏!最全GO语言实现设计模式【下】

点个关注&#x1f446;跟腾讯工程师学技术导语| 继上篇【快收藏&#xff01;最全GO语言实现设计模式】&#xff0c;本文继续列出GO语言实现的经典设计模式示例&#xff0c;每个示例都精心设计&#xff0c;力求符合模式结构&#xff0c;可作为日常编码参考&#xff0c;同时一些常…

基于遗传算法的自主式水下潜器路径规划问题附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;修心和技术同步精进&#xff0c;matlab项目合作可私信。 &#x1f34e;个人主页&#xff1a;Matlab科研工作室 &#x1f34a;个人信条&#xff1a;格物致知。 更多Matlab仿真内容点击&#x1f447; 智能优化算法 …