编者按:本文来自微信公众号“曲奇泡芙”(ID:YummyCookiePuff),作者曲奇泡芙,36氪经授权发布。
“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协议于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定义了其服务发现协议SOME/IP-SD,用于动态发现服务的提供者地址以及检查服务状态是否健康。SOME/IP-SD的消息通过UDP发送,每个设备通过在局域网中周期性的广播一条包含其提供的所有服务的OfferService消息来帮助其他设备完成服务发现(服务IP,端口等信息)。服务调用者也可以通过广播一条FindService消息来主动查询自己需要的服务。
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 - GENIVI的SOME/IP开源实现
开源,一种全新的创业模式?
开源是自由的,永远
钢铁侠马斯克的野望:实现载人航天,开源特斯拉自动驾驶
开源:从“复兴”走向“商业化”
罗永浩的开源情怀
开源社区全球化的惊险一跃
怎样判定一款优秀的车载系统?
facebook的“硬件开源”启示录
中国开源社区的短板究竟在哪里?
网址: vsomeip - GENIVI的SOME/IP开源实现 http://m.xishuta.com/newsview16977.html