SOME/IP(Scalable service-Oriented MiddlewarE over IP)协议

1. 介绍

        SOME/IP(Scalable service-Oriented MiddlewarE over IP)是一个面向汽车或嵌入式系统的通信协议,支持 RPC、事件通知和有线格式(底层序列化)。

        SOME/IP应在不同的操作系统(如AUTOSAR、GENIVI和OSEK)上实现,甚至在没有操作系统的嵌入式设备上实现。SOME/IP应用于ECU客户端/服务器之间的串行化。SOME/IP的实现允许AUTOSAR解析RPCPDU并将信号传输到应用程序。

        1、RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,它允许程序调用其他地址空间(通常是共享网络的另一台机器上)的过程或子程序,就像是本地调用一样,而不需要程序员显式地编写网络代码。RPC的目标是使远程计算看起来像是本地计算。

        2、SOME/IP(Service-Oriented Middleware over IP)序列化是指将数据转换为符合 SOME/IP 协议规范的二进制格式,以便在网络上传输。SOME/IP 是一种轻量级的通信协议,通常用于汽车电子领域中的通信和服务发现。在SOME/IP中,数据通过网络传输之前,需要进行序列化,以确保发送和接收方都能正确地解释和处理数据。序列化的过程涉及将结构化的数据对象转换为字节流,以便能够在网络上传输。反之,接收方需要进行反序列化,将字节流还原为原始的数据对象序列化是网络通信中常见的操作,它确保在不同系统之间的数据交换能够准确、高效地进行。SOME/IP定义了一种特定的序列化格式,包括对整数、浮点数、字符串等不同数据类型的编码规则。这有助于确保不同系统之间的数据交换的一致性和互操作性。总的来说,SOME/IP序列化是指将通信数据按照协议规范进行编码,以便通过网络进行可靠的传输。这有助于实现分布式系统中各个模块之间的通信和协作)

1.1 为什么需要SOME/IP

基本动机是规范“另一种 RPC 机制”来替代当前的基础设施/技术,以实现如下目标:

  1. 满足嵌入式系统对资源消耗的硬性要求
  2. 与尽可能多的用例和通信伙伴相兼容
  3. 至少在有线格式上与 AUTOSAR 兼容,如:AUTOSAR 不需要修改标准就可以通过接受和发送能与之通信的 PDUs(Protocol Data Unit)
  4. 提供汽车用例所需要的功能
  5. 可从小型平台扩展到大型平台
  6. 可在不同的操作系统上实现(如:AUTOSAR,GENIVI,及 OSEK),甚至不带操作系统的嵌入式设备上
  7. 可用于 ECU 内部 C/S 间通信的数据序列化
  8. SOME/IP 的实现允许 AUTOSAR 解析 PRC 的 PDU 和发送信号给应用

1.2 文档结构

SOME/IP 协议规范(PRS,Protocol Specification)描述了以下两方面内容:

  1. 有线格式(序列化)
    -协议头格式
    -不同数据类型如何按照 SOMP/IP 进行序列化
  2. 事件和基于 RPC 的通信协议
    -传输协议
    -PRC 通信规则

2. 缩略语和缩写

下面缩略语和缩写表中的术语都是与 SOME/IP 协议相关,但并未包含在 AUTOSAR 的 glossary 中。

表 3.1 SOME/IP 缩略语和缩写表

序号缩略语/缩写描述
1Byte Order MarkByte Order Mark(BOM)是一种 Unicode 码,U+FEFF,是位于文本流起始位置的魔术字,用来表明文本的编码方式
2Method被调用的方法、过程、函数,或子程序
3Parameters方法或事件的输入、输出、输入/输出参数
4Remote Procedure Call(RPC)从一个 ECU 上调用另一个 ECU 上的方法,采用消息进行信息传输
5Request请求,客户端发送消息触发服务端的方法调用
6Response响应,服务端将方法调用的结果发送消息到客户端
7Request/Response Communication包含 Request 和 Response 的 RPC
8Event事件,发生时被触发或周期性被触发的单向传输数据,由数据的生产者发送给消费者
9Field字段,代表一种状态,因此,在执行 Getter、Setter 和 notifier 操作时始终是个有效值
10Notification Event通知事件,notifier 的事件消息字段
11GetterRequest/Response 调用,允许对字段进行读操作
12SetterRequest/Response 调用,允许对字段进行写操作
13Notifier字段值发生变化时,发送带有新值的事件消息
14Service服务,零个或多个方法、零个或多个事件、零个或多个字段的逻辑组合
15Service Interface服务接口,服务的正式规范,包括方法、事件和字段
16EventGroup事件组,服务内部字段的事件和通知事件的逻辑分组,以允许订阅
17Service Instance服务的实例化,单个服务在整车中可以有一个或多个实例,在单个 ECU上也可以被多次实例
18Server服务器,提供服务实例的 ECU 在该服务实例的上下文中被称为服务器
19Client客户端,使用服务器服务实例的 ECU 在改服务实例的上下文中被称为客户端
20Fire and Forget没有响应消息的请求称为 fire&forget
21User Datagram ProtocoUDP,用户数据报协议,一种使用简单无连接通信模型的标准网络协议
22Union共用体,动态采用不同数据类型的数据结构
23Non-extensible (Standard) struct不可扩展结构体,无标记的序列化结构。最多以兼容的方式在结构的末尾添加新成员,可选成员不支持
24Extensible struct可扩展结构体,带有标记的序列化结构。以兼容的方式新成员可以添加到任意位置,支持可选成员

3. 协议规范

SOME/IP 通过以太网提供面向服务的通信。它基于列出服务提供功能的服务定义。服务可以由零个或多个事件、方法和字段组成而成。

  • Events:提供从提供者触发式或循环发送的数据到订阅者。
  • Methods:为订阅者提供了发出 RPC 调用的可能性,远程程序运行在提供者端。
  • Fields:由以下三个方面的一个或多个组合
    (1) Notifier,事件发生时,由服务提供者发送数据给服务订阅者
    (2) Getter,被服务订阅者调用,用来显示的向服务提供者查询值
    (3) Setter,被服务订阅者调用,按需修改服务提供者端的值

Notifier 和 Event 的主要区别在于:Event 只在事件发生的时候才会发送,而 Notifier除了在事件发生后发送数据外,在订阅后也可直接发送数据。

3.1 SOME/IP 消息格式(序列化)规范

序列化描述了 PDU 中基于车载以太网传输的 UDP 或 TCP 消息载荷的表述方式。

3.1.1 限制

不支持对 SOME/IP 消息的无序段进行重新排序。

3.1.2 Header

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

图3.1 SOME/IP消息头格式

  • 32
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值