SOME/IP 协议介绍(一)

1. 引言和功能概述

本文档规定了可扩展面向服务基于IP的中间件(SOME/IP)——一种用于汽车/嵌入式RPC机制和底层序列化/传输格式的示例,作为由RTE调用的序列化器。

唯一有效的缩写是SOME/IP。其他缩写(例如Some/IP)是错误的,不应使用。

从新实现“另一种RPC机制”而不使用现有基础设施/技术的基本动机是:

  • 为了拥有一种满足嵌入式世界中资源消耗的严格要求的技术。
  • 与尽可能多的用例和通信伙伴兼容,至少在传输格式层面与AUTOSAR兼容。
  • 能够与AUTOSAR标准进行无修改的PDUs接收和发送通信。AUTOSAR内的映射应根据SOME/IP规范进行选择。
  • 提供了汽车用例所需的功能。
  • 从小型到大型平台都具备可扩展性。
  • 可以在不同的操作系统上实现(例如AUTOSAR、GENIVI和OSEK),甚至可以在没有操作系统的嵌入式设备上实现。

SOME/IP仅是一个可用于ECU之间的客户端/服务器序列化的事例。SOME/IP的实现允许AUTOSAR解析RPC PDUs并将信号传输给应用程序。

因此,该示例定义了几个功能集。功能集“基本”与AUTOSAR 4.1.1兼容。其他功能集正在进行集成到AUTOSAR中。目标是增加与更高级功能集的兼容性。然而,也可以在非AUTOSAR节点中使用这些功能,或者使用经过精心设计的接口和适当的工具链,在AUTOSAR应用程序内部实现它们。

对于不使用AUTOSAR的ECU,目前可以支持完整的功能集,但在与AUTOSAR ECU进行通信时,只能使用有限的功能集。

在AUTOSAR中,如图1.1,SOME/IP和SOME/IP-SD可以在不同的模块中实现。目前,Socket适配器可以通过标头模式来写入消息ID和长度字段。
对于数据路径(SOME/IP),消息可以通过COM(Communication Manager)、RTE(Run-Time Environment)中的可插拔序列化器或代理SWS(Software Stack)进行序列化/反序列化。

对于控制路径(SOME/IP-SD),服务发现模块实现了SOME/IP-SD,包括SOME/IP标头,但不包括消息ID和长度字段。

限制

请注意,并非所有的SOME/IP部分都在AUTOSAR中实现。
SOME/IP的某些部分在 SWS SOME/IP Transformer、SWS Socket Adaptor 和 SWS Service Discovery 中得到了实现。
其他功能目前在AUTOSAR中不受支持。其中,以下功能在AUTOSAR中未实现:
• 异常和特定异常错误数据结构
• 变长结构体
• 将SOME/IP消息通过CAN和FlexRay进行隧道传输会导致 SWS Socket Adaptor 插入的部分头信息丢失

2. 标识符的定义

服务应使用Service-ID进行标识。Service-ID为0xFFFE应用于非SOME/IP服务的编码。Service-ID为0x0000和0xFFFF应保留用于特殊情况。同一车辆内的不同服务应具有不同的Service-ID。系统部门随时可以覆盖此要求。

使用Service-Instance-ID来识别服务实例。Service-Instance-ID应为16位长度的无符号整数(uint16)类型。Service-Instance-ID的0x0000和0xFFFF不应用于服务,因为0x0000用于描述无服务实例,而0xFFFF用于描述所有服务实例。同一车辆内的不同服务实例应具有不同的Service-Instance-ID。在服务内部,方法和事件应使用16位Method-ID进行标识,对于事件和通知,也可以称为Event-ID。

方法应使用将最高位设置为0的Method-ID,而对于事件和通知,Method-ID的最高位应设置为1。系统部门随时可以覆盖此要求。
使用Eventgroup-ID来标识事件组。Eventgroup-ID应为16位长度的无符号整数(uint16)类型。同一车辆内的不同事件组应具有不同的Eventgroup-ID。

注意:
这意味着两个不同的相机服务应具有两个不同的ServiceInstanceIDs,即SI-ID-1和SI-ID-2。对于一个AUTOSAR系统(设计车辆产品线),SI-ID-1在所有车辆中应保持相同。对于SI-ID-2也是如此。如果考虑另一个AUTOSAR系统(设计另一条车辆产品线),可以使用不同的ID,但在不同的AUTOSAR系统中使用相同的ID可以方便测试和集成。

3. SOME/IP在传输线上的格式规范

序列化描述了数据在汽车车载网络中传输的协议数据单元(PDU)中的表示方式。

3.1. 传输协议

SOME/IP可以使用UDP或TCP进行传输。在进一步通知之前,SOME/IP的端口号必须在本地从私有端口范围49152-65535中定义。在车辆中使用时,OEM将在接口规范中指定使用的端口。
建议尽可能使用UDP进行尽可能多的消息传输,并将TCP视为需要更大尺寸消息的备用方案。UDP允许应用程序更好地控制发生错误时的超时和行为。

3.1.1. 消息长度限制

结合常规以太网,IPv4和UDP可以传输最多1472字节的数据包而无需分片,而IPv6则额外使用20字节。特别是对于小型系统,应避免分片,因此SOME/IP标头和负载应具有有限的长度。使用安全协议可能进一步限制SOME/IP消息的最大大小。
当使用UDP作为传输协议时,SOME/IP消息可以使用最多1416字节的SOME/IP标头和负载,因此可用于负载的字节数为1400字节。

使用TCP允许传输更大的数据流来传输SOME/IP标头和负载。然而,用于CAN和FlexRay的当前传输协议将消息限制为4095字节。当需要与这些协议兼容时,SOME/IP消息(包括SOME/IP标头)的长度不得超过4095字节。

3.2. 字节序

所有RPC标头应以网络字节顺序(大端序)[RFC 791]进行编码。负载内部参数的字节顺序应由接口定义(例如FIBEX)定义,并且在可能的情况下应采用网络字节顺序,如果没有指定其他字节顺序。

欢迎关注公众号

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

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

相关文章

什么是Babel?它的主要作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

【51单片机】LED与独立按键(学习笔记)

一、点亮一个LED 1、LED介绍 LED:发光二极管 补:电阻读数 102 > 10 00 1k 473 > 47 000 2、Keil的使用 1、新建工程:Project > New Project Ctrl Shift N :新建文件夹 2、选型号:Atmel-AT89C52 3、xxx…

VBA之正则表达式(44)-- 拆分商品和规格

实例需求:商品组清单保存在A列中,现需要将其拆分为商品名称,保存在从B列开始的后续单元格中,部分商品包含规格,并且多种规格属性使用了逗号分隔,因此无法直接使用Excel分列功能完成数据拆分。 示例代码如下…

【错误解决方案】ModuleNotFoundError: No module named ‘torchvision.models.utils‘

1. 错误提示 在python程序,尝试导入一个名为torchvision.models.utils的模块,但Python提示找不到这个模块。 错误提示:ModuleNotFoundError: No module named torchvision.models.utils 2. 解决方案 1)这可能是因为你还没有安装…

利用云计算和微服务架构开发可扩展的同城外卖APP

如今,同城外卖APP已经成为了人们点餐的主要方式之一。然而,要构建一款成功的同城外卖APP,不仅需要满足用户的需求,还需要具备可扩展性,以适应快速增长的用户和订单量。 一、了解同城外卖APP的需求 在着手开发同城外卖…

centos 7 kafka2.6单机安装及动态认证SASL SCRAM配置

目录 1.kfaka安装篇 1.1 安装jdk 1.2安装kafka 2.安全篇 2.1 kafka安全涉及3部份: 2.2 Kafka权限控制认证方式 2.3 SASL/SCRAM-SHA-256 配置实例 2.3.1 创建用户 2.3.2 创建 JAAS 文件及配置 3.测试 3.1 创建测试用户 3.2 配置JAAS 文件 3.2.1 生产者配…

C++归并排序算法的应用:计算右侧小于当前元素的个数

题目 给你一个整数数组 nums ,按要求返回一个新数组 counts 。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例 1: 输入:nums [5,2,6,1] 输出:[2,1,1,0] 解释: 5 …

酒店预订订房小程序源码系统 带完整搭建教程

酒店预订订房小程序源码系统是一种基于互联网技术的线上预订平台,旨在为用户提供方便快捷的酒店预订服务。该系统通常包括前端用户界面、后端服务器和数据库三个部分,其中前端界面主要展示酒店信息、订房需求信息、订单信息等,后端服务器负责…

当函数参数为一级指针,二级指针

当函数参数为一级指针,二级指针 在讲述内容之前,先讲四点重要知识 1.当传入参数时,函数形参会立即申请形参的内存空间,函数执行完毕后,形参的内存空间立即释放掉。 1.指针是存放其他变量地址的变量。指针有自己的内…

Spring Boot Web MVC

文章目录 一、Spring Boot Web MVC 概念二、状态码三、其他注解四、响应操作 一、Spring Boot Web MVC 概念 Spring Web MVC 是⼀个 Web 框架,一开始就包含在Spring 框架里。 1. MVC 定义 软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视…

uniapp实现路线规划

UniApp是一个基于Vue.js框架开发的跨平台应用开发框架,可以同时构建iOS、Android、H5等多个平台的应用。它使用了基于前端技术栈的Web开发方式,通过编写一套代码,即可在不同平台上运行和发布应用。 UniApp具有以下特点: 跨平台开…

【设计模式】第8节:结构型模式之“适配器模式”

一、简介 适配器模式是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。 适配器模式角色: 请求者client:调用服务的角色目标Target:定义了Client要使用的功…

Window下coturn服务器的搭建

Window下搭建coturn服务器: 准备材料: 1、安装Cygwin,地址:https://cygwin.com/install.html 由于Window无法直接部署coturn,因此需要下载安装Cygwin在Window上部署Linux虚拟环境。 在安装的时候需要安装几下packe…

Azure机器学习 - 使用与Azure集成的Visual Studio Code实战教程

本文介绍如何启动远程连接到 Azure 机器学习计算实例的 Visual Studio Code。 借助 Azure 机器学习资源的强大功能,使用 VS Code 作为集成开发环境 (IDE)。 在VS Code中将计算实例设置为远程 Jupyter Notebook 服务器。 关注TechLead,分享AI全维度知识。…

目标检测 图像处理 计算机视觉 工业视觉

目标检测 图像处理 计算机视觉 工业视觉 工业表盘自动识别(指针型和数值型)智能水尺识别电梯中电动车识别,人数统计缺陷检测(半导体,电子元器件等)没带头盔检测基于dlib的人脸识别抽烟检测和睡岗检测/驾驶疲…

Java选择与循环

1.选择 前言:什么是选择呢?在我们的人生中处处面临着选择,比如说在学校你可以选择玩,摆烂,当然也可以选择努力写代码,刷题。什么样的选择就会面临什么样的结果。 其实程序和人生一样:顺序中夹杂…

大数据技术之集群数据迁移

文章目录 数据治理之集群迁移数据 数据治理之集群迁移数据 准备两套集群,我这使用apache集群和CDH集群。 启动集群 启动完毕后,将apache集群中,hive库里dwd,dws,ads三个库的数据迁移到CDH集群 在apache集群里hosts加上CDH Namenode对应域名并…

IPv4首部格式

IPv4首部格式 IPv4数据报的首部格式及其内容是实现IPv4协议各种功能的基础。 在TCPIP标准中,各种数据格式常常以32比特(即4字节)为单位来描述。 IPv4首部格式图 ## IPv4数据报的组成 主要由固定部分(20字节)可变部分(最大40字节) - 固定部分是指每个IPv4数据报都必…

Java使用pdfbox进行pdf和图片之间的转换

简介 pdfbox是Apache开源的一个项目,支持pdf文档操作功能。 官网地址: Apache PDFBox | A Java PDF Library 支持的功能如下图.引入依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox-app</artifactId><version>…

去除短视频平台水印 | 一键下载神器

当咱们这些视频创作者在短视频平台找素材的时候&#xff0c;经常会碰到下载下来居然带着平台水印的烦恼&#xff0c;这可让咱们的创作受到了限制和困扰不过别着急&#xff01;咱这就推荐几款超方便的短视频一键去水印下载工具&#xff0c;帮你快速去掉水印&#xff0c;轻松搞定…