# SOME/IP 转换器规范 (Specification of SOME/IP Transformer) > **AUTOSAR CP Release 4.4.0** > **文档 ID 660: AUTOSAR_SOMEIPTransformer** ## 元信息 | 项目 | 内容 | | --- | --- | | 文档标题 | SOME/IP 转换器规范 | | 文档所有者 | AUTOSAR | | 文档责任方 | AUTOSAR | | 文档标识号 | 660 | | 文档状态 | Final | | 所属 AUTOSAR 标准 | Classic Platform | | 所属标准版本 | 4.4.0 | ## 文档变更历史 | 日期 | 版本 | 变更方 | 变更说明 | | --- | --- | --- | --- | | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 字符串和数组支持增强;字节序处理 | | 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 修正/澄清 | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 增强复杂数据类型 | | 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 初始正式版本 | --- ## 目录 - [1. 介绍](#1-介绍) - [2. 缩略语](#2-缩略语) - [3. 相关文档](#3-相关文档) - [4. 约束与假设](#4-约束与假设) - [5. 与其他模块的依赖](#5-与其他模块的依赖) - [6. 需求可追溯性](#6-需求可追溯性) - [7. 功能规范](#7-功能规范) - [8. API 规范](#8-api-规范) - [9. 配置规范](#9-配置规范) --- ## 1. 介绍 SOME/IP(Scalable service-Oriented MiddlewarE over IP)是一种面向服务的中间件,允许 SWC 进行 Client/Server 通信或 Sender/Receiver 通信。 **SOME/IP 转换器**是 AUTOSAR Transformer 概念的一部分,负责: - 发送端:将 SWC 数据序列化为符合 SOME/IP 协议的字节序列 - 接收端:从 SOME/IP 字节序列反序列化为 SWC 数据 ### 1.1 范围 SOME/IP 转换器只实现 SOME/IP 协议的一部分: - 一部分由 Service Discovery [2] 实现 - 一部分由 Socket Adaptor [4] 实现 - 一部分目前在 AUTOSAR 中未实现(见附录 B) --- ## 2. 缩略语 | 缩略语 | 描述 | | --- | --- | | API | Application Programming Interface | | AUTOSAR | Automotive Open System Architecture | | BSW | Basic Software | | DET | Default Error Tracer | | IP | Internet Protocol | | ISignal | Inter-ECU Signal | | RTE | Runtime Environment | | SD | Service Discovery | | SoAd | Socket Adaptor | | SOME/IP | Scalable service-Oriented MiddlewarE over IP | | SOME/IP-SD | SOME/IP Service Discovery | | SWC | Software Component | | TCP | Transmission Control Protocol | | TLV | Type-Length-Value | | UDP | User Datagram Protocol | | UTF | Unicode Transformation Format | --- ## 3. 相关文档 ### 3.1 输入文档 - [1] List of Basic Software Modules - [2] Specification of Service Discovery - [3] General Specification on Transformers - [4] Specification of Socket Adaptor - [5] Specification of RTE Software - [6] Requirements on AUTOSAR Features - [7] Specification of Platform Types - [8] Software Component Template - [9] System Template - [10] Requirements on Transformer - [11] UTF-8, a transformation format of ISO 10646 - [12] UTF-16, an encoding of ISO 10646 - [13] General Specification of Basic Software Modules - [14] General Requirements on Basic Software Modules ### 3.2 相关标准 - UTF-8、UTF-16 编码规范 [11, 12] ### 3.3 相关规范 AUTOSAR 提供 General Specification on Transformers [3],同样适用于 SOME/IP 转换器。 --- ## 4. 约束与假设 ### 4.1 限制 对 SOME/IP 转换器,所有通用 transformer 限制均适用(见 [3])。 ### 4.2 适用车域 当使用 SOME/IP Sender/Receiver 或 Client/Server 通信时,适用于所有车域。 --- ## 5. 与其他模块的依赖 AUTOSAR RTE [5] 必须存在以执行转换器。 ### 5.1 文件结构 #### 5.1.1 代码文件结构 按 ASWS Transformer General [3] 定义。 #### 5.1.2 头文件结构 - **[SWS_SomeIpXf_00136]** ⌈头文件 SomeIpXf[_].h 应是 SOME/IP 转换器的主头文件,应包含 TransformerTypes.h 和模块互连头文件 SchM__[_].h。⌋ (SRS_BSW_00346) --- ## 6. 需求可追溯性 | 需求 ID | 描述 | 满足者 | | --- | --- | --- | | SRS_BSW_00159 | 工具配置 | SWS_SomeIpXf_00185 | | SRS_BSW_00337 | 开发错误分类 | SWS_SomeIPxf_00184 | | SRS_BSW_00346 | 基本模块文件 | SWS_SomeIpXf_00136 | | SRS_BSW_00404 | 后构建配置 | SWS_SomeIpXf_00183 | | SRS_BSW_00407 | 版本信息 | SWS_SomeIpXf_00180, SWS_SomeIpXf_00181, SWS_SomeIpXf_00182 | | SRS_Xfrm_00001 | 转换器处理 RTE 数据 | SWS_SomeIpXf_00264, SWS_SomeIpXf_00265, SWS_SomeIpXf_00266 | | SRS_Xfrm_00002 | 固定接口 | SWS_SomeIpXf_00206 ~ SWS_SomeIpXf_00211 | | SRS_Xfrm_00004 | 错误处理 | SWS_SomeIpXf_00264, SWS_SomeIpXf_00265, SWS_SomeIpXf_00266 | | SRS_Xfrm_00008 | 指定输出格式 | SWS_SomeIpXf_00001 ~ SWS_SomeIpXf_00156 | > **[摘要]** 完整需求追溯表见原文 PDF 第 12-30 页。 --- ## 7. 功能规范 ### 7.1 SOME/IP 消息格式 SOME/IP 消息由以下字段组成: - **Message ID** (32 位):Service ID (16) + Method ID (15) + Event Flag (1) - **Length** (32 位):剩余消息长度 - **Request ID** (32 位):Client ID (16) + Session ID (16) - **Protocol Version** (8 位):0x01 - **Interface Version** (8 位) - **Message Type** (8 位):REQUEST/RESPONSE/NOTIFICATION/REQUEST_NO_RETURN/ERROR - **Return Code** (8 位):E_OK 或错误码 - **Payload** (可变):实际数据 ### 7.2 数据序列化 #### 7.2.1 基础数据类型 | AUTOSAR 类型 | SOME/IP 字节序 | | --- | --- | | uint8 / sint8 | 1 字节 | | uint16 / sint16 | 2 字节 BE/LE | | uint32 / sint32 | 4 字节 BE/LE | | uint64 / sint64 | 8 字节 BE/LE | | float32 | 4 字节 IEEE 754 BE/LE | | float64 | 8 字节 IEEE 754 BE/LE | | boolean | 1 字节 (0x00/0x01) | #### 7.2.2 字符串 - 支持 UTF-8 和 UTF-16 - 固定长度或动态长度(带长度前缀) - BOM (Byte Order Mark) 支持 #### 7.2.3 数组 - 固定大小或动态大小(带长度前缀) - 元素递归序列化 #### 7.2.4 结构体 - 元素按声明顺序序列化 - 支持嵌套 #### 7.2.5 联合 (Union) - 4 字节类型 ID 前缀 + 数据 ### 7.3 TLV (Type-Length-Value) 编码 可选支持 TLV 编码,在结构体中添加 wireType 和 length。 ### 7.4 接收处理 - **[SWS_SomeIpXf_00264]** ⌈接收时,SOME/IP 转换器应解析 SOME/IP 头并反序列化 payload。⌋ - **[SWS_SomeIpXf_00265]** ⌈错误的消息格式应返回 E_NOT_OK。⌋ ### 7.5 错误分类 #### 7.5.1 转换器返回码 | 返回码 | 含义 | | --- | --- | | E_OK | 成功 | | E_NOT_OK | 一般错误 | | E_SER_GENERIC_ERROR | 序列化错误 | | E_SER_MALFORMED_MESSAGE | 消息格式错误 | | E_SER_WRONG_INTERFACE_VERSION | 接口版本错误 | | E_SER_WRONG_PROTOCOL_VERSION | 协议版本错误 | #### 7.5.2 开发错误 - **[SWS_SomeIPxf_00184]** ⌈应分类开发错误。⌋ --- ## 8. API 规范 ### 8.1 转换器函数 #### 8.1.1 SomeIpXf_ ```c uint8 SomeIpXf_( uint8* buffer, uint32* bufferLength, const * dataElement ) ``` | 描述 | 序列化 SWC 数据为 SOME/IP 字节序列 | | --- | --- | #### 8.1.2 SomeIpXf_Inv_ ```c uint8 SomeIpXf_Inv_( const uint8* buffer, uint32 bufferLength, * dataElement ) ``` | 描述 | 反序列化 SOME/IP 字节序列为 SWC 数据 | | --- | --- | ### 8.2 版本信息 #### 8.2.1 SomeIpXf_GetVersionInfo ```c void SomeIpXf_GetVersionInfo(Std_VersionInfoType* versioninfo) ``` --- ## 9. 配置规范 ### 9.1 配置容器 SOME/IP 转换器配置基于: - SOMEIPTransformationDescription (SystemTemplate) - SOMEIPTransformationISignalProps - SOMEIPTransformationComSpecProps ### 9.2 主要配置参数 | 参数 | 类型 | 说明 | | --- | --- | --- | | protocol | string | SOMEIP | | version | string | 1.0.0 | | transformerClass | enum | serializer | | byteOrder | enum | BE / LE | | serviceInterfaceVersion | uint8 | 接口版本 | | serializer | container | 详细序列化配置 | ### 9.3 数据类型配置 | 参数 | 类型 | 说明 | | --- | --- | --- | | dataTypeId | uint32 | 类型 ID(用于 union) | | dataTypeName | string | 数据类型名 | | lengthFieldSize | enum | 长度字段大小(0/1/2/4 字节) | | typeFieldSize | enum | 类型字段大小 | > **[摘要]** 详细配置参数见原文 PDF 第 50-90 页;附录 A 提供完整数据格式示例,附录 B 说明未实现的 SOME/IP 部分。 --- ## 翻译说明 - 本译本基于 AUTOSAR CP 4.4.0 的 SOME/IP 转换器规范 (Document ID 660,共 100 页) - 摘要标记位置:第 6 章需求追溯、第 9 章配置参数和附录