一网打尽车载以太网之SOME/IP(上)

智能汽车电子与软件 2022-10-22 10:41

关注公众号,点击公众号主页右上角“ ··· ”,设置星标,实时关注智能汽车电子与软件最新资讯


来源:ADAS与ECU之吾见

作者:奋斗的农民工

前言

首先,请问大家几个小小问题,你清楚:
  • 你知道什么是SOME/IP吗?
  • 你知道为什么会产生SOME/IP即相关背景吗?
  • 你知道SOME/IP与SOA又有着哪些千丝万缕的联系呢?
  • SOME/IP在实践中到底应该如何使用呢?
今天,我们就来一起探索并回答这些问题。为了便于大家理解,以下是本文的主题大纲:

正文

总体介绍

车载以太网协议栈总共可划分为五层,分别为物理层,数据链路层,网络层,传输层,应用层,其中今天所要介绍的内容SOME/IP就是一种应用层协议
SOME/IP协议内容按照AUTOSAR中的描述,我们可以更进一步的拆分为三类子协议:应用层的SOME/IP标准协议,SOME/IP-SD协议以及TP层的SOME/IP-TP协议,这三部分内容相辅相成,完整详细的阐述了SOME/IP协议的全部内容,是研究SOME/IP协议的必经之路。
由于SOME/IP协议内容较多且关联复杂,为了让大家对SOME/IP有一个循序渐进的了解过程,限于篇幅本文将主要讲解应用层的SOME/IP标准协议,其他协议内容会在下篇继续给大家分享,敬请大家多多关注!
产生背景与动机
2011年宝马公司开发设计了一套中间件,该中间件能够实现以服务为导向的通信方式,该中间件区别于传统以信号为导向的通信方式,不仅能够大大减少网络负载以提高通信双方的效率,同时引入以太网通信也能够大大满足未来车辆不断增长的通信需求。
面向信号的数据传输不管网络需不需要始终会不断循环发送,而面向服务的通信方式则不同,只有当网络中至少存在一个接收方需要这些数据时,发送方才会发送数据,这是一种面向服务通信方式的显著优点。
宝马将该面向服务的通信方式叫做SOME/IP(全称为:Scalable service-Oriented MiddlewarE over IP)。正如其名,可见该协议跟以太网密切相关。
没错!SOME/IP就是运行在车载以太网协议栈基础之上的中间件,或者也可以称为应用层软件。
SOME/IP正由于其知名度逐渐被AUTOSAR接纳并计划纳入其正式标准,并且在2014年集成进AUTOSAR 4.X中,几个关键发展节点如下:
  • AUTOSAR 4.0 - 完成宝马SOME/IP消息的初步集成;
  • AUTOSAR 4.1 - 支持SOME/IP-SD及其发布/订阅功能;
  • AUTOSAR 4.2 - 添加transformer用于序列化以及其他相关优化;
  • AUTOSAR 4.3 - 修复一些transformer bug同时添加针对大量UDP数据包的SOME/IP-TP协议以及其他SOME/IP-SD的优化工作;
  • 持续优化中。。。。。。

什么是SOME/IP
正如上节所提到SOME/IP的全称,接下来我们就来通过其全称一起来了解下SOME/IP到底是个什么东西:
  • Scalable
    该协议设计的初衷之一就是为了实现不同硬件平台、不同操作系统或嵌入式固件以及不同应用软件的异构设备之间的可扩展性和互操作性。
  • service-Oriented
    表明它是一种面向服务的基本协议。因此仅当客户端请求或服务器通知特定订阅者时,才在客户端-服务器配置中交换数据 ,这就确保了永远不会浪费带宽,并且仅在需要的时间和地点进行数据通信/交换。
  • MiddlewarE
    它也是一种中间件。即其位于应用层,有自己的通用协议层来处理更具体的操作及应用;
  • over IP
    它也是一个基于以太网的协议。它使用类似的硬件接口,确保高达 100Mbps 的带宽。同时数据通过中间件(即应用层)通过网络电缆使用 TCP/IP 或 UDP 协议进行通信。
    当客户端需要来自服务器的数据时,它可由客户端使用 TCP 协议进行请求。如果服务器必须将数据传送给所有活动的订阅者,则可通过 UDP 协议传输。UDP 协议上的数据通信可以是单播、多播或广播。
如下图1所示,就十分清晰地展示了SOME/IP在车载以太网协议栈中的位置以及与其他模块的关系:
图1 SOME/IP 与车载以太网协议栈关系
那么在AUTOSAR协议栈中,SOME/IP协议又处于一个什么样的位置呢?如下图所示:
如上图可知,SOME/IP协议涉及到与RTE,COM,PDUR以及SOAd这些AUTOSAR标准模块的交互,而用于服务发现的SOME/IP-SD则涉及到BswM,SD以及SoAd模块的交互。
SOME/IP协议与各个模块的交互关系会在后续文章讲到,提及于此让大家对SOME/IP协议与AUTOSAR协议栈的关联有个整体概念,此文中不做过多展开。
SOME/IP 最初是作为另一种 RPC 机制开发的,以确保与 AUTOSAR 设备的兼容性并提供汽车用例所需的最大功能,同时它也是专为ECU间客户端-服务器序列化而设计的网络层协议。
目前,该协议可以在多种不同的操作系统上实现,包括 AUTOSAR、OSEK 和 GENIVI。它也可以在不运行操作系统的嵌入式固件上实现。
摄像头、主机、远程信息处理设备、AUTOSAR 设备,甚至信息娱乐系统等大型设备,都可以使用 SOME/IP 协议有效地交换 ECU 间消息。自 Wireshark 3.2 SOME/IP 发布以来,SOME/IP 支持就已公开,可以在 Wireshark 上解析SOME/IP数据。
综上所述,我们便可以总结出SOME/IP作为一种面向服务的通信协议,一种基于车载以太网协议栈基础上的应用层协议的基本特点有哪些,如下表1所示展现了SOME/IP协议的五大基本特点:

表1 SOME/IP协议五大基本特点

SOME/IP与SOA的关系

SOA
SOA简而言之就是一种面向服务的架构(Service-Oriented Architecture), 当然也是一种软件设计的重要方式,IT研究与顾问咨询公司 Gartner 在 1996 年提出的,其本身并不是新鲜概念,而且已经在IT互联网领域风靡了20余年。
按照W3C对它的定义 : “SOA是一种应用程序架构,在这种架构中,所有功能都定义为独立的服务,这些服务带有定义明确的可调用接口,能够以定义好的顺序调用这些服务来形成业务流程。
服务: 服务是一种比构件粒度更大的信息集合,实际是包含实现了多个关联业务需求的逻辑组合,并且允许每个服务使用特定的平台,架构或技术方案;
可调用接口: 面向服务的接口不同于构件的接口,他的实现与特定语言无关,与特定的平台也无关,可十分方便的实现不同异构平台的交互;
联系与区别:

  • 首先需要明确的是SOME/IP不是SOA,SOA也不是SOME/IP;
  • 由于SOME/IP本身也是一种面向服务的协议,所以一般认为SOME/IP只不过是一种实现SOA可行的协议选择;
  • 一般而言,基于消息的通信与RPC(Remote Procedure Call 远程过程调用)通信都可以实现SOA,而SOME/IP就是一种基于RPC框架的协议;
  • 可以通过SOME/IP用来实现SOA,但SOA的实现却不一定非得用SOME/IP;

SOME/IP协议解析

接下来就让小T带领大家通过解析SOME/IP一起来揭开SOME/IP的神秘面纱!,以便为后续车载以太网的学习打好基础。
相关标识符与版本说明
如下图2所示为SOME/IP协议的Header结构体:
图2 SOME/IP协议Header
如上图中标记的Message ID,Request ID, Protocal Version 以及Interface Version的详细解释如下表2所示:
表2 相关标识符与版本说明

Length
Length正如上图2所示,其涵盖的范围是Request ID开始至SOME/IP报文结束。
Message Type
用来识别不同的消息类型,目前存在的类型如下图3所示,其中TP表示分包的报文,按照AUTOSAR标准(R21-11)定义如下:
图3 Message Type表

Return Code
Return Code用来指示Message是否被成功处理了,或针对请求中的错误内容进行反馈,如下图4为AUTOSAR(R21-11)中定义的Return Code类型:
图4 Return Code定义表

SOME/IP通信机制

认识完了SOME/IP协议标准的详细定义内容之后,接下来就需要来探讨车载ECU需要按照何种规则来实现数据的传输,因此熟悉这部分内容将对车载以太网SOME/IP的开发与测试至关重要。
服务发现(Service Discovery)
服务发现的通信机制是通过SOME/IP-SD协议实现的,主要是为了实现在车载以太网中告知客户端当前服务实例的可用性及访问方式,可通过Find Service 和Offer Service来实现。
在通过SOME/IP协议传输数据之前,我们需要知道当前整个车载网络到底存在哪些服务,服务的可用性如何,客户端如果订阅服务端所提供的服务。
由于SOME/IP-SD协议也是一块十分重要的内容,在此就不过多展开,仅简要介绍其基本功能与作用机理,后续会单独介绍SOME/IP-SD协议的具体内容,敬请关注!
如下图5所示即为SOME/IP-SD的基本功能,展现了Client与Server之间的交互关系。

图5 SOME/IP-SD Client与Server交互关系图
由上图可知,SOME/IP 服务发现流程可以分为以下三大基本步骤:
  • Client通过发送Find Service的报文去寻找车载网络中可用的服务实例;
  • Server接收到Client的Find Server后通过UDP发送Offer Service响应;
  • Client通过发送Subcribe Event Group去订阅相关Event;
  • Server检查是否满足Client是否满足订阅条件,如果满足回复ACK,如果不满足,则回复NACK;
  • Client成功订阅相关事件后,Server会按照事件本身属性来实现对已订阅该事件的Client的发布;
远程进程调用(RPC)
远程进程调用主要可分为四种通信模式:
  • Request/Response通信模式,可归纳为Method中的一种;其基本通信模型如下图6所示:
    Request-Response模型作为一种最为常见的通信方式,其主要任务就是客户端发送请求信息,服务端接收到请求,进行相关处理之后进行相应的响应。

图6 Request-Response通信模型
  • Fire&Forget通信模式,可归纳为Method中的一种;
    该通信模型的主要任务就是客户端向服务端发送请求,服务端无需进行任何响应,有点类似诊断服务中的抑制正响应。

图7 Fire&Forget通信模型
  • Notification Event通信模式;
    该通信模式主要描述了发布 /订阅消息内容,主要任务就是为了实现客户端向服务端订阅相关的事件组,当服务端的事件组发生或者值发生变化时,就需要向已订阅该事件组的客户端发布更新的内容。

图8 Notification event通信模型

  • 远程进程控制(Field)
    访问进程通信机制主要是为了实现针对对应用程序的数据获取与更改,主要任务就是实现客户端通过Getter获取Server的值,通过Setter设置Server的值。
    Field就可理解为一个Service的基本属性,可包含Getter,Setter,Notifier三种方式。其中Getter就是读取Field中某个值的方法,Setter就是一种改变Field值的方法,而Notifier则是一种当Field中的值发生变化的触发事件。

    图9 Field的通信模型
由上图可知,在Getter与Setter的方式中我们使用的Request/Response机制。在Getter的请求报文中是一个空的Payload,响应报文中的Payload才是需要获取的值;使用Setter请求时,请求消息中的Payload则是要设置的值,如果设置成功,那么响应报文中Payload就是设定成功的值。
同时我们也可得出服务实体在SOME/IP协议中是一个十分重要的概念。一个服务实体可以是Field,Events以及Method的任意组合。

SOME/IP错误处理机制

在任何通信过程中总是会存在各种各样的 错误,SOME/IP作为一种面向服务的应用协议也不例外,因此AUTOSAR为了更为高效的定位到通讯过程中的问题所在,因此制定了一套检查SOME/IP协议格式内容的错误处理机制。
比如版本信息检查,服务ID等,其他故障信息可以在Payload中进行详细定义。目前SOME/IP支持以下两种错误处理机制,这两种uowu处理机制可以根据配置进行选择。
  • 消息类型0x80,Response信息,即可以通过Response Message中的Return Code来定位到问题所在;
  • 息类型0x81,显式的错误信息;
如下图10为SOME/IP处理一般性错误的基本流程:

图10 SOME/IP错误处理流程

如果大家想进一步学习SOME/IP协议栈内容具体如何实现,可以参考由BMW公司主导在GitHub上的开源代码,在GitHub中搜索"vsomeip"关键字便可找到对应的开源代码学习。

值得注意的是vsomeip是一种基于Linux平台采用C++语言进行开发的SOME/IP协议栈。

关注公众号,点击公众号主页右上角“ ··· ”,设置星标,实时关注智能汽车电子与软件最新资讯


智能汽车电子与软件 专注于汽车电子领域的信息交融平台,涵盖汽车电子行业资讯、市场动态、技术干货、知识见解、行业趋势等资讯深度覆盖。
评论 (0)
  • 二位半 5线数码管的驱动方法这个2位半的7段数码管只用5个管脚驱动。如果用常规的7段+共阳/阴则需要用10个管脚。如果把每个段看成独立的灯。5个管脚来点亮,任选其中一个作为COM端时,另外4条线可以单独各控制一个灯。所以实际上最多能驱动5*4 = 20个段。但是这里会有一个小问题。如果想点亮B1,可以让第3条线(P3)置高,P4 置低,其它阳极连P3的灯对应阴极P2 P1都应置高,此时会发现C1也会点亮。实际操作时,可以把COM端线P3设置为PP输出,其它线为OD输出。就可以单独控制了。实际的驱
    southcreek 2025-05-07 15:06 242浏览
  • 2024年初,OpenAI公布的Sora AI视频生成模型,震撼了国产大模型行业。随后国产厂商集体发力视频大模型,快手发布视频生成大模型可灵,字节跳动发布豆包视频生成模型,正式打响了国内AI视频生成领域第一枪。众多企业匆忙入局,只为在这片新兴市场中抢占先机,却往往忽视了技术成熟度与应用规范的打磨。以社交平台上泛滥的 AI 伪造视频为例,全红婵家人被恶意仿冒博流量卖货,明星们也纷纷中招,刘晓庆、张馨予等均曾反馈有人在视频号上通过AI生成视频假冒她。这些伪造视频不仅严重侵犯他人权
    用户1742991715177 2025-05-05 23:08 89浏览
  • 后摄像头是长这个样子,如下图。5孔(D-,D+,5V,12V,GND),说的是连接线的个数,如下图。4LED,+12V驱动4颗LED灯珠,给摄像头补光用的,如下图。打开后盖,发现里面有透明白胶(防水)和白色硬胶(固定),用合适的工具,清理其中的胶状物。BOT层,AN3860,Panasonic Semiconductor (松下电器)制造的,Cylinder Motor Driver IC for Video Camera,如下图。TOP层,感光芯片和广角聚焦镜头组合,如下图。感光芯片,看着是玻
    liweicheng 2025-05-07 23:55 110浏览
  • Matter协议是一个由Amazon Alexa、Apple HomeKit、Google Home和Samsung SmartThings等全球科技巨头与CSA联盟共同制定的开放性标准,它就像一份“共生契约”,能让原本相互独立的家居生态在应用层上握手共存,同时它并非另起炉灶,而是以IP(互联网协议)为基础框架,将不同通信协议下的家居设备统一到同一套“语义规则”之下。作为应用层上的互通标准,Matter协议正在重新定义智能家居行业的运行逻辑,它不仅能向下屏蔽家居设备制造商的生态和系统,让设备、平
    华普微HOPERF 2025-05-08 11:40 102浏览
  • ‌一、高斯计的正确选择‌1、‌明确测量需求‌‌磁场类型‌:区分直流或交流磁场,选择对应仪器(如交流高斯计需支持交变磁场测量)。‌量程范围‌:根据被测磁场强度选择覆盖范围,例如地球磁场(0.3–0.5 G)或工业磁体(数百至数千高斯)。‌精度与分辨率‌:高精度场景(如科研)需选择误差低于1%的仪器,分辨率需匹配微小磁场变化检测需求。2、‌仪器类型选择‌‌手持式‌:便携性强,适合现场快速检测;‌台式‌:精度更高,适用于实验室或工业环境。‌探头类型‌:‌横向/轴向探头‌:根据磁场方向选择,轴向探头适合
    锦正茂科技 2025-05-06 11:36 398浏览
  • 多功能电锅长什么样子,主视图如下图所示。侧视图如下图所示。型号JZ-18A,额定功率600W,额定电压220V,产自潮州市潮安区彩塘镇精致电子配件厂,铭牌如下图所示。有两颗螺丝固定底盖,找到合适的工具,拆开底盖如下图所示。可见和大部分市场的加热锅一样的工作原理,手绘原理图,根据原理图进一步理解和分析。F1为保险,250V/10A,185℃,CPGXLD 250V10A TF185℃ RY 是一款温度保险丝,额定电压是250V,额定电流是10A,动作温度是185℃。CPGXLD是温度保险丝电器元件
    liweicheng 2025-05-05 18:36 278浏览
  • 这款无线入耳式蓝牙耳机是长这个样子的,如下图。侧面特写,如下图。充电接口来个特写,用的是卡座卡在PCB板子上的,上下夹紧PCB的正负极,如下图。撬开耳机喇叭盖子,如下图。精致的喇叭(HY),如下图。喇叭是由电学产生声学的,具体结构如下图。电池包(AFS 451012  21 12),用黄色耐高温胶带进行包裹(安规需求),加强隔离绝缘的,如下图。451012是电池包的型号,聚合物锂电池+3.7V 35mAh,详细如下图。电路板是怎么拿出来的呢,剪断喇叭和电池包的连接线,底部抽出PCB板子
    liweicheng 2025-05-06 22:58 365浏览
  • UNISOC Miracle Gaming奇迹手游引擎亮点:• 高帧稳帧:支持《王者荣耀》等主流手游90帧高画质模式,连续丢帧率最高降低85%;• 丝滑操控:游戏冷启动速度提升50%,《和平精英》开镜开枪操作延迟降低80%;• 极速网络:专属游戏网络引擎,使《王者荣耀》平均延迟降低80%;• 智感语音:与腾讯GVoice联合,弱网环境仍能保持清晰通话;• 超高画质:游戏画质增强、超级HDR画质、游戏超分技术,优化游戏视效。全球手游市场规模日益壮大,游戏玩家对极致体验的追求愈发苛刻。紫光展锐全新U
    紫光展锐 2025-05-07 17:07 199浏览
  • 文/郭楚妤编辑/cc孙聪颖‍相较于一众措辞谨慎、毫无掌舵者个人风格的上市公司财报,利亚德的财报显得尤为另类。利亚德光电集团成立于1995年,是一家以LED显示、液晶显示产品设计、生产、销售及服务为主业的高新技术企业。自2016年年报起,无论业绩优劣,董事长李军每年都会在财报末尾附上一首七言打油诗,抒发其对公司当年业绩的感悟。从“三年翻番顺大势”“智能显示我第一”“披荆斩棘幸从容”等词句中,不难窥见李军的雄心壮志。2012年,利亚德(300296.SZ)在深交所创业板上市。成立以来,该公司在细分领
    华尔街科技眼 2025-05-07 19:25 180浏览
  • 随着智能驾驶时代到来,汽车正转变为移动计算平台。车载AI技术对存储器提出新挑战:既要高性能,又需低功耗和车规级可靠性。贞光科技代理的紫光国芯车规级LPDDR4存储器,以其卓越性能成为国产芯片产业链中的关键一环,为智能汽车提供坚实的"记忆力"支持。作为官方授权代理商,贞光科技通过专业技术团队和完善供应链,让这款国产存储器更好地服务国内汽车厂商。本文将探讨车载AI算力需求现状及贞光科技如何通过紫光国芯LPDDR4产品满足市场需求。 车载AI算力需求激增的背景与挑战智能驾驶推动算力需求爆发式
    贞光科技 2025-05-07 16:54 150浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦