someip协议栈基础知识讲解

做过车载项目的同学都知道,车内各控制域间有很多的信号需要交互, 比如我们的远控功能,数据上报功能等等。而车内信号交互的两种重要方式就是CAN和以太网。

在我们的实际项目中经常会提到SOA架构, 那么什么是SOA架构呢? 

SOA(Service-Oriented Architecture,面向服务架构)是一种以 “服务” 为核心的软件设计范式,将业务功能封装为松耦合、可复用、标准化的独立单元,通过统一接口与协议实现跨系统 / 平台的互操作,核心目标是提升 IT 资源复用率、加速业务响应并降低集成成本。

今天我们不讲SOA架构,而是简单简单说一说SOA架构常用的实现方式  --- SOMEIP。

一. someip 概念
1.1 概念

SOME/IP是一种汽车中间件解决方案,SOME/IP全称:Scalable service-Oriented MiddlewarE over IP(位于IP协议蹭之上的一种面向服务的可扩展的中间件),是一种基于以太网的协议,提供面向服务的接口。

1.2 为什么需要SOME/IP?

(1) 传统汽车协议的局限性:传统的汽车协议如 CAN、MOST、LIN 和 Flexray 等,存在带宽有限的问题,难以满足现代汽车日益增长的高数据传输需求。基于IP网络,SOME/IP能够利用现有的IP网络基础设施,提供服务发现、描述、配置以及调用等功能

(2) SOME/IP的可扩展性:SOME/IP能够实现不同硬件平台,不同操作系统或嵌入式固件之间的可扩展和互操作

二.someip 协议格式

SOME/IP协议由消息头(header)和数据段(payload)组成。

1. message ID是唯一的[服务ID/方法ID, 占用32bit]。前16位标识服务(service id),后16位标识方法(method id) 32bits细分结构如下:

(1) 方法调用:method, getter,setter

service id(16bit) 0 (1bit) method id(15 bit)

(2) 事件通知:event, notify

service id(16bit) 1 (1bit) method id(15 bit)

2. length [占用32 bits] 标识后续的Request ID到payload的字节长度, 单位是字节。

3. Request ID (client id+session id)[占用32 bits]

Request ID允许server 和 clinet区分同一method, event, getter和setter的多个并行使用。
a. Client ID用于区分使用同一Method的不同客户端. client ID只有两个字节,能够同时支持多少客户端?支持65536个.
b. session ID由数据的发送方每发送一次数据+1,从0x1加到0xffff后,从1重新开始,用于区分每一条消息 

Request ID仅对提供方和订阅方组合(即一次订阅) 是唯一的。 

数据生成响应消息时,server应将Request ID从请求复制到响应消息Response message中。

Request ID结构如下:

client id [16位] session id [16位]

4. Protocol Version [占用8bits]

协议版本号,目前该值为1

5.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值