Some/IP学习笔记

目录

1.概述

2.SOME/IP 报文格式

3.数据结构序列化


1.概述

        SOME/IP全称为Scalable Service Oriented MiddlewarE Over IP,是车载以太网技术中的核心内容,它为网络提供了面向服务的通信方式。一个服务可以包含0个或者多个事件(events),方法(methods)和fields。

Events提供周期性发送的数据或者有变化的数据(从provider到subscriber),单向数据传输;

Methods为subscriber提供远程调用,供subscriber端使用;

Fileds由以下组合;

  1. 从provider向subscriber发送变更数据的通知
  2. Subscriber可调用的getter,用于显示向provider提供值
  3. Subscriber想要更改provider端的值时可以调用的setter

    Filed中的通知与event的区别在于:event只会在变化时发送,通知除了上述上述功能,还会在订阅后直接发送数据。

在Autosar ECU中,SOME/IP架构如下:

Some/IP学习笔记_第1张图片

下图为车载SOME/IP的通信demo:

Some/IP学习笔记_第2张图片

其中,车载以太网100BASE-T1和1000BASE-T1对比如下:

100BASE-T1

1000BASE-T1

线缆类型

1对UTP

1对UTP

通信方式

全双工

全双工

编码方式

3B2T to PAM3

3B2T to PAM3

传输频率及位时间

66.666MHz/15ns

750MHz/1.33ns

传输距离

15m

15m

PoDL

支持

支持

2.SOME/IP 报文格式

        OSI七层模型中,数据从应用层到物理层经过层层封装然后传输,上三层的数据流在传输层被封装层数据段,在网络层数据段被封装成数据报,在链路层被封装为数据帧,最后在物理层编码陈比特流进行传输,如下:

Some/IP学习笔记_第3张图片

        SOME/IP属于应用层,以中间件的形式为应用层和下层提供通信接口;它用于面向服务的通信,主要特点为:降低负载、兼容AUTOSAR、实现方法复用、扩展,其数据结构如下:

Some/IP学习笔记_第4张图片

报文格式

解释

Message ID(Service ID)

服务的ID号,16bits,用于标识一个服务(0+15bit MessageID)

Message ID(Method ID)

方法的ID号,16bits,用于标识一个方法(1+15 bit EventID)

Length(Byte 0,1)

报文长度,从Request ID到报文结束的总长度

Length(Byte 2,3)

Request ID(Client ID)

客户端ID,16bits,区分不同客户端

Request ID(Session ID)

会话ID,区分同一客户端的连续消息或请求

Protocol Version

协议版本号

Interface Version

服务接口版本

Message Type

报文类型

Return Code

返回码

Payload

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

Message Type

Number

Value

Description

0x00

REQUEST

请求并期望响应

0x01

REQUEST_NO_RETURN

请求但不期望响应

0x02

NOTIFICATION

一个通知/事件回调的请求,不期望有响应

0x40

REQUEST_ACK

0x00的ACK确认

0x41

REQUEST_NO_RETURN_ACK

0x01的ACK确认

0x42

NOTIFICATION_ACK

0x02的ACK确认

0x80

RESPONSE

响应

0x81

ERROR

响应中包含错误

0xC0

RESPONSE_ACK

0x80的ACK确认

0xC1

ERROR_ACK

0x81的ACK确认

0x20

TP_REQUEST

TP请求并期望响应

0x21

TP_REQUEST_NO_RETURN

TP请求但不期望响应

0x22

TP_NOTIFICATION

一个TP通知/事件回调的请求,不期望有响应

0xa0

TP_RESPONSE

TP响应

0xa1

TP_ERROR

TP响应中包含错误

Return Code

Number

Value

Description

0x00

E_OK

没有错误发生

0x01

E_NOT_OK

发生了没有指定的错误

0x02

E_UNKNOWN_SERVICE

未知的服务ID

0x03

E_UNKNOWN_METHOD

服务ID预定义相符,未知的Method ID

0x04

E_NOT_READY

应用程序没有运行

0x05

E_NOT_REACHABLE

运行该服务的系统不可用

0x06

E_TIMEOUT

发生超时

0x07

E_WRONG_PROTOCOL_VERSION

SOME/IP协议版本不支持

0x08

E_WRONG_INTERFACE_VERSION

接口版本不匹配

0x09

E_MALFORMED_MESSAGE

反序列化错误

0x0a

E_WRONG_MESSAGE_TYPE

接收到不符合预期的消息类型

0x0b-0x1f

RESERVED

预留

0x20-0x5E

RESERVED

用于服务和方法的特定错误,由接口规范指定

 Payload之前的称为SOMI/IP Header

Payload:用户自定义数据,由工程师根据节点功能需求对每个服务或方法中的数据进行详细定义。

如果有E2E通信,E2E Header应该放在Payload之上,如下:

Some/IP学习笔记_第5张图片

        SOME/IP的传输必须封装到OSI第四层的报文中进行传输,即封装到UDP/TCP中,需要注意的是使用TCP进行传输时,必须由Client来建议连接或者终止。 

3.数据结构序列化

        序列化基于接口规范定义的参数列表。接口规范定义了PDU中所有数据结构的确切位置,并且必须考虑存储器对齐。对齐用于通过在数据之后插入填充元素来对齐数据的开头,以确保对齐的数据从特定内存地址开始。

 

你可能感兴趣的:(闲言碎语,tcp/ip,学习,笔记,some/ip)