汽车软件通信中间件SOME/IP简述

文章目录

      • 1.SOME/IP 是中间件吗li>
      • 2. SOME/IP 能干嘛li>
      • 3. SOME/IP 与 CAN 的不同li>
        • 通信速度
        • 通信负荷
      • 4. SOME/IP 和车载以太 、IP有什么关系li>
      • 4. SOME/IP 和 Autosar、SOA 的关系li>
      • 5. SOME/IP 的形态li>
      • 6. SOME/IP 的消息格式li>
        • SOME/IP 消息结构
          • Message ID
          • Request ID
          • Message Type
          • Return Code
          • Payload
          • Endianess
      • 7. SOME/IP 支持的数据结构类型
        • 基础数据类型
        • 结构化数据类型
      • 8. SOME/IP 消息通信类型
        • R&R
        • F&F
        • Notification Event
        • Fields
      • 9. SOME/IP-SD
        • 消息体结构
        • 服务发现的流程
      • 10. vsomeip 及示例
      • 11. SOME/IP 会被 DDS 吊着打吗li>
      • 参考

1.SOME/IP 是中间件吗h3>

SOME/IP 不是广义上的中间件,严格的来讲它是一种通信协议,但中间件这个概念太模糊了,所以我们也一般称 SOME/IP 为通信中间件。

SOME/IP 全称是 Scalable service-Oriented MiddlewarE over IP。也就是基于 IP 协议的面向服务的可扩展性通信中间件协议。

所以,要弄清 SOME/IP 需要从它的名字出发,要搞清楚它的 3 个要素:

  • 面向服务 SOA
  • 基于 IP 协议之上的通信协议
  • 中间件

我们带着这 3 个疑问走下去。

2. SOME/IP 能干嘛h3>

既然是通信中间件,那么做的就是通信相关的事情。

SOME/IP 能干的事情有 3 类:

  • 服务发现 (Service Discovery)
  • 远程服务调用 (RPC,remote producer call)
  • 读写进程信息 (Getter & Setter)

3. SOME/IP 与 CAN 的不同h3>

CAN 是传统的汽车软件通信协议,CAN FD 是其扩展,它们与 SOME/IP 的主要区别如下:

协议 通信负荷 通信速度 通信方式
CAN 8 Byte 512 Kbps ~ 1 Mbps 基于信
CAN FD 64 Byte 2Mbps ~ 8 Mbps 基于信
SOME/IP ~1500 Byte 1000 Mbps 面向服务

CAN 协议是汽车软件开发最重要的通信协议,但随着汽车智能化程度越来越高,CAN 通信遇到的瓶颈越来越大,表现在 2 个维度:

通信速度

CAN 一般是 512kb/s,CAN FD 能到 1MB/s,而基于 SOME/IP 的以太 能到

通信负荷

CAN 是 8Byte,CAN FD 能到 64Byte,而 SOME/IP 能到 1500 Byte

4. SOME/IP 和车载以太 、IP有什么关系h3>

前面小节讲到 CAN 是基于信 在双绞线中传输信 ,而 SOME/IP 是面向服务在车载以太 中传输信 。
而 SOME/IP 中的 IP 是 Over IP ,也就是在 IP 协议层之上的意思。

我们能熟知的 TCP/IP、UDP 都是传统 络协议, 络协议是分层的,车载以太 络协议也是一样的。

AP Autosar 是基于 SOA 理念设计的软件框架,而 SOME/IP 作为其通信协议,可以实现 Service 的 Publishe/Subscribe 通信,所以在汽车领域一般讲 SOA 不能不提到 AP Autosar,而讲到 SOME/IP 时,SOA 也会常被提起。

5. SOME/IP 的形态h3>

具体到汽车软件开发,SOME/IP 有两种形态:

  • 集成到 Autosar 中的 Module
    • Message ID 代表 Sevice ID 或者 Method ID
    • Length 消息长度,从 Request ID 算起到
    • Request ID
    • Protocal Version 协议版本
    • Interface Version 接口版本
    • Message Type 消息类型
    • Return Code 返回编码
    • Payload 数据负载

    然后,这里面有许多细节。

    Message ID

    可以指代一个远程调用 RPC 的 Method 或者是一个服务的 Event。

    Method ID 和 Event ID 占据低位 15 Bit,中间 1 Bit用来区别两者,高位 16 Bit 代表 Service ID。

    Request ID

    结构化数据类型

    F&F

    客户端发送 Request,无需 Response 的操作称为 Fire & Forget。

    • Cyclic Update 周期性的发送相关 value 的变化
    • Update On Change 如果 value 发生变化,则向外推送
    • Epsilon Change 如果 value 的值大于相应的 epsilon值,那么对外推送消息

    Fields

    什么是 Field 呢tosar 说 Filed 就是一个 status,并且有一个合法值(valid value).

    消息体结构

    我们从 github 上下载源码,然后编译。 它有两个重要的 .so :

    • libvsomeip3.so 对应 SOME/IP
    • libvsomeip3-sd.so 对应 SOME/IP-SD

    vsomeip 源码中有一个 helloworld 的demo,我们可以编译后运行。

    但直接运行会 错。

    Client 先发送一个 World。
    Server 端回应一个 Hello World。

    这代表 vsomeip 基础通信已经被试验了,而更高级更精细的操作则需要开发者认真研究。

    11. SOME/IP 会被 DDS 吊着打吗h3>

    汽车软件通信中间件SOME/IP简述
    问:那根据上面的描述,SOME/IP 会很快被 DDS 取代吗r> 答:我认为不会。

    我依据的逻辑如下:

    1. SOME/IP 有先发优势,而 DDS 目前尚未被真正收录到 AP Autosar中;
    2. DDS 看起来功能更完善,但功能完善不代表工程化程度高,汽车讲车规,很多经验需要积累,一般车企不敢贸然行动;
    3. 技术方案有惯性,当前 SOME/IP 用在整车领域挺好的,没必要因 DDS 的介入一票否决它,况且 DDS 需要在汽车领域证明自己;
    4. DDS 需要证明自己是因为 SOME/IP 从设计初就是面向汽车软件开发,而 DDS 不是。DDS 是从航天、工业、机器人领域开始迁移,这里存在裁剪、适配的过程;
    5. 未来很长一段时间,汽车会存在各类 ECU,ECU 可能基于 AP,也可能基于 CP,这个时候 SOME/IP 比 DDS 应用代价要低;
    6. SOME/IP 和 DDS 共存也是没有关系的,如果做不到万无一失,那为何要直接替换它呢怎么算li>

    参考

    1. AUTOSAR_PRS_SOMEIPProtocol.pdf
    2. https://www.36kr.com/p/1725052829697
    3. https://blog.csdn.net/Aliven888/article/details/122557080

    文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树跨区域 络的通信学习 络层的作用23093 人正在系统学习中

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年4月22日
下一篇 2022年4月22日

相关推荐