如何在微信平台做购买网站,wordpress图片p标签,wordpress 捐赠,如何做网站内容架构分析介绍
SOME/IP是一种汽车中间件解决方案#xff0c;可用于控制消息。它从一开始就被设计为完美地适应不同尺寸和不同操作系统的设备。这包括小型设备#xff0c;如相机、AUTOSAR 设备#xff0c;以及头戴设备或远程通信设备。它还确保SOME/IP支持信息娱乐域以及车辆中其他域…介绍
SOME/IP是一种汽车中间件解决方案可用于控制消息。它从一开始就被设计为完美地适应不同尺寸和不同操作系统的设备。这包括小型设备如相机、AUTOSAR 设备以及头戴设备或远程通信设备。它还确保SOME/IP支持信息娱乐域以及车辆中其他域的功能从而允许SOME/IP用于大多数替换场景以及更传统的CAN场景。 SOME/IP工作在传输层之上即硬件无关 功能
SOME/IP 支持广泛的中间件功能
序列化 – 线上输入输出转换。远程过程调用 (RPC) and Messaging – 实现函数和其他消息的远程调用。服务发现 (SD) – 动态查找、功能、配置。发布/订阅 (Pub/Sub) – 动态配置需要哪些数据并应发送到客户端。UDP信息块 – 允许通过 UDP 传输大型 SOME/IP 消息而无需分段。
序列化
SOME/IP序列化被设计成高效率的它使用极少的RAM和CPU资源。 是通过二进制和不可读的格式实现的。基本上各设备都有所有的参数。消息的格式与消息的内存中表示形式打包结构非常相似或在许多情况下完全相同。
SOME/IP能序列化如下基本的数据类型数据类型被默认编码成网络字节序也就是大端序当然也可以编码成小端序
boolean: 一字节的布尔类型uint8: 无符号的一字节整型uint16: 无符号的两字节整型uint32: 无符号的四字节整型uint64: 无符号的八字节整型sint8: 有符号的一字节整型sint16: 有符号的两字节整型sint32: 有符号的四字节整型sint64: 有符号的八字节整型float32: 无符号的一字节整型float64: 无符号的一字节整型
SOME/IP能序列化如下的复杂的数据类型
struct: 结构体string: 字符串array: 数组enumeration: 枚举bitfield: 位域union: 共用体
远程过程调用 (RPC) 和消息体
SOME/IP服务支持以下几种消息
请求/响应方法 从客户端发送到服务器的请求和从服务器发送到客户端的响应。此外SOME/IP 允许错误响应从服务器发送回客户端而不是常规响应。此功能可用于在错误情况下实现不同的数据包格式。即发即弃方法从客户端发往服务端的请求。事件从服务器发送到相关客户端的事件。哪个客户端需要此事件将通过 SOME/IP-SD 确定域 字段可以具有选项通知程序循环发送或更改时发送的事件、可选资源库用于更新字段的请求/响应方法和可选 getter用于读取字段当前值的请求/响应方法。
SOME/IP报文格式 Message ID:
在SOME/IP里的Message ID被用来标识应用程序或事件的方法。MessageID跟CAN ID一样它在整个车载网络总应该是唯一的。Message ID的规划由用户决定。
Message ID包含两个域一个是service ID另一个是Method ID。按如下方式构成
Service ID [16 Bit]0 [1 Bit]Method ID [last 15 Bit]
Length:
长度域里的长度值为从Request ID/Client ID开始到SOME/IP消息尾的字节数。
Request ID:
请求 ID 用于区分同一方法、事件、getter 或 setter 的多个用例。应根据订阅者和提供者组合使用唯一的请求 ID。
提供者应当从请求中复制Request ID添加到响应中。这允许订阅者区分多个挂起的请求。
并且订阅者不应该使用相同的请求 ID直到收到响应和/或不再期望收到响应。
Request ID 有两个子域 Client ID和Session ID如下表所示。
Client ID [16 Bits]Session ID [16 Bits]
Client ID:
客户端 ID 也是唯一标识符用于区分使用相同Method而来自不同提供者的响应。
Session ID:
session ID也是唯一的标识用来区分使用相同Method的多个调用此处的提供者可以相同。
请求/响应方法应使用带会话 ID 的会话处理。会话 ID 应在每次调用后递增。当会话 ID 达到 0xFFFF 时它将滚动并重新启动。如果响应的会话 ID 与请求的会话 ID 不匹配订阅者必须忽略该响应。
Protocol Version:
协议版本应该是一个字节大小包含SOME/IP的协议版本。
Interface Version:
接口版本应该是一个字节大小包含服务接口的主版本。
Message Type:
消息类型字段用于区分不同类型的消息应包含下表中所示的以下值。 Return Code:
返回码用于指示请求是否已成功处理。 支持的返回码如下所示。
Message TypeAllowed Return CodesREQUESTN/A set to 0x00 (E_OK)REQUEST_NO_RETURNN/A set to 0x00 (E_OK)NOTIFICATIONN/A set to 0x00 (E_OK)RESPONSEMany Sub Type are thereERRORMany sub types are there , other then 0x00 (E_OK)
Payload:
在此字段中实际数据将被传输有效载荷字段没有固定大小它是用户/应用程序定义的。但是SOME/IP 中有效负载数据的最大限制取决于传输协议。使用 UDP 的 SOME/IP 有效负载大小为 0 到 1400 字节。
有效负载包含事件的数据元素和方法的参数。
在 SOME/IP 应用程序中数据将使用“有效负载”字段上的序列化进行存储。在 SOME/IP 数据序列化中也依赖于配置参数数据的序列化在最开头有讨论。
参考
Scalable service-Oriented MiddlewarE over IP (SOME/IP)
发送SOME/IP数据包的工具 https://gitee.com/wq897/FibexConverter.git
SCALABLE SERVICE-ORIENTED MIDDLEWARE OVER IP (SOME/IP)