8.2 KiB
8.2 KiB
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. 介绍
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_
uint8 SomeIpXf_<transformerId>(
uint8* buffer,
uint32* bufferLength,
const <DataType>* dataElement
)
| 描述 | 序列化 SWC 数据为 SOME/IP 字节序列 |
|---|
8.1.2 SomeIpXf_Inv_
uint8 SomeIpXf_Inv_<transformerId>(
const uint8* buffer,
uint32 bufferLength,
<DataType>* dataElement
)
| 描述 | 反序列化 SOME/IP 字节序列为 SWC 数据 |
|---|
8.2 版本信息
8.2.1 SomeIpXf_GetVersionInfo
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 章配置参数和附录