Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >vsomeip - GENIVI的SOME/IP开源实现

vsomeip - GENIVI的SOME/IP开源实现

作者头像
曲奇泡芙
发布于 2020-02-25 04:54:30
发布于 2020-02-25 04:54:30
5.5K0
举报
文章被收录于专栏:曲奇泡芙曲奇泡芙

“Color is a power which directly influences the soul.”

车载以太网作为主干的整车网络拓扑架构中,以太网节点(如域控制器)之间进行数据通讯需要协商使用共同的应用层协议。在车载场景中的以太网应用中,根据不同的应用特点适用不同的应用层协议,如用于ECU诊断和刷写的DoIP(Diagnostics over Internet Protocol)协议,用于消息订阅发布的MQTT(Message Queuing Telemetry Transport)协议,以及用于控制消息通讯的面向服务的SOME/IP(Scalable Service-Oriented Middleware over IP)协议等。

面向服务的架构可以将使用AUTOSAR Classic的功能ECU以及使用AUTOSAR Adaptive或其他智能操作系统的域控制器桥接起来,通过SOME/IP协议进行控制消息通讯。

面向服务的SOME/IP协议

SOME/IP协议于2011年由当时在BMW集团的Lars Völker设计,并于2013年纳入AUTOSAR 4.1规范。如下图,SOME/IP在以太网协议栈中处于四层协议之上,属于应用层协议,底下的传输可以使用TCP或者UDP协议。基于UDP协议的SOME/IP实现限制了单条消息长度不能超过单个UDP包的大小,为解决这个问题2016年的AUTOSAR 4.3规范中添加了SOME/IP-TP协议定义了如何在UDP上分段传输更大的SOME/IP消息。

SOME/IP定义服务的接口包含方法(Methods),事件(Events),字段(Fields)和事件组(Eventgroups),可以支持请求/响应模式的远程服务调用,也可以支持订阅/发布模式的消息通知。SOME/IP的一个主要用例是控制消息的通讯,类似于传统CAN总线架构的控制信号传输,SOME/IP在以太网上支持低延时的周期性和事件性的消息传输。

SOME/IP的数据报文格式如下图,包头部分包含服务ID,方法ID,消息体长度,客户端ID,会话ID,协议版本,消息类型等数据。

SOME/IP-SD 服务发现

SOME/IP定义了其服务发现协议SOME/IP-SD,用于动态发现服务的提供者地址以及检查服务状态是否健康。SOME/IP-SD的消息通过UDP发送,每个设备通过在局域网中周期性的广播一条包含其提供的所有服务的OfferService消息来帮助其他设备完成服务发现(服务IP,端口等信息)。服务调用者也可以通过广播一条FindService消息来主动查询自己需要的服务。

同一个服务在车内可以有多个提供者的实例(如通过冗余实现服务的高可用),同一个服务的不同实例通过使用不同的端口来区分。服务地址动态发现相对于静态配置服务IP和端口提供了灵活性,但也相应的为初始化带来了一点延时。为了减少服务发现的延时,SOME/IP-SD定义了服务启动后的三个阶段:初始化等待阶段(Initial Wait Phase),重复阶段(Repetition Phase),正式阶段(Main Phase)。这三个阶段的起止时间以及广播间隔时间可配置,其中重复阶段通过指数递增的方式来从一个相对小的周期开始增长服务发现广播报文的间隔时间。

vsomeip - SOME/IP的开源实现

vsomeip 是GENIVI项目中的一个SOME/IP开源实现,基于Mozilla Public Liense v2.0协议开源,由BMW贡献。vsomeip提供了两个动态库:SOME/IP协议的实现库libvsomeip.so以及用于服务发现的库libvsomeip-sd.so。

如下图,vsomeip除了支持设备之间的SOME/IP通讯,也支持设备本地的进程间通讯,本地通讯通过unix socket完成。vsomeip的实现基于boost.asio的异步IO库。vsomeip应用通过一个Routing Manager与其他设备进行通讯,Routing Manager统一负责服务发现以及外部通讯socket的管理。一个设备上的多个vsomeip应用共用一个Routing Manager,默认第一个启动的vsomeip应用负责启动Routing Manager,也可以通过配置指定,其他应用通过proxy与Routing Manage进行通讯。

vsomeip应用可以通过json文件来进行配置,配置项包含自身IP,应用名字,负责启动Routing Manager的应用,应用日志,服务发现的广播地址,广播间隔等。

vsomeip的HelloWorld程序相对简单,感兴趣的朋友可以上github上围观。(https://github.com/GENIVI/vsomeip/tree/master/examples/hello_world)

End

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 曲奇泡芙 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
IP协议(网络)
主机: 配有IP地址, 但是不进行路由控制的设备; 路由器: 即配有IP地址, 又能进行路由控制; 节点: 主机和路由器的统称;
ljw695
2025/01/03
750
IP协议(网络)
汽车以太网协议之 SOME/IP(上)
2011年,宝马集团开发设计了一套中间件,该中间件能够实现以服务为导向的通信方式,宝马将该面向服务的通信方式叫做 SOME/IP。由于其知名度逐渐被 AUTOSAR 接纳,并在2014年集成进 AUTOSAR 4.X 中(后文会对 AUTOSAR 做更详细的介绍)。 SOME/IP 的官网是 https://some-ip.com/index.shtml ,该网站的版权归 Lars Völker 博士所有,Lars Völker 博士 2010年加入宝马,一直从事汽车以太网相关的工作,他是 SOME/IP 和 SOME/IP-SD 规范的发明者和维护者。
绿盟科技研究通讯
2022/11/14
5.6K0
汽车以太网协议之 SOME/IP(上)
汽车软件通信中间件SOME/IP简述
SOME/IP 不是广义上的中间件,严格的来讲它是一种通信协议,但中间件这个概念太模糊了,所以我们也一般称 SOME/IP 为通信中间件。
Frank909
2022/05/27
4.6K0
汽车软件通信中间件SOME/IP简述
自动驾驶技术栈——SOME/IP协议
传统的车载软件通信采用的是经典的总线协议(比如CAN、LIN、FlexRay),这些总线采用的是面向信号的数据传输(Signal-based),基于信号在双绞线中的传输来通信,但是这些协议的传输带宽和传输速率有限,且不容易实现基于无线网更新车载软件(OTA)的需求。因此,新一代的车载软件通信更多采用了SOA架构下的SOME/IP协议,该协议采用的是面向服务的数据传输(Service-Oriented),基于ECU的服务在车载以太网中被请求或订阅来通信。
Coder-ZZ
2023/02/23
2.2K0
自动驾驶技术栈——SOME/IP协议
[081]AI教你快速入门someip
修改examples/hello_world/helloworld-local.json中IP为本机的IP,其实不改也没事,如果要两个设备之间运行就得改了。
王小二
2023/05/23
1.3K0
[081]AI教你快速入门someip
车载以太网(下)
如上篇阐述的,车载以太网采用基于 TCP/IP 的网络分层模型,TCP/IP 模型没有对 OSI 的 5~7 层做严格区分,统称为应用层,如上。
Defry
2022/04/19
1.2K0
车载以太网(下)
赋能车载数据服务器 - S32G域控制器芯片
近几天的CES 2020上,NXP公司发布了新一代的S32G车载网络处理器。作为NXP S32系列最新的处理器,S32G将汽车行业整车EE架构往高性能,分域架构的现代设计落地进一步推进。
曲奇泡芙
2020/02/14
8500
赋能车载数据服务器 - S32G域控制器芯片
汽车电子架构 | 故事起源
近几十年来,汽车工业与电子技术的融合不断加深,催生了汽车产业链中的一个重要细分领域——汽车电子。
不惑
2024/04/12
3240
汽车电子架构 | 故事起源
一次web请求用到的arp、ip、udp、tcp、rip、http协议详解
本文面向有一定计算机网络基础的读者,通过实验剖析请求环节中的报文附加一些类比,帮助读者更清晰的了解常用的网络协议工作细节。 本文数据链路层以以太网为例介绍。 概念链接: MAC地址 IP地址 子网掩码 默认网关 。
mooner
2022/12/04
1.4K0
一次web请求用到的arp、ip、udp、tcp、rip、http协议详解
大白话-OSI七层协议,保证看一遍就会
网络和操作系统是本人的软肋,今天正好看到一篇相关OSI七层协议的文章,感觉还不错,在此记录笔记
小土豆Yuki
2022/12/01
3.1K0
大白话-OSI七层协议,保证看一遍就会
《图解TCP/IP》笔记
应用层:TELNET SSH HTTP SMTP POP SSL/TLS FTP MIME HTML SNMP MIB SIP RTP
用户5760343
2022/05/24
3680
《图解TCP/IP》笔记
tcp/ip系列--tcp/ip基础知识
  最近读完了《图解TCP/IP》,做一下总结加深记忆,后续会写几篇关于TCP/IP的文章。
Dlimeng
2023/06/29
2460
tcp/ip系列--tcp/ip基础知识
【计算机网络三】一篇文章详解TCP/IP四层协议簇
DNS ,即 Domain Name System ,域名系统。 DNS 是一整套从域名映射到 IP 的系统。
小皮侠
2024/10/29
2750
【计算机网络三】一篇文章详解TCP/IP四层协议簇
车载嵌入式软件从CAN总线到Ethernet的过渡与挑战
在车载嵌入式软件开发中,随着技术的不断发展,传统的CAN总线已逐渐暴露出带宽和扩展性方面的瓶颈,因此,Ethernet(以太网)逐渐成为车载网络的新趋势。
不脱发的程序猿
2025/02/25
970
车载嵌入式软件从CAN总线到Ethernet的过渡与挑战
TCP/IP Cheat Sheet
实质上,TCP/IP协议族的结构与ISO-OSI的七层协议经典架构稍有不同,通常来讲,我们将之分为四层或者五层。分别是:
李郑
2019/12/04
7220
linux网络编程之TCP/IP基础(一):TCP/IP协议栈与数据报封装
该文介绍了Linux C编程一站式学习和TCP/IP协议的基础知识。通过介绍C语言基础、数据结构、网络编程基础、TCP/IP协议栈和套接字编程等方面的内容,让读者掌握在Linux系统下进行C语言网络编程的能力。
s1mba
2018/01/03
2K0
linux网络编程之TCP/IP基础(一):TCP/IP协议栈与数据报封装
浅谈TCP/IP四层网络模型
就好比以前的台式电脑,想要上网,除了有网线,还需要有Modem,然后把网线连接到Modem,这样才可以上网。这种就是从物理上,通过网线这种物理层次的东西让电脑与电脑之间实现通信。美国的海底光缆也是物理层的一种表现。通过网线也好,海底光缆也好,它们之间传输的都是0和1的电路信号
Ryan_小鱼
2025/03/20
2320
Level3及以上自动驾驶的汽车架构和开发模式变化
楼主基于自动驾驶应用场景分别从E/E架构、通讯方式、软件架构和流程标准等方面谈下与当前模式相比可能加强的方面和涉及的变化,当我扯淡,欢迎拍砖。
Defry
2022/04/19
8090
Level3及以上自动驾驶的汽车架构和开发模式变化
车载以太网(上)
车载以太网的出现背景楼主就不多做赘述了,其实主要是因汽车E/E架构和功能的复杂度提升而带来的对车辆数据传输带宽提高和通讯方式改变(基于服务的通讯-SOA)的需求。
Defry
2022/04/19
2.2K0
车载以太网(上)
一文了解智能驾驶架构平台ROS2和自适应AUTOSAR之间的区别
公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享。未经作者允许请勿转载,欢迎各位同学积极分享和交流。
点云PCL博主
2023/08/21
2.3K0
一文了解智能驾驶架构平台ROS2和自适应AUTOSAR之间的区别
相关推荐
IP协议(网络)
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文