SOME/IP--协议英文原文讲解12(完结)

前言
SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块:

1. SOME/IP协议讲解

2. SOME/IP-SD协议讲解

3. python/C++举例调试讲解


4.3 Compatibility Rules for Interface Version
The Interface Version identifies the Payload format. The Payload format is affected by
• the Service Interface specification
• the serialization configuration (e.g. usage of variable size arrays, size of length
fields, padding, TLV, SOME/IP-TP).
[PRS_SOMEIP_00937]
Upstream requirements: RS_SOMEIP_00003
The Interface Version shall be increased for any of the following reasons:
• incompatible changes in the Payload format
• incompatible changes in the service behaviour
• required by application design

Note: The Interface Version shall not be increased for compatible changes in the Payload format.
[PRS_SOMEIP_00938]
Upstream requirements: RS_SOMEIP_00003
The rules in [PRS_SOMEIP_00758] shall define the compatibility of changes of the
payload format. For complex data types the rules shall be applied recursively. X denotes a compatible change, an empty cell denotes an incompatible change.
Note:
This table is based on the specification of the SOME/IP protocol. As a rule of thumb,
interfaces are compatible if the receiver of data finds all expected information on the
expected locations.

这段内容讨论了 **SOME/IP 协议** 中 **接口版本(Interface Version)** 的兼容性规则,特别是关于 **Payload 格式** 和 **服务行为** 的变化。以下是详细解释:

---对于车厂而言一般不会用到这个字段,因为如果有变更的话,会直接更新释放矩阵表版本。不允许有多版本兼容的情况存在。

### 核心内容
1. **接口版本的作用**:
   - 接口版本用于标识 Payload 格式。
   - Payload 格式受以下因素影响:
     - 服务接口规范(Service Interface specification)。
     - 序列化配置(例如变长数组的使用、长度字段的大小、填充、TLV、SOME/IP-TP)。

2. **接口版本增加的规则**:
   - 在以下情况下,必须增加接口版本:
     - Payload 格式发生不兼容的变化。
     - 服务行为发生不兼容的变化。
     - 应用程序设计要求。

3. **兼容性变化的处理**:
   - 如果 Payload 格式的变化是兼容的,则不应增加接口版本。
   - 兼容性变化的规则在 [PRS_SOMEIP_00758] 中定义。

---

### 关键点
1. **不兼容变化**:
   - 不兼容变化是指接收方无法正确解析或处理 Payload 的变化。
   - 例如:
     - 更改字段的顺序。
     - 删除或重命名字段。
     - 更改字段的数据类型。

2. **兼容变化**:
   - 兼容变化是指接收方仍然能够正确解析和处理 Payload 的变化。
   - 例如:
     - 添加新字段(不影响现有字段的解析)。
     - 扩展字段的长度(不影响现有数据的解析)。

3. **复杂数据类型的兼容性**:
   - 对于复杂数据类型(如结构体、数组),兼容性规则应递归应用。
   - 例如,如果结构体中的某个字段发生不兼容变化,则整个结构体被视为不兼容。

下面表格列举了会引起内部版本号变更的payload的各种可能的情况:

The following legend to the table applies:
ENUM-REMARK: The "Receiver" of an Enumeration needs to know all values it can receive, while the "Transmitter" does not have to send all values the "Receiver" knows.
接收端必须知道它接收到的所有枚举的值的含义。发送端不需要发送所有的枚举给接收端
假如一个服务,给client1 和 client2 用到的枚举值的范围不一致 也是有可能的。
MAXIMUM-MESSAGE-SIZE (MMS): The compability in Classic Platform is limited by
the maximum configured size of message. This means that if the message size is configured
larger than necessary, additional text could be added and, independently of the message size
on tag, can be replaced by a new one.
OPTIONAL-METHOD-ARGUMENTS-REMARK: See note above [PRS_SOMEIP_00230].
DEFAULT-VALUE: A default value is required for this change to be compatible.
ZERO-TERMINATED: Strings are terminated with a "\0"-character(see [PRS_SOMEIP_00373],
[PRS_SOMEIP_00911], [PRS_SOMEIP_00912] and [PRS_SOMEIP_00913])

The column "Transmitter" refers to the side transmitting a SOME/IP message, which
can be the transmitter of an event (provider of the interface) or the method arguments
used by the caller of a method (user of the interface) or the method result returned by
the callee of a method (provider of the interface). The column "Receiver" refers to the
side receiving a SOME/IP message, which can be the receiver of an event (user of the
interface) or the method arguments forwarded to the callee of a method (provider of the
interface) or the method result forwarded to the caller of a message (user of the interface). For fields, compatibility is only given if both the "Transmitter" and the "Receiver"
columns are marked as compatible, because the same content will be transmitted by
the side defined by the provider of the interface (notification event, getter method) and
the user of the interface (setter method).

1. MAXIMUM-MESSAGE-SIZE (MMS)(最大消息大小)

  • 解释:在 Classic Platform(经典平台) 中,消息的兼容性受到配置的最大消息大小的限制。也就是说,如果配置的消息大小比实际需要的要大,那么可能会附加额外的文本,且无论标签中的消息大小如何,最终可能会被新的消息替代。

  • 影响:配置不当的消息大小可能导致不必要的数据被添加,或者消息内容被不期望地替换,这可能会影响系统的稳定性或传输的正确性。

2. OPTIONAL-METHOD-ARGUMENTS-REMARK(可选方法参数说明)

  • 解释:这部分提到了可选方法参数的情况,具体的说明可以参考 PRS_SOMEIP_00230,这是一个SOME/IP协议相关的注释或标准文档编号。

  • 作用:如果方法参数是可选的,那么需要特别注意它们的处理方式,以保证接口的兼容性。

3. DEFAULT-VALUE(默认值)

  • 解释:对于一些变更或设置,必须提供一个默认值,以确保这些变更与现有系统兼容。如果没有默认值,可能会导致兼容性问题。

  • 影响:默认值的缺失可能导致系统无法正常工作或接口不兼容,因此必须在设计时明确指定默认值。

4. ZERO-TERMINATED(零终止符)

  • 解释:字符串在SOME/IP协议中使用 "\0" 字符来进行终止,表示字符串的结束。这是C语言等编程语言中常见的字符串终止方式。

  • 参考:具体的规定可以参考 PRS_SOMEIP_00373PRS_SOMEIP_00911PRS_SOMEIP_00912PRS_SOMEIP_00913 等文档。这些标准文档详细描述了如何处理字符串的终止符问题。

5. Transmitter(发送方) 和 Receiver(接收方)

  • 解释:SOME/IP协议中的“发送方”和“接收方”分别指的是消息的发送方和接收方。
    • 发送方:可以是事件的发送方(接口的提供者),方法调用中的参数发送方(接口的使用者)或方法返回结果的发送方(接口的提供者)。
    • 接收方:可以是事件的接收方(接口的使用者),方法参数转发到方法调用方(接口的提供者),或者方法结果转发给方法调用方(接口的使用者)。
  • 兼容性:对于字段的兼容性要求,如果“发送方”和“接收方”都标记为兼容,那么这个字段才算是兼容的。这是因为相同的内容会在接口提供者(例如通知事件、获取方法)和接口使用者(例如设置方法)之间传递。

1. SOMEIPTP_REASSEMBLY_TIMEOUT

  • 描述:这个参数是一个可配置的计时器,用于接收SOME/IP-TCP分段的超时时间。简而言之,这是在接收SOME/IP协议段时,设置的最大等待时间。如果在这个时间内未完成接收,则认为该消息的接收超时。

2. Upstream Requirements(上游需求):

  • 提到的上游需求包括 RS_SOMEIP_00010RS_SOMEIP_00014,这些是具体的标准或文档编号,说明该参数与其他要求或标准的关系。

3. Parameter Support in AP (应用平台):

  • 这个参数在应用平台(AP)中的支持包括:
    • SomeipEventDeployment.segmentReceptionTimeoutTime,用于配置事件部署中段接收的超时时间。
    • SomeipMethodDeployment.segmentReceptionTimeoutTimeRequest,用于配置方法部署中段接收的超时时间请求。
    • SomeipMethodDeployment.segmentReceptionTimeoutTimeResponse,用于配置方法部署中段接收的超时时间响应。

4. Parameter Support in CP (控制平台):

  • 在控制平台(CP)中,参数的支持包括:
    • SomeipTpChannel,指示SOME/IP协议中的传输通道。
    • SomeipTpRxTimeoutTime,指示接收超时时间。
    • EUCU_-SomeIpTp_00023,这是一个参考标准或文档,提供进一步的详细信息。

5. Mapping Table(映射表)

  • 在表格的最后部分,提到这是 SOME/IP协议参数的映射表。通过这个表格可以了解在不同平台和不同实现中,如何映射和使用这些配置参数。

总结:

此图表主要描述了 SOMEIPTP_REASSEMBLY_TIMEOUT 参数的功能和如何在不同的系统平台(应用平台AP和控制平台CP)中进行配置和支持。该参数用于设置SOME/IP协议中,接收SOME/IP-TCP分段的超时时间,从而影响消息的传输和处理。


6 Protocol usage and guidelines
6.1 Choosing the transport protocol 关于如何选择传输协议
SOME/IP supports User Datagram Protocol (UDP) and Transmission Control Protocol
(TCP). While UDP is a very lean transport protocol supporting only the most important
features (multiplexing and error detecting using a checksum), TCP adds additional
features for achieving a reliable communication. TCP not only handles bit errors but
also segmentation, loss, duplication, reordering, and network congestion.
Inside a vehicle many applications requires very short timeout to react quickly. These
requirements are better met using UDP because the application itself can handle the
unlikely event of errors. For example, in use cases with cyclic data it is often the best
approach to just wait for the next data transmission instead of trying to repair the last
one. The major disadvantage of UDP is that it does not handle segmentation. Hence,
only being able to transport smaller chunks of data.
Guideline:
• Use TCP only if very large chunks of data need to be transported (> 1400 Bytes)
and no hard latency requirements in the case of errors exists
• Use UDP if very hard latency requirements (<100ms) in case of errors is needed
• Use UDP together with SOME/IP-TP if very large chunks of data need to be
transported (> 1400 Bytes) and hard latency requirements in the case of errors
exists
• Try using external transport or transfer mechanisms (Network File System, APIX
link, 1722, ...) when they are more suited for the use case. In this case SOME/IP
can transport a file handle or a comparable identifier. This gives the designer
additional freedom (e.g. in regard to caching).
The transport protocol used is specified by the interface specification on a per-message
basis. Methods, Events, and Fields should commonly only use a single transport protocol.

1. TCP:
 数据大于 1400个字节,且没有严格的延迟要求(可 > 100ms)
2. UDP
数据小于 1400 ,且延时要求较高(< 100ms)
3. UDP + TP分段
数据 大于 1400 且延迟要求高

6.2 Security Considerations for SOME/IP
[PRS_SOMEIP_00946] Restricting Server Connection from Clients
Upstream requirements: RS_SOMEIP_00002
A server may enforce communication policies to protect the server from malicious
or unauthorized clients. I.e. the server may reject subscriptions to eventgroups, or
method calls from unauthorized clients.
Note: These policies are beyond the scope of this specification. Such policies can be
based on the IP address of the client or any other means to identify the client.
[PRS_SOMEIP_00947] Restricting Client Connection to Server
Upstream requirements: RS_SOMEIP_00002
A client may enforce communication policies to protect the client from malicious
servers. I.e. the client may deny communication to unauthorized servers.
Note: These policies are beyond the scope of this specification. Such policies can be
based on the IP address of the server or any other means to identify the client.
总结:通过IP识别,server/client发现对方不认识 对于对方的连接或请求可以不予理会
 


0voice · GitHub

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光明谷推出AT指令版本的蓝牙音箱SOC 开启便捷智能音频开发新体验

前言 在蓝牙音箱市场竞争日益激烈的当下&#xff0c;开发一款性能卓越且易于上手的蓝牙音箱&#xff0c;成为众多厂商追求的目标。而光明谷科技有限公司推出的 AT 指令版本的蓝牙音箱 SOC&#xff0c;无疑为行业带来了全新的解决方案&#xff0c;以其诸多独特卖点&#xff0c;迅…

STM32——HAL库开发笔记22(定时器3—呼吸灯实验)(参考来源:b站铁头山羊)

本文利用前几节所学知识来实现一个呼吸灯实验&#xff1a;两颗led灯交替呼吸。 一、STM32CubeMX配置 step1&#xff1a;配置调试接口 step2&#xff1a;配置定时器 定时器1位于APB2总线上&#xff0c;如上图所示。 step3&#xff1a;配置时基单元 按照下图配置 时钟来源配置…

医疗AI领域中GPU集群训练的关键技术与实践经验探究(下)

五、医疗 AI 中 GPU 集群架构设计 5.1 混合架构设计 5.1.1 参数服务器与 AllReduce 融合 在医疗 AI 的 GPU 集群训练中,混合架构设计将参数服务器(Parameter Server)与 AllReduce 相结合,能够充分发挥两者的优势,提升训练效率和模型性能。这种融合架构的设计核心在于根…

修改Ubuntu系统用户密码(root密码)的方法

本文介绍在Linux系统的Ubuntu电脑中&#xff0c;修改账户用户密码&#xff08;同时也修改了root用户密码&#xff09;的方法。 首先&#xff0c;如果此时处于登录页面&#xff08;也就是意识到自己忘记密码的那个页面&#xff09;&#xff0c;就先点击右上角的关闭按钮&#xf…

【清华大学】DeepSeek从入门到精通系列教程 第五版:DeepSeek与AI幻觉 pdf文档下载

【清华大学】DeepSeek使用教程系列之DeepSeek与AI幻觉 pdf文件完整版下载 https://pan.baidu.com/s/17evZMjiGNR0hun2jVdAkbg?pwd1234 提取码: 1234 或 https://pan.quark.cn/s/160d03fa907f DeepSeek与AI幻觉内容摘要 一、‌定义与类型‌ AI幻觉指模型生成与事实不符…

记录此刻:历时两月,初步实现基于FPGA的NVMe SSD固态硬盘存储控制器设计!

背景 为满足实验室横向项目需求&#xff0c;在2024年12月中下旬导师提出基于FPGA的NVMe SSD控制器研发项目。项目核心目标为&#xff1a;通过PCIe 3.0 x4接口实现单盘3000MB/s的持续读取速率。 实现过程 调研 花了半个月的时间查阅了一些使用FPGA实现NVME SSD控制器的论文、…

【Linux】进程

1. 多任务&#xff08;并发&#xff09; 让系统具备同时处理多个任务的能力。 2. 如何实现多任务 1&#xff09;进程 2&#xff09;线程 3. 进程 正在执行的程序&#xff0c;需要消耗内存和cpu&#xff0c; 一个动态执行的过程。 进程生存周期&#xff1a; …

3D模型在线转换工具:轻松实现3DM转OBJ

3D模型在线转换是一款功能强大的在线工具&#xff0c;支持多种3D模型格式的在线预览和互转。无论是工业设计、建筑设计&#xff0c;还是数字艺术领域&#xff0c;这款工具都能满足您的需求。 3DM与OBJ格式简介 3DM格式&#xff1a;3DM是一种广泛应用于三维建模的文件格式&…

Docker安装Open WebUI教程

Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 AI 平台,旨在完全离线运行。它支持各种LLM运行器,如 Ollama 和 OpenAI 兼容的 API,并内置了 RAG 推理引擎,使其成为强大的 AI 部署解决方案。 官网文档地址:https://docs.openwebui.com/ 一、拉取镜像 下载的镜像包比…

VSCode集成deepseek使用介绍(Visual Studio Code)

VSCode集成deepseek使用介绍&#xff08;Visual Studio Code&#xff09; 1. 简介 随着AI辅助编程工具的快速发展&#xff0c;VSCode作为一款轻量级、高度可扩展的代码编辑器&#xff0c;已成为开发者首选的工具之一。DeepSeek作为AI模型&#xff0c;结合Roo Code插件&#x…

京东广告基于 Apache Doris 的冷热数据分层实践

一、背景介绍 京东广告围绕Apache Doris建设广告数据存储服务&#xff0c;为广告主提供实时广告效果报表和多维数据分析服务。历经多年发展&#xff0c;积累了海量的广告数据&#xff0c;目前系统总数据容量接近1PB&#xff0c;数据行数达到18万亿行&#xff0c;日查询请求量8…

五、Three.js顶点UV坐标、纹理贴图

一部分来自1. 创建纹理贴图 | Three.js中文网 &#xff0c;一部分是自己的总结。 一、创建纹理贴图 注意&#xff1a;把一张图片贴在模型上就是纹理贴图 1、纹理加载器TextureLoader 注意&#xff1a;将图片加载到加载器中 通过纹理贴图加载器TextureLoader的load()方法加…

学术论文项目网站搭建教程【Github】

本教程使用的是linux系统&#xff0c;ubuntu20.04版本进行学术项目网站搭建 一&#xff1a;创建github的个人组织 我个人习惯使用自己的github组织【Your organizations】来进行学术项目网站的创建&#xff1a; New一个organization&#xff0c;点击Free中的Create a free o…

第4章 信息系统架构(三)

4.3 应用架构 应用架构的主要内容是规划出目标应用分层分域架构&#xff0c;根据业务架构规划目标应用域、应用组和目标应用组件&#xff0c;形成目标应用架构逻辑视图和系统视图。从功能视角出发&#xff0c;阐述应用组件各自及应用架构整体上&#xff0c;如何实现组织的高阶…

第三十四周学习周报

目录 摘要Abstract1 文献阅读1.1 相关知识1.1.1 贝叶斯优化1.1.2 注意力机制复习 1.2 模型框架1.3 实验分析 总结 摘要 在本周阅读的文献中&#xff0c;作者提出了一种将注意力机制与LSTM相结合的模型AT-LSTM。虽然传统LSTM通过其门控机制能有效捕捉时间序列中的长期依赖关系&…

pyside6学习专栏(七):自定义QTableWidget的扩展子类QTableWidgetEx

PySide6界面编程中较常用的控件还有QTableWidget表格控件&#xff0c;用来将加载的数据在表格中显示出来&#xff0c;下面继承QTableWidget编写其扩展子类QTableWidgetEx,来实现用单元格来显示除数据文字外&#xff0c;还可以对表格的单元格的文字颜色、背景底色进行设置&#…

图像处理篇---图像处理中常见参数

文章目录 前言一、分贝&#xff08;dB&#xff09;的原理1.公式 二、峰值信噪比&#xff08;PSNR, Peak Signal-to-Noise Ratio&#xff09;1.用途2.公式3.示例 三、信噪比&#xff08;SNR, Signal-to-Noise Ratio&#xff09;1.用途2.公式3.示例 四、动态范围&#xff08;Dyna…

【大模型】蓝耘智算云平台快速部署DeepSeek R1/R3大模型详解

目录 一、前言 二、蓝耘智算平台介绍 2.1 蓝耘智算平台是什么 2.2 平台优势 2.3 应用场景 2.4 对DeepSeek 的支持 2.4.1 DeepSeek 简介 2.4.2 DeepSeek 优势 三、蓝耘智算平台部署DeepSeek-R1操作过程 3.1 注册账号 3.1.1 余额检查 3.2 部署DeepSeek-R1 3.2.1 获取…

小米AX3000T 路由器如何开启 SSH 安装 OpenWRT 系统,不需要降级 v1.0.91 (2025)

小米AX3000T 路由器如何开启 SSH 安装 OpenWRT 系统&#xff0c;不需要降级 v1.0.91 &#xff08;2025&#xff09; 本文内容需要你有一定的 Linux 操作基础&#xff0c;最好是程序员那种&#xff0c;英文水平足够用才行。一般人不需要使用这么复杂的路由器操作系统&#xff0c…

新数据结构(12)——代理

什么是代理 在进行操作时有时不希望用户直接接触到目标&#xff0c;这时需要使用代理让用户间接接触到目标 给目标对象提供一个代理对象&#xff0c;并且由代理对象控制着对目标对象的引用 图解&#xff1a; 代理的目的 控制访问&#xff1a;通过代理对象的方式间接的访问目…