SOME/IP 技术说明文档

1 概述

SOME/IP 是智能汽车通信领域的核心协议之一,可理解为一种为汽车电子系统量身定制的通信"语言"和"规则"。它使车上不同电子控制单元(ECU)之间能够高效、灵活地交换数据,是汽车行业实现 SOA(面向服务的架构)的重要基础。

本文档用于说明 SOME/IP 的基本定义、在汽车通信架构中的层级位置以及其技术表现形式。


2 术语与缩写

缩写/术语 全称 说明
SOME/IP Scalable service-Oriented MiddlewarE over IP 运行于 IP 之上的可扩展面向服务中间件
ECU Electronic Control Unit 电子控制单元
SOA Service-Oriented Architecture 面向服务的架构
AUTOSAR AUTomotive Open System ARchitecture 汽车开放系统架构
OSI Open Systems Interconnection 开放系统互连参考模型
TCP Transmission Control Protocol 传输控制协议
UDP User Datagram Protocol 用户数据报协议
IP Internet Protocol 互联网协议
SD Service Discovery 服务发现
RPC Remote Procedure Call 远程过程调用

3 SOME/IP 定义

3.1 全称与中文含义

SOME/IP 全称为:

Scalable service-Oriented MiddlewarE over IP

中文含义为:

运行于 IP 之上的可扩展的面向服务的中间件

3.2 名称解析

组成 含义 说明
Scalable 可扩展 兼容不同硬件、操作系统和软件,具有良好互操作性
service-Oriented 面向服务 核心思想是服务化通信,仅在接收方需要数据时发送,降低网络负载
MiddlewarE 中间件 位于应用层,为上层应用提供通用通信服务,屏蔽底层通信细节
over IP 基于 IP 运行在 IP 协议之上,通常依托车载以太网,使用 TCP 或 UDP 传输

3.3 起源与标准化

SOME/IP 最初由宝马公司开发,后于 2014 年被纳入 AUTOSAR 标准。目前,它已成为汽车行业实现 SOA 架构最核心的通信协议之一。


4 技术定位

4.1 在 OSI 模型中的位置

SOME/IP 位于汽车通信架构的应用层

  • 在 OSI 模型中,它位于第 4 层传输层之上,功能上属于第 5 至第 7 层,即会话层、表示层和应用层的范畴。
  • 通常将其归类为应用层协议。

4.2 在车载以太网协议栈中的位置

SOME/IP 直接构建在 TCP/IP 或 UDP/IP 协议栈之上,是应用层协议的一部分。

层级 协议/组件 说明
应用层 SOME/IP 提供面向服务的通信能力,如方法调用、事件通知等
传输层 TCP / UDP 为 SOME/IP 提供可靠的 TCP 或高效的 UDP 数据传输
网络层 IP(IPv4/IPv6) 负责数据包的路由和寻址
数据链路层与物理层 车载以太网 提供物理连接和帧传输

5 技术形式

SOME/IP 以软件中间件的形式存在,具体表现为定义好的数据包格式和一套通信交互机制。

5.1 软件中间件形式

SOME/IP 作为中间件位于应用层,为上层应用软件提供通用通信服务。应用软件无需关心底层通信细节,只需按照服务接口进行调用、订阅或属性访问。

5.2 报文形式

SOME/IP 通信的基本单元是 SOME/IP 报文 ,由**消息头(Header)数据段(Payload)**组成。

消息头中包含关键控制信息,主要包括:

字段 说明
Message ID 标识具体的服务和方法
Length 指明报文长度
Request ID 用于匹配请求和响应
Message Type 区分报文类型,如请求、响应、通知
Return Code 表示请求的处理结果

5.3 核心通信机制

SOME/IP 主要通过以下三种模式进行通信,以适应不同业务场景。

通信机制 模式 说明 适用场景
Methods 请求/响应 客户端主动向服务端发起请求,服务端处理后返回响应 查询数据或执行特定功能
Events 发布/订阅 服务端在状态变化时,主动向已订阅的客户端推送信息 实时状态监控或告警
Fields 远程属性访问 结合前两者特点,客户端可读取、设置服务端属性,并可订阅属性变化通知 远程属性管理

5.4 服务发现机制

SOME/IP 配套有 SOME/IP-SD(Service Discovery,服务发现) 协议。

SOME/IP-SD 相当于整个通信架构的"指挥中枢",其作用是:

  • 让网络中的客户端动态发现服务端提供了哪些服务;
  • 获知这些服务位于哪个 ECU;
  • 避免在代码中硬编码地址信息。

通过服务发现机制,SOME/IP 能够在运行时建立客户端与服务端之间的通信关系,提高系统的灵活性和可扩展性。


6 特点总结

特点 说明
可扩展 支持异构硬件、操作系统和软件互操作
面向服务 以服务为中心,按需发送数据,降低网络负载
中间件形态 为应用层提供通用通信服务,屏蔽底层细节
基于 IP 运行于 TCP/IP 或 UDP/IP 之上,依托车载以太网
标准化 2014 年纳入 AUTOSAR,成为 SOA 核心通信协议
动态发现 通过 SOME/IP-SD 实现服务动态发现与订阅

|------------------------|----------------|-------------------------|--------------|-------------------------|------------------------------|-----------------------|-----------------------------------|---------------------|---------------------------------|---------------------------------------------------------------------|------------------------|-------------------|-----------------------------|--------------------------|----------------------------------------|--------------------------|-------------------|----------------------|
| Service Name | Service ID | Service Description | RPC Type | Field Property Name | Field Property Data Type | RPC Specific Type | Method/Event Name | Method/Event ID | Method/Event Description | Eventgroup Name@EventgroupID | Transport Protocol | Client | Input Parameter | Output Parameter | Event/Notification Event Parameter | Serialization Config | Send Strategy | Cyclic Time (ms) |
| ADC_HMI_AP_Service | 0x004B | SOC发往HMI显示的AP相关信号 |   |   |   |   |   |   |   | |   |   |   |   |   |   |   |   |
| | |   | Event |   |   | Notification Event | Event_AP_SR_Object | 0x8003 | ADC提供的泊车环境重构信息:目标物(车辆/行人/静态障碍物) | ++EventGroup_AP_SR@0x0030++ | TCP | bmaifusionservice |   | AP_Object_Array | AP_Object_Array | config1 | cyclic | 100 |
| | |   | Event |   |   | Notification Event | Event_AP_SR_SpeedBump | 0x8009 | ADC提供的泊车环境重构信息:减速带 | ++++EventGroup_AP_SR@0x0030++++ | TCP | bmaifusionservice |   | AP_SpeedBump_Array | AP_SpeedBump_Array | config1 | cyclic | 100 |
| | |   | Event |   |   | Notification Event | Event_AP_SR_Pillar | 0x800B | ADC提供的泊车环境重构信息:立柱 | ++EventGroup_AP_SR@0x0030++ | TCP | bmaifusionservice |   | AP_Pillar_Array | AP_Pillar_Array | config1 | cyclic | 100 |
| | |   | Event |   |   | Notification Event | Event_AP_SR_ParkingSlot | 0x800C | ADC提供的泊车环境重构信息:车位 | ++EventGroup_AP_SR@0x0030++ | TCP | bmaifusionservice |   | AP_ParkingSlot_Array | AP_ParkingSlot_Array | config1 | cyclic | 100 |
| | |   | F&F Method |   |   | Fire_Forget | FF_AP_SR_ParkingSlotSelect | 0x000C | CDC请求的泊车环境重构信息:车位选择 | | TCP | bmaifusionservice | AP_ParkingSlotSelect_Struct |   |   | config1 |   |   |
| | |   | Event |   |   | Notification Event | Event_AP_Plan_GuideLine | 0x8010 | ADC提供的泊车规划信息:引导线 | ++EventGroup_AP_Route@0x0040++ | TCP | bmaifusionservice |   | AP_GuideLine_Array | AP_GuideLine_Array | config1 | cyclic | 100 |
| | |   | Event |   |   | Notification Event | Event_AP_Route_APA | 0x8014 | ADC提供的泊车路线信息:自动泊车 | ++EventGroup_AP_Route@0x0040++ | TCP | bmaifusionservice |   | AP_APA_Struct | AP_APA_Struct | config1 | cyclic | 100 |
| | |   | Event |   |   | Notification Event | Event_AP_Pos_EgoPositioning | 0x8020 | ADC提供的泊车定位信息:自车定位 | ++EventGroup_AP_Pos@0x0050++ | TCP | bmaifusionservice |   | AP_EgoPositioning_Struct | AP_EgoPositioning_Struct | config1 | cyclic | 100 |
| CONFService | 0x004D | CDC请求ADCU提供传感器配置信息 |   |   |   |   |   |   |   | |   |   |   |   |   |   |   |   |
| | |   | R/R Method |   |   | Request_Response | RR_CONF_CameraIntrinsicParameters | 0x0030 | CDC请求ADCU响应的摄像头内参信息 | | TCP | HMIService | CONF_Ctype | CONF_CIPDataArray |   | config1 |   |   |

一、表格整体结构

这张表按 Service(服务) 分组,每个服务下面列出它的 Method(方法)Event(事件)Field(字段)

你贴的内容主要包含两个服务:

  1. ADC_HMI_AP_Service 0x004B

    描述:SOC 发往 HMI 显示的 AP 相关信号。

    下面有多个 Event 和一个 F&F Method。

  2. CONFService 0x004D

    描述:CDC 请求 ADCU 提供传感器配置信息。

    下面有一个 R/R Method。


二、各列含义解析

列名 含义
Service Name 服务名称,一组接口的命名空间
Service ID 服务唯一 ID,16 位,如 0x004B
Service Description 服务功能描述
RPC Type 接口大类:Method / Event / Field
Field Property Name 如果是 Field,字段名称
Field Property Data Type 如果是 Field,字段数据类型
RPC Specific Type 更细类型:Request_ResponseFire_ForgetNotification Event
Method/Event Name 方法或事件名称
Method/Event ID 方法或事件 ID,16 位。方法通常 0x0000~0x7FFF,事件通常 0x8000~0xFFFF
安全相关 功能安全/信息安全标记,如 E2E、SecOC,空表示未定义
Method/Event Description 方法或事件描述
Eventgroup Name@EventgroupID 事件组名和 ID,SOME/IP-SD 中订阅的单位
Transport Protocol 传输协议:TCP / UDP
Client 客户端/订阅者
Input Parameter 方法请求参数
Output Parameter 方法响应参数;事件行中常与事件负载相同
Event/Notification Event Parameter 事件通知负载类型
Serialization Config 序列化配置引用,如 config1,定义字节序、对齐等
Send Strategy 发送策略:cyclic(周期)、on change(变化时)等

三、逐行解读你的表格

1. ADC_HMI_AP_Service 0x004B

服务描述:SOC 发往 HMI 显示的 AP 相关信号。

事件组 EventGroup_AP_SR@0x0030
事件名 Event ID 描述 负载类型 传输 发送策略
Event_AP_SR_Object 0x8003 泊车环境重构:目标物(车辆/行人/静态障碍物) AP_Object_Array TCP cyclic
Event_AP_SR_SpeedBump 0x8009 泊车环境重构:减速带 AP_SpeedBump_Array TCP cyclic
Event_AP_SR_Pillar 0x800B 泊车环境重构:立柱 AP_Pillar_Array TCP cyclic
Event_AP_SR_ParkingSlot 0x800C 泊车环境重构:车位 AP_ParkingSlot_Array TCP cyclic

这些事件都是 Notification Event ,客户端 bmaifusionservice 订阅了事件组 EventGroup_AP_SR@0x0030,服务端会通过 TCP 周期发送这些数组数据。

Fire & Forget 方法
方法名 Method ID 类型 描述 输入 输出 Client
FF_AP_SR_ParkingSlotSelect 0x000C Fire_Forget CDC 请求车位选择 AP_ParkingSlotSelect_Struct bmaifusionservice

Fire & Forget 表示客户端发完请求就走,服务端不返回响应。

事件组 EventGroup_AP_Route@0x0040
事件名 Event ID 描述 负载类型
Event_AP_Plan_GuideLine 0x8010 泊车规划:引导线 AP_GuideLine_Array
Event_AP_Route_APA 0x8014 泊车路线:自动泊车 AP_APA_Struct
事件组 EventGroup_AP_Pos@0x0050
事件名 Event ID 描述 负载类型
Event_AP_Pos_EgoPositioning 0x8020 泊车定位:自车定位 AP_EgoPositioning_Struct

以上事件都通过 TCP 周期发送,客户端均为 bmaifusionservice,序列化配置为 config1


2. CONFService 0x004D

服务描述:CDC 请求 ADCU 提供传感器配置信息。

方法名 Method ID 类型 描述 Client 输入 输出 传输
RR_CONF_CameraIntrinsicParameters 0x0030 Request_Response CDC 请求 ADCU 响应的摄像头内参信息 HMIService CONF_Ctype CONF_CIPDataArray TCP

这是一个标准的请求/响应方法:客户端 HMIService 发请求,服务端返回摄像头内参数据。


四、几个关键点

  1. Message ID 组合规则

    SOME/IP 的完整 Message ID = Service ID + Method/Event ID

    例如:

    • Event_AP_SR_Object0x004B + 0x8003 = 0x004B8003
    • FF_AP_SR_ParkingSlotSelect0x004B + 0x000C = 0x004B000C
    • RR_CONF_CameraIntrinsicParameters0x004D + 0x0030 = 0x004D0030
  2. 事件 ID 与方法 ID 的范围

    方法 ID 一般在 0x0000~0x7FFF;事件 ID 一般在 0x8000~0xFFFF。你表里的事件都是 0x80xx,方法都是 0x00xx,符合规范。

  3. Eventgroup 是订阅单位

    客户端不是单独订阅某个事件,而是订阅一个 Eventgroup。

    例如订阅 EventGroup_AP_SR@0x0030,就会收到该组内所有事件:目标物、减速带、立柱、车位。

  4. Send Strategy = cyclic

    表示这些事件周期发送,适合状态流、感知数据流。config1 是序列化配置,决定数据怎么变成字节流。

  5. 空单元格

    通常表示"不适用"或"继承上方服务信息",不是没有意义。


五、总结

这张表就是 SOME/IP 通信矩阵,它用二维表格描述了一个 SOA 架构下的服务接口契约:

  • 服务有哪些;
  • 每个服务下有哪些方法、事件、字段;
  • 它们的 ID、参数、传输协议、客户端、事件组、发送策略、序列化配置是什么。

它是汽车以太网 SOA 开发中非常核心的设计文档,后续会用来生成 ARXML、配置 SOME/IP 通信栈、开发客户端/服务端代码以及编写测试用例。

相关推荐
Kuakewei8881 小时前
Type-C快充取电芯片产品介绍:PD与QC双协议取电
嵌入式硬件
开发笔记-阿牛1 小时前
做工业报警器语音提示,CK6159A 为什么更合适?
人工智能·stm32·单片机·嵌入式硬件·音频
恶魔泡泡糖2 小时前
stm32F103C8T6标准库串口接收轮询方式1
stm32·单片机·嵌入式硬件
企业通信技术笔记2 小时前
信创环境下企业即时通讯IM怎么部署?5类方案的架构与适配思路
架构·私有化部署·信息与通信·信创·企业即时通讯
国科安芯2 小时前
寄存器级 Flash 擦除与六轮迭代踩坑实录
嵌入式硬件·mcu·架构·flash·抗辐射·eflash
艾芯微科技3 小时前
B16WS SOD-323 肖特基二极管参数、应用电路与选型踩坑指南
网络·单片机·嵌入式硬件·集成测试·51单片机
天空'之城3 小时前
单片机基础核心知识点汇总(三十七)
单片机·嵌入式硬件
Groundwork Explorer3 小时前
ESP32-C3 SuperMini 排查WIFI收发故障
python·单片机·嵌入式硬件·mcu
索端阳3 小时前
初识 ARM Cortex-A7,嵌入式底层入门总结
汇编·嵌入式硬件