车载以太网之SomeIP协议

article/2025/8/26 16:33:52

车载以太网之SomeIP协议

  • 1、SomeIP含义
  • 2、SomeIP通信协议
  • 3、SomeIP数据格式
    • 3.1 数据格式含义
    • 3.2 处理数据能力的要求
  • 4、面向服务的协议
    • 4.1 Method
    • 4.2 Event(FF)
    • 4.3 Field
    • 4.4 Autosar接口说明
  • 5、两个ECU间SomeIP数据的通讯过程
  • 6、SomeIP序列化
    • 6.1 序列化和反序列化过程
    • 6.2 序列化和反序列化的要求
  • 7、SomeIP测试(TC8)
    • 7.1 测试规范
    • 7.2 ECU即可以作为服务端还可以作为客户端

1、SomeIP含义

SOME/IP ( Scalable service-Oriented MiddlewarE over IP):运行于IP之上的可伸缩的面向服务的中间件。它在系统中其实就是一个中间件的存在,所谓“Middleware中间件”是一种独立的系统软件或服务程序。

2、SomeIP通信协议

基于以太网通信协议传输,SomeIp属于应用层,他就需要依赖传输层的TCP/UDP协议,一个SomeIP服务可以通过以下方式传输所有的Method,Event,Field,
1)TCP连接,2)UDP单播,3)UDP多播
在一帧以太网数据中的位置如下所示
在这里插入图片描述
车载以太网协议栈总共可划分为五层,分别为物理层,数据链路层,网络层,传输层,应用层,其中SOME/IP是一种应用层协议。

3、SomeIP数据格式

在这里插入图片描述

3.1 数据格式含义

在这里插入图片描述

Method ID:分为Event/Notifier和Method,Event ID的最高位为1,一般像0x8001,0x8002等;Method最高位为0,例如0x0001。

在这里插入图片描述

Client ID:区分请求同一服务Service 的不同客户端,在整车系统中该值必须唯一。
Session ID:同一客户端请求同一服务Service 的次数;从0x0001 开始,达到0xFFFF 后,重新从0x0001 开始循环。
Message Type说明:
在这里插入图片描述
Return Code说明:
在这里插入图片描述

3.2 处理数据能力的要求

为了避免不必要的通信延时,SOME/IP 模块应该有能力同时处理20 条报文。
发送端可以封装多条SOME/IP 报文在一条以太网报文中。
接收端必须能够正确解析一条以太网报文中封装的多条SOME/IP 报文。

测试Case:SOMEIP_TEST_61 在一个UDP包中发送两条SOMEIP消息。DUT必须回复所有两条SOMEIP消息并发送正确的响应。如下图所示
在这里插入图片描述

4、面向服务的协议

在一个服务中,有服务端和客户端两个角色。对于同一个服务,只能存在一个Server,但可以同时存在多个Client调用服务。一个Service可以包含多个Method/Event/Field,Server和Client间的通讯就是通过RPC(Method/Event/Field)实现。

4.1 Method

Mehod分为
1)FF(Fire&Forget)即Client向Server发送请求命令,Server解析后不需要回复Server。在Autosar配置中一般定义位S/R接口;
在这里插入图片描述

2)RR(Request & Response)即Client向Server发送请求命令,Server解析后,作出相应的响应。在Autosar配置中一般定义为C/S接口;
在这里插入图片描述

4.2 Event(FF)

一个单向的数据传输,当订阅(SomeIP-SD)成功后,事件发生(只能是on change类型)时,Server端主动向订阅的Client端发布(Publish)信息。Event没有初始值,生命周期没有定义。在SomeIP实现中一般情况需要Trigger触发Event。
在这里插入图片描述

4.3 Field

Field由下面三部分构成:
Getter(RR):获取,由 ,一般Payload中为空。Autosar中C/S接口。
Setter(RR):设置,由Client端发送数据到Server端,更改Server端的数据,并回复更改的值。Autosar中C/S接口。
在这里插入图片描述

Notifier(FF):通知,Client端订阅Server端服务成功后,Server端第一时间主动向Client端发送对应的数据通知。Autosar中S/R接口。
在这里插入图片描述

4.4 Autosar接口说明

扩展请参考Autosar:1)SR接口(SenderReceiverInterface):SR接口主要是通过dataelement,来定义传输数据的每一个部分。SenderReceiverInterface可以用于1对1,1对多,多对1,即可以是多个发送方,也可以是多个接收方,可以定义一个或多个dataelement,但是不可以多个发送方对多个接收方,这在AUTOSAR中是不允许的。
2)CS接口(ClientServerInterface):C/S接口就是客户/服务接口,这个接口就是客户端来调用服务端的一个操作接口。意思是我想调用一个函数,而这个函数在其他的C文件中,就让RTE帮忙调用。

5、两个ECU间SomeIP数据的通讯过程

SomeIP在Autosar架构中的位置
在这里插入图片描述
在这里插入图片描述
SoAD:Socket Adapter 用以以太网中的Socket适配,主要将以太网传输的Socket和Pdu进行关联。SoAd的主要目的是在使用PDU的Autosar通信服务模块和基于Socket的TCP/IP堆栈之间创建一个接口。
PDUR:会将COM下发的信号数据分配到相应的协议总线上或将不同的协议变成同一信号上传给COM。

6、SomeIP序列化

序列化(Serialization)指的是将数据结构或对象依据事先定义的规则转换成二进制串的过程;
反序列化(Deserialization)指的是将二进制串依据相同规则重新构建成数据结构或对象的过程。

6.1 序列化和反序列化过程

在这里插入图片描述
如上图,在AUTOSAR中是指数据在PDU中的表达形式,可以理解为来自应用层的真实数据转换成固定格式的字节序,以实现数据在网络上的传输。软件组件将数据从应用层传递到RTE层,在RTE层调用SOME/IP Transformer,执行可配置的数据序列化(Serialize)或反序列化(Deserialize)。SOME/IP Serializer将结构体形式的数据序列化为线性结构的数据;SOME/IP Deserializer将线性结构数据再反序列化为结构体形式数据。在服务端,数据经过SOME/IP Serializer序列化后,被传输到服务层的COM模块;在客户端,数据从COM模块传递到SOME/IP Deserializer反序列化后再进入RTE层。
someip序列化和反序列是在SomeIpXf.c中实现的。其中一个序列化函数如下,前面是Someip header,后半部分是data序列化
在这里插入图片描述

6.2 序列化和反序列化的要求

1)对于固定长度的数据,SOME/IP transformer 不会因为对齐而自动填充数据;如果固定长度数据元素后面的数据需要填充,则必须在Interface 表格中明确定义这一点。
2)对于可变长度的数据,应考虑对齐而使用填充。
3) 对齐应从SOME/IP 报文的起始开始计算;为了简化代码生成器,目前对齐被限制为1 个字节的倍数(例如,8bits、16bits、32bits);本项目至少要支持4 字节的对齐。
4)如果在反序列化期间,比预期更多的数据交予SOME/IP transformer 处理;那些非预期的数据应该被忽略。
5) 如果在反序列化期间,比预期更少的数据交予SOME/IP transformer 处理;则应按照以下方式处理:
如果本地接收方可提供缺少的数据的预设值或初始值(在序列化表格中),则使用该值填充序列化流末尾缺少的元素。
如果无法提供可用的值,则反序列化中断。

7、SomeIP测试(TC8)

7.1 测试规范

根据测试规范《OA_Automotive_Ethernet_ECU_TestSpecification_Layer_3-7_v3.0》,可以通过CANOE5640设备编写脚本。其中一个测试case如下
在这里插入图片描述

7.2 ECU即可以作为服务端还可以作为客户端

协议栈对应测试Case:
以下是Tester端作为服务端,DUT作为客户端(一般DUT作为服务端)。
SOMEIP_ETS_103: SD_ClientServiceGetLastValueOfEventTCP;
SOMEIP_ETS_104: SD_ClientServiceGetLastValueOfEventUDPMulticast;
SOMEIP_ETS_105: SD_ClientServiceGetLastValueOfEventUDPUnicast。

下篇:车载以太网之SomeIP-SD协议
车载以太网之DoIP协议_第一篇


http://chatgpt.dhexx.cn/article/yR3NUL4g.shtml

相关文章

深入理解 TCP/IP 协议栈,使用 Raw Socket

对于 TCP/IP 协议栈,我们或多或少都使用 Socket API 实现了一些小程序,甚至有一些朋友结合多路复用技术实现了一些简单的并发服务器。但是,对于以下问题,大家是否有清晰的答案呢? WireShark 的实现原理是什么&#xf…

基于TCP协议的Socket通信

基于TCP协议的Socket通信【一】 前言TCP/IP UDP是什么? Socket相关什么是Socketsocket通信步骤socket服务端的编写socket客户端的编写 前言 TCP/IP UDP是什么? 在学习socket之前的必要步骤,具体内容请移步另一篇博文TCP/IP 上篇TCP/IP偏向初…

C#利用Socket实现TCP/IP协议通讯

利用Socket实现服务器给客户端发送信息,客户端给服务端发送数据,服务端异步接收单个客户端数据(持续),服务端异步接收多个客户端数据(持续)。 实现效果如上 客户端代码 using System; using S…

HTTP协议和TCP/IP协议与Socket之间的区别

HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP连接的tcp协议: 对应于传输层ip协议: 对应于网络层 TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议…

网络协议:一文搞懂Socket套接字

本篇内容包括:Socket 套接字的简介、Socket 套接字的分类、Java 中的 Socket 即 java.net.ServerSocket、java.net.Socket 的使用,以及Java 使用套接字 Scoket 编程的Demo。 一、Socket 简介 TCP(传输控制协议)是一种面向连接的、…

Java Socket通信之TCP协议

文章目录 一、 Java流套接字通信模型1.TCP模型2.TCP Socket常见APIServerSocket APISocket API 二、TCP流套接字编程1.回显服务器2.多线程服务器 三、TCP中的长短连接四、协议1. 为什么需要协议?2. 封装/分用 VS 序列化/反序列化3. 自定义协议 紧接着 Java Socket通…

TCP/IP协议讲解

TCP/IP与OSI参考模型 应用层:向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、虚拟终端等。 应用层协议:两个主机的两个应用程序之间进行相互交流的数据格式。 运行在TCP协议上的协议: 1、HTTP(Hypertext…

tcp/ip协议与socket介绍

1、tcp/ip五层协议模型 应用层、传输控制层、网络层、数据链路层、物理 2. 应用层 直接向用户提供服务,完成用户希望在网络上完成的各种工作。如curl命令。 3. 传输控制层 3.1 TCP和UDP协议 TCP协议:面向连接的可靠传输协议。利用TCP进行通信时&…

socket协议介绍

2019独角兽企业重金招聘Python工程师标准>>> 本文主要讲述了Socket协议脚本的基础知识和编写方法,让大家能够在短时间内快速掌握简单的Socket协议脚本的编写方法。      1.socket协议介绍      Socket协议有万能协议之称,很多系统底层都是用的socket协议,…

Socket 网络协议 等

🍬 什么是服务器? 对外提供服务的一套软件,放在网络上 (IP地址) 什么是客户端? 是为了连接服务器的一个软件 网络编程的3要素 协议 IP地址 局域网IP地址 公网IP地址(买的) 查看…

socket实现http协议

1、在B/S架构中,Web浏览器与Web服务器之间的一次HTTP请求与响应:需要完成以下步骤: http://localhost:8089/index.html 1)、浏览器端根据所在的HTTP协议解析出对应的url域名:localhost 2)、通过DNS域名解析&#xf…

TCP/IP协议族通信的socket介绍及编程

一、概念介绍 TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。 UDP(User Data Protocol,用…

tensorflow之argmax函数独特讲解

在讲解之前,先来一个该函数的参数说明: argmax(a, axisNone, outNone) # a 表示array # axis 表示指定的轴,默认是None,表示把array平铺, # out 默认为None,如果指定,那么返回的结果会插入其中…

南京邮电大学离散数学实验三:编程实现整除关系这一偏序关系上所有盖住关系的求取,并判定对应偏序集是否为格

实验原理及内容 说明:这部分内容主要包括: 1、形式化描述实验中所使用的数据结构和存储结构,给出函数之间的调用关系和数据传递方式; 2、给出核心算法的C或Java等语言的源代码,并加上详细注释,分析算法的…

组合学笔记(六)局部有限偏序集的关联代数,Möbius反演公式

tags: Combinatorics 写在前面 前面铺垫了很多偏序集和格,分配格等的基本知识, 下面开始以这些代数结构为研究对象, 探寻其上的一些性质与关系, 我们先以关联代数的定义开始说起. 关联代数简介 定义 令 I n t ( P ) \mathrm{Int}(P) Int(P)表示 P P P上所有的区间的集合, …

离散中偏序集、乘积群、关系的性质和集合的相关证明

离散证明题&#xff08;三&#xff09; 9.令❄是定义在有限集合A上的一个二元运算&#xff0c;若对于∀a,b∈A&#xff0c;❄满足①aa❄a②a❄bb❄a③a❄(b❄c)(a❄b)❄c,在A上定义一个关系C比如a≤b<>aa❄b. 证明&#xff1a;(1)(A,≤)是一个偏序集 (2)∀a,b∈A,a∧ba❄…

偏序关系以及最大元,最小元,极大,极小元和上下界与上下确界

偏序关系的定义 偏序关系就是自反&#xff0c;反对称&#xff0c;传递的序偶集合。其中满足偏序的集合我们一般称为A&#xff0c;偏序关系一般称为R。 A*A产生的序偶有很多&#xff0c;所以我们使用<A,R>去表示满足某个偏序关系的A中元素的子集。 如果使用图像画这个偏序…

上偏续关系哈斯图_[离散]哈斯图偏序集--最好理解版本

离散数学哈斯图的画法 两个步骤&#xff1a;(1)排点的层数 (2)把有关系的点连接起来 看一道题&#xff1a;设A{1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;6&#xff0c;8&#xff0c;9}&#xff0c;偏序集S{A,《},其中《为整除关系&#xff0c;画出S的哈斯图 首先把…

【集合论】序关系 ( 偏序集元素之间的关系 | 可比 | 严格小于 | 覆盖 | 哈斯图 )

文章目录 一、可比二、严格小于三、覆盖四、哈斯图 一、可比 可比 : A A A 集合 , 该集合上存在 偏序关系 ≼ \preccurlyeq ≼ 小于等于 , 偏序集 是 集合 和 偏序关系 组成的有序对 < A , ≼ > <A, \preccurlyeq> <A,≼> , x , y x, y x,y 是 A A A 集…