热搜词
资讯
财经
游戏
搜索
登录
0
0
打赏作者
赏
作者微信
微
SomeIP 协议
中游技术
2年前 (2022-09-13)
0
999+
关注
SomeIP协议
1.什么是SomeIP
1.1 someip是一种协议
someip是什么协议?
宝马公司制定的,是车载以太网和SOA的驱动
主要提供车内娱乐信息交互的中间信息传递(例如智能座舱)
可以适配各种操作系统QNX Linux等
1.2 someip是一个中间件
是操作系统/硬件/和APP之间的服务软件
与APP之间使用标准的接口
1.3 协议层
基于TCP/IP的传输,以太网的方式
2.Some/IP的功能
2.1 序列化
将数据结果或者对象按照定义的规则转换成二进制的过程,便于在网络上传输
2.2 远程调用
基于网络传输方式实现节点间的方法调用
2.3 服务发现
特殊的服务:该服务,client 可以查找所需要的服务。server端可以告诉client 自己那些服务可以被使用
client 端可以和server端动态建立连接
2.4 订阅/发布
client 端可以想server 订阅相关topic 的数据。server也可以以cycle/event 的方式发布这些数据
3.服务接口
Method -方法
Property/field - 字段属性
Event-事件
3.1 Method
client 向sever 请求报文
server 响应报文【RR】==>Request/Response
server 不需要回复响应报文【FF-Method】==> Fire/Forget(当请求为F&F通信的时候,请求的报文类型我REQUEST_NO_RETURN)
3.2 Event
client 订阅一个服务,server发布服务
status: on change/cycle
status value: on change/cycle/事件值变化超过设置范围
3.3 filed -属性/状态
set/get
cilent request 获取/设置 某个属性或状态
notify
cilent subscribe 某个属性/状态后,server就发布该服务
发布条件同Event,有一点不同得是订阅后server会立即发送此field的内容
4.SomeIP报文格式
SomeIP报文一般是由Header 和Payload组成
Header 部分
Message ID: 报文的标识符:4个字节的长度,SomeIP有唯一的ID(类似于CAN ID),当定义为Method的时候,Method Id的最高位为0,当定义为Event的时候,Method ID的最高位为0,不同的Method 和Event也有唯一的Method ID和Event ID,对于远程调用RPC的时候(例如从一个ECU到另一个ECU之间的消息传递),指定的sevice 和对应的调用方法.
例如,某个ecu需要和Tbox之间的数据交互,获取Tbox上的WAN信息,就需要指定service id 为Tbox对应的service id,method ID 为其中定义获取WAN相关信息的ID
Length: 4个字节,这里的length 是指的Length字段之后的长度
Request ID:请求ID
区分每一条请求
Server 端会将这部分copy到response报文中
client ID: 2个字节,区分请求同一个sevice的不同客户端
session ID: 2个字节,同一个客户端请求同一个service的次数
protocol Version:Some/ip的协议版本,1个字节
Interface Version: service Interface 的主版本
用作检测服务的一致性,是否匹配(比如VSP 服务增加功能接口,对应更新了矩阵版本,之前client指定的版本可能就找不到对应的功能)
Message Type :报文的类型(区分不同的消息类型),一个字节
Return Code :请求是否被成功处理,1个字节
5.序列化
5.1 序列化和/反序列化
序列化:将对象的状态信息转换为可以存储或以二进制的信息在网络中传输
序列化根据传输的不同数据有不同的规则
基本数据类型的序列化
结构体的序列化
字符串的序列化(定长/变长)
数组的序列化(定长/变长)
基本数据的序列化
定义传输数据的字节序:例如 uint32 (0x A05C6D4F)
字符串类型的序列化
字符串由一系列的Unicode字符构成,并且以" " (0x00)结束
数组类型的序列化
数组是相同类型的集合
根据数组的元素的序列排列,并进行序列化
6.Some/IP SD(Service Discovery)
6.1概述
一种特殊的服务,实现服务寻找事件订阅功能
服务寻址
FindService
OfferService
StopOffService
事件订阅
subscrbe Eventgroup
stopSubscribe Eventgroup
Subscribe EventgroupAck
Subscribe EventgroupNAck
6.2 SomeIP SD报文格式
Flags:第一个字节是标志字段,最高三位从高到低依次为重启标志位,单播标志位,初始数据控制标志位,低五位保留
Reboot Flag
重启时置1(或者上电的时候)
当sesson ID 完成从0~0xFFFF的一个循环之后,Reboot置0(sesson ID 或从0逐渐增加直到0xFFFF 后又循环)
重启检测
Unicast Flag
是否支持单播接收(=1)
Entry 阵列
服务发现是通过SD报文中的Entry阵列字段携带的不同类型Entry来实现的, Entry用来同步服务实例状态和处理事件组的发布和订阅。依据SD 报文中Entry的作用不同将SD的报文类型分为七种,其中Find报文、Offer报文和Stop Offer报文基于不同的机制周期发送,用于同步服务实例的状态;订阅事件组报文、停止订阅事件组报文、订阅ACK报文和订阅NACK报文用于处理事件组的发布和订阅。
Option 阵列
SD 报文中的Entry通过引用option阵列中携带的其他附件信息,能够更灵活的配置
entry 的附加信息
IP 地址
传输层协议
端口号
类型
EndPoint Option
Multicast Option
Configuration Option
Load Balancing Option
6.3 SD 启动时序 -服务器和事件的处理阶段
关闭阶段(Down)
可用阶段(Available)
初始等待阶段(init wait phase)
重复阶段(Repetition phase)
主阶段
举报
发表评论
表情
点击这里取消回复。
相关文章
开源日报 | 快速部署黑苹果工具;宝可梦游戏源代码泄露;AI如何让世界变得更好;vivo自研操作系统内核
WordPress 从 WP Engine 手中夺取 ACF 插件控制权
Apache Doris 2.0.15 版本发布
Electron 与 Tauri:哪种跨平台框架更适合你?
🔥 Solon 3.0 新特性:SqlUtils
🔥 Solon 3.0 新特性:SqlUtils
中游技术
站长
探索-发展-风口-前沿
5698 篇文章
3 条评论
最近文章
开源日报 | 快速部署黑苹果工具;宝可梦游戏源代码泄露;AI如何让世界变得更好;vivo自研操作系统内核
WordPress 从 WP Engine 手中夺取 ACF 插件控制权
Apache Doris 2.0.15 版本发布
Electron 与 Tauri:哪种跨平台框架更适合你?
🔥 Solon 3.0 新特性:SqlUtils
🔥 Solon 3.0 新特性:SqlUtils
当前内容话题
上一页:
#yyds干货盘点#Git不要只会pull和push,试试下面几种命令
下一页:
数据结构与算法(三)——链表(1)
0
-- 作者微信号:
微