SOME/IP--协议英文原文讲解1

前言

SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块:

1. SOME/IP协议讲解

2. SOME/IP-SD协议讲解

3. python/C++举例调试讲解

一、SOME/IP由来及协议下载

1. 历史

SOME/IP(Scalable service-Oriented MiddlewarE over IP)是由宝马的Lars Völker博士在2011年设计并提出的。

设计SOME/IP协议的主要动机是为了满足汽车电子系统对高效、可靠通信的需求。随着汽车电子系统的日益复杂,传统的通信协议如CAN、LIN等已经难以满足高数据吞吐量和复杂通信模式的要求。SOME/IP协议作为一种面向服务的通信协议,支持远程过程调用(RPC)、事件通知和底层序列化/线格式,能够很好地适应汽车电子系统的发展趋势。

具体来说,SOME/IP协议的设计目的包括:

  1. 提供一种高效、可靠的通信方式,使得车辆内部的各种系统和组件可以相互交互,实现更高级别的功能和服务。
  2. 支持服务导向架构(SOA),允许车辆的各个电子控制单元(ECUs)以服务提供者或服务消费者的身份互动,从而实现更加灵活和可扩展的通信模式。
  3. 通过远程过程调用(RPC)机制,实现不同ECU之间的函数或过程调用,支持同步和异步调用方式,提高了通信效率和系统性能。
  4. 提供服务发现和注册机制,使得ECUs能够自动发现其他ECUs提供的服务,并注册自己提供的服务,从而实现了动态的服务管理和交互。

综上所述,SOME/IP协议的设计是为了满足汽车电子系统对高效、可靠、灵活和可扩展通信的需求,以适应汽车电子系统日益复杂的发展趋势。

2. 下载--在autosar官网 搜索下载

Search AUTOSAR

我在附件中有规范的pdf文件,不同的是这份文件 有我对使用场景的真实理解,而不是直译。

SOME/IP协议之所以能在AUTOSAR的官网下载,是因为SOME/IP是AUTOSAR(AUTomotive Open System ARchitecture)体系中的一个重要组成部分。AUTOSAR是一个开放的、标准化的汽车电子软件架构,旨在创建一个标准化的软件架构,以便更好地开发汽车电子系统。SOME/IP作为AUTOSAR中支持车载以太网通信的重要协议,自然也被纳入到了AUTOSAR的官方文档中,供开发者下载和使用。

除了AUTOSAR的官网,确实也可能在其他地方找到SOME/IP协议的官方下载。这主要得益于SOME/IP协议的开放性和标准化。例如,一些专业的软件开发网站、汽车电子领域的论坛或社区,以及相关的开源项目网站等,都可能会提供SOME/IP协议的下载链接或相关资料。然而,为了确保下载到的是最新、最准确的SOME/IP协议文档,建议开发者还是优先考虑从AUTOSAR的官网或其他官方渠道进行下载。

此外,需要注意的是,由于SOME/IP协议涉及到汽车电子系统的核心技术和知识产权,因此在使用SOME/IP协议时,开发者需要遵守相关的法律法规和许可协议,确保合法合规地进行开发和使用。

综上所述,SOME/IP协议可以在AUTOSAR的官网下载,同时也可能在其他官方或非官方渠道找到相关资料。但为了确保下载到的是最新、最准确的文档,并遵守相关的法律法规和许可协议,建议开发者优先考虑从AUTOSAR的官网或其他官方渠道进行下载。

二、协议讲解

1. 协议版本

2. 声明

Disclaimer

This work (specification and/or software implementation) and the material contained in it, as released by AUTOSAR, is for the purpose of information only. AUTOSAR and the companies that have contributed to it shall not be liable for any use of the work. The material contained in this work is protected by copyright and other types of intellectual property rights. The commercial exploitation of the material contained in this work requires a license to such intellectual property rights. This work may be utilized or reproduced without any modification, in any form or by any means, for informational purposes only. For any other purpose, no part of the work may be utilized or reproduced, in any form or by any means, without permission in writing from the publisher. The work has been developed for automotive applications only. It has neither been developed, nor tested for non-automotive applications. The word AUTOSAR and the AUTOSAR logo are registered trademarks.

  1. 目的与责任

    • 该材料仅供信息参考。
    • AUTOSAR 及其贡献者对材料的任何使用不承担责任。
  2. 知识产权

    • 该内容受版权及其他知识产权保护。
    • 商业用途需要获得相关知识产权许可。
  3. 使用和复制

    • 出于信息目的,可以不做修改地使用或复制此材料。
    • 除信息用途外,任何形式的使用或复制都需要出版方的书面许可。
  4. 应用范围

    • 该材料仅为汽车领域开发。
    • 未针对非汽车领域进行开发或测试。
  5. 商标

    • “AUTOSAR”及其标志是注册商标。

1 Introduction and overview

This protocol specification specifies the format, message sequences and semantics of the AUTOSAR Protocol "Scalable service-Oriented MiddlewarE over IP (SOME/IP)". SOME/IP is an automotive/embedded communication protocol which supports remote procedure calls, event notifications and the underlying serialization/wire format. The only valid abbreviation is SOME/IP. Other abbreviations (e.g. Some/IP) are wrong and shall not be used.

  1. 协议说明

    • 本协议规范定义了 AUTOSAR 协议 "基于 IP 的可扩展面向服务的中间件"(Scalable service-Oriented MiddlewarE over IP,简称 SOME/IP) 的格式、消息序列和语义。
  2. 协议特点

    • SOME/IP 是一种用于汽车/嵌入式系统的通信协议,支持以下功能:
      • 远程过程调用(Remote Procedure Calls)。
      • 事件通知(Event Notifications)。
      • 序列化和底层传输格式(Serialization/Wire Format)。
  3. 缩写规范

    • 唯一有效的缩写是 SOME/IP
    • 其他缩写形式(例如 Some/IP)是不正确的,不允许使用。

1.1 Protocol purpose and objectives

SOME/IP was created as existing solutions were not compatible to automotive use cases as well as incompatible to the AUTOSAR Classic Platform architecture. The major design goals were as follows: • Fulfills the hard requirements regarding resource consumption of embedded ECUs • Is compatible through as many use-cases and communication partners as possible • Compatible with AUTOSAR at least on the wire-format level; i.e., SOME/IP was introduced with minimal architecture changes in the AUTOSAR Classic Platform. • Provides the features required by automotive use-cases • Is scalable from tiny to large platforms

SOME/IP 的创建背景

SOME/IP 协议的产生是为了弥补现有解决方案在以下两个方面的不足:

  1. 不适用于汽车行业的实际使用场景
  2. 与 AUTOSAR Classic Platform 架构不兼容

设计目标

SOME/IP 的主要设计目标包括:

  1. 满足嵌入式 ECU 对资源消耗的严格要求
  2. 尽可能兼容更多的使用场景和通信伙伴
  3. 在传输格式(Wire-Format)层面与 AUTOSAR 保持兼容
    • 在引入 SOME/IP 时,对 AUTOSAR Classic Platform 的架构改动尽可能小。
  4. 提供满足汽车行业实际使用需求的功能
  5. 具备从小型平台到大型平台的可扩展性

1.2 Applicability of the protocol

SOME/IP shall be implemented on different operating system (i.e., AUTOSAR, GENIVI/COVESA, and OSEK) and even embedded devices without operating system. SOME/IP shall be used for inter-ECU Client/Server Serialization. An implementation of SOME/IP allows AUTOSAR to parse the RPC PDUs and transport the parameters to the application.

协议适用范围

  1. 操作系统支持

    • SOME/IP 协议应能够在不同的操作系统上实现,例如:
      • AUTOSAR
      • GENIVI/COVESA
      • OSEK
    • 甚至可以在没有操作系统的嵌入式设备上实现。
  2. 使用场景

    • SOME/IP 应用于 ECU 之间的客户端/服务器序列化通信。序列化是一种数据的组织方式,比如C语言的结构体的成员内存排布就是一种序列化。通信双方按照同一种自定义的序列化方式就可以 编码和解码(序列化和反序列化)通信。
  3. 功能支持

    • 使用 SOME/IP 的实现,AUTOSAR 可以解析 RPC(远程过程调用)PDU,并将通信参数传输到应用层。PDU:protocol data units 协议数据单元-即 通信协议中的header+payload 。RPC:Remote Procedure Call 远程处理调用--即一端通过网络数据包的协议 远程 调用另一端的方法  并取得结果。

1.2.1 Constraints and assumptions

The "Support for serialization of extensible data structs" has been introduced - which SOME/IP serializers based on AUTOSAR Foundation Standard 1.0.0 (AUTOSAR Classic Standard 4.3.0) as well as most non-AUTOSAR implementations cannot process.To indicate this interoperability issue [PRS_SOMEIP_00220] requires to increase the major interface version of the respective serialized data.

  1. 扩展数据结构的序列化支持

    • SOME/IP 引入了对 扩展数据结构序列化(Serialization of extensible data structs) 的支持。
    • 但基于以下标准的序列化工具无法处理这种扩展:
      • AUTOSAR Foundation Standard 1.0.0(AUTOSAR Classic Standard 4.3.0)。
      • 大多数非 AUTOSAR 实现
  2. 互操作性问题

    • 为了解决此互操作性问题,[PRS_SOMEIP_00220] 要求:
      • 对相关序列化数据的 接口主版本号(major interface version) 进行升级。

1.3 Dependencies

There are no dependencides to AUTOSAR SWS modules.

不对AUTOSAR协议的其它软件模块有依赖

SOME/IP是一套独立的通信协议,不用和其它协议组合使用。双方同时运行SOME/IP协议,就能通信。

1.4 Document Structure

The SOME/IP PRS will describe the following two aspects of SOME/IP.

Specification of SOME/IP on wire-format (Serialization)

• Structure of Header Format

• How the different data types are serialized as per SOME/IP

Specification of Protocol for Event and RPC-based communication

• Transport Protocol

• Rules that govern the RPC for SOME/IP

In addition to this document, the PRS SOME/IP-SD [1] describes the Service Discovery and other functionalities of SOME/IP.

文档内容概述

SOME/IP PRS 将描述以下两个方面的内容:

  1. SOME/IP 的传输格式规范(序列化)

    • 头部格式的结构
    • SOME/IP 中不同数据类型的序列化方式
  2. 基于事件和远程过程调用(RPC)的通信协议规范

    • 传输协议
    • SOME/IP 中与 RPC 相关的规则

此外,除了本文件外,PRS SOME/IP-SD [1] 还描述了 SOME/IP 的 服务发现(Service Discovery) 和其他功能。--- 这个文档后面文章也有讲解,属于第二大块。

文章中的缩写和关键词解释

4 Protocol specification
SOME/IP provides service oriented communication over a network. It is based on
service definitions that list the functionality that the service provides. A service can
consist of combinations of zero or multiple events, methods and fields.
Events provide data that are sent cyclically or on change from the provider to the subscriber.
Methods provide the possibility to the subscriber to issue remote procedure calls which
are executed on provider side.
Fields are combinations of one or more of the following three
• a notifier which sends data from the provider to the subscribers on change, on
epsilon change, or cyclically based on configuration.
• a getter which can be called by the subscriber to explicitly query(明确的查询,
这个明确这里无法理解,体现到具体就是指定field ID) the provider for
the value
• a setter which can be called by the subscriber when it wants to change the value
on provider side
The major difference between the notifier of a field and an event is that events are
only sent on change, the notifier of a field additionally sends the data directly after
subscription(field 的notify 订阅后会立马给client发送事件,event 只在需要时才发送)

SOME/IP 协议概述

SOME/IP 提供基于服务的网络通信。它基于 服务定义,列出了服务提供的功能。一个服务可以由零个或多个事件、方法和字段的组合组成。

  1. 事件(Events)

    • 事件提供的数据会周期性地或在变化时或是门限式变化时从提供者发送给订阅者。
  2. 方法(Methods)

    • 方法允许订阅者发起远程过程调用(RPC),这些调用会在提供者端执行。
  3. 字段(Fields)
    字段由以下三种类型中的一个或多个组合而成:

    • 通知器(Notifier):在数据发生变化、微小变化(epsilon change)或根据配置周期性变化时,通知器将数据从提供者发送到订阅者。
    • 获取器(Getter):获取器可以由订阅者调用,用于显式查询提供者的值。
    • 设置器(Setter):当订阅者希望更改提供者端的值时,可以调用设置器。

主要区别

  • 通知器与事件的主要区别
    • 事件仅在需要时(周期性地或在变化时或是门限式变化时)发送。
    • 字段的通知器除了在变化时发送数据,还会在订阅后立即发送数据。

0voice · GitHub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/960006.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

移动光猫怎么自己改桥接模式?

环境: 型号H3-8s 问题描述: 家里宽带用的是H3-8s 光猫,想改桥接模式。 解决方案: 1.默认管理员账号和密码: 账号:CMCCAdmin 密码:aDm8H%MdAWEB页面我试了登陆不了,显示错误 …

2D 超声心动图视频到 3D 心脏形状重建的临床应用| 文献速递-医学影像人工智能进展

Title 题目 2D echocardiography video to 3D heart shape reconstruction for clinicalapplication 2D 超声心动图视频到 3D 心脏形状重建的临床应用 01 文献速递介绍 超声心动图是心血管医学中一种至关重要且广泛应用的影像学技术,利用超声波技术捕捉心脏及其…

web端ActiveMq测试工具

如何用vue3创建简单的web端ActiveMq测试工具? 1、复用vue3模板框架 创建main.js,引入APP文件,createApp创建文件,并加载element插件,然后挂载dom节点 2、配置vue.config.js脚本配置 mport { defineConfig } from "vite&qu…

STM32 GPIO配置 点亮LED灯

本次是基于STM32F407ZET6做一个GPIO配置,实现点灯实验。 新建文件 LED.c、LED.h文件,将其封装到Driver文件中。 双击Driver文件将LED.c添加进来 编写头文件,这里注意需要将Driver头文件声明一下。 在LED.c、main.c里面引入头文件LED.h LED初…

DroneXtract:一款针对无人机的网络安全数字取证工具

关于DroneXtract DroneXtract是一款使用 Golang 开发的适用于DJI无人机的综合数字取证套件,该工具可用于分析无人机传感器值和遥测数据、可视化无人机飞行地图、审计威胁活动以及提取多种文件格式中的相关数据。 功能介绍 DroneXtract 具有四个用于无人机取证和审…

用Python和PyQt5打造一个股票涨幅统计工具

在当今的金融市场中,股票数据的实时获取和分析是投资者和金融从业者的核心需求之一。无论是个人投资者还是专业机构,都需要一个高效的工具来帮助他们快速获取股票数据并进行分析。本文将带你一步步用Python和PyQt5打造一个股票涨幅统计工具,不…

大模型正确调用方式

1、ollama 安装 curl -fsSL https://ollama.com/install.sh | sh 如果是AutoDl服务器,可以开启学术加速。 source /etc/network_turbo 本次使用腾讯云Cloud Studio,所以已经安装好了 Ollama 2、启动 ollama run 模型的名字 ollama serve # 开启服务 olla…

计算机网络 (62)移动通信的展望

一、技术发展趋势 6G技术的崛起 内生智能:6G将强调自适应网络架构,通过AI驱动的智能算法提升通信能力。例如,基于生成式AI的6G内生智能架构将成为重要研究方向,实现低延迟、高效率的智能通信。信息编码与调制技术:新型…

KVM/ARM——基于ARM虚拟化扩展的VMM

1. 前言 ARM架构为了支持虚拟化做了些扩展,称为虚拟化扩展(Virtualization Extensions)。原先为VT-x创建的KVM(Linux-based Kernel Virtual Machine)适配了ARM体系结构,引入了KVM/ARM (the Linux ARM hypervisor)。KVM/ARM没有在hypervisor中引入复杂的…

python:taichi 模拟一维波场

在 Taichi 中模拟一维波场,通常是利用 Taichi 编程语言的特性来对一维空间中的波动现象进行数值模拟,以下是相关介绍: 原理基础 波动方程:一维波动方程的一般形式为 ,其中 u(x,t) 表示在位置x 和时间t 处的波的状态&…

LeetCode - Google 大模型校招10题 第1天 Attention 汇总 (3题)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/145368666 GroupQueryAttention(分组查询注意力机制) 和 KVCache(键值缓存) 是大语言模型中的常见架构,GroupQueryAttention 是注意力…

视觉语言模型 (VLMs):跨模态智能的探索

文章目录 一. VLMs 的重要性与挑战:连接视觉与语言的桥梁 🌉二. VLMs 的核心训练范式:四种主流策略 🗺️1. 对比训练 (Contrastive Training):拉近正例,推远负例 ⚖️2. 掩码方法 (Masking):重构…

java8-日期时间Api

目录 LocalDate更新时间LocalTimeLocalDateTimeInstantPeriod Duration格式化、解析日期-时间对象时区 java.util.Date java.util.Calendar 不支持时区 线程不安全 月份从0起线程不安全,只有包裹在ThreadLocal中才安全 java.text.DateFormat java.text.SimpleDateFo…

深度学习 Pytorch 动态计算图与梯度下降入门

在上节末尾我们发现autograd.grad函数可以灵活进行函数某一点的导数和偏导数的运算,但微分运算只是AutoGrad模块中的一小部分功能,本节将继续讲解这个模块的其他常用功能,并在此基础上介绍另一个常用优化算法:梯度下降算法。 imp…

FreeRtos的使用教程

定义: RTOS实时操作系统, (Real Time Operating System), 指的是当外界事件发生时, 能够有够快的响应速度,调度一切可利用的资源, 控制实时任务协调一致的运行。 特点: 支持多任务管理, 处理多个事件, 实现更复杂的逻辑。 与计算…

大话特征工程:1.维数灾难与特征轮回

一、维度深渊 公元 2147 年,人类文明进入了数据驱动的超级智能时代。从金融到医疗,从教育到娱乐,所有决策都仰赖“全维计算网络”(高维特征空间)。这套系统将全球所有信息抽象成数以亿计的多维特征&#xff08…

从ai产品推荐到利用cursor快速掌握一个开源项目再到langchain手搓一个Text2Sql agent

目录 0. 经验分享:产品推荐 1. 经验分享:提示词优化 2. 经验分享:使用cursor 阅读一篇文章 3. 经验分享:使用cursor 阅读一个完全陌生的开源项目 4. 经验分享:手搓一个text2sql agent (使用langchain l…

《STL基础之hashtable》

【hashtable导读】STL为大家提供了丰富的容器,hashtable也是值得大家学习和掌握的基础容器,而且面试官经常会把它和hashmap混在一起,让同学们做下区分。因此关于hashtable的一些特性,比如:底层的数据结构、插入、查找元…

本地大模型编程实战(02)语义检索(2)

文章目录 准备按批次嵌入加载csv文件,分割文档并嵌入测试嵌入效果总结代码 上一篇文章: 本地大模型编程实战(02)语义检索(1) 详细介绍了如何使用 langchain 实现语义检索,为了演示方便,使用的是 langchain 提供的内存数据库。 在实…

猿人学第一题 js混淆源码乱码

首先检查刷新网络可知,m参数被加密,这是一个ajax请求 那么我们直接去定位该路径 定位成功 观察堆栈之后可以分析出来这应该是一个混淆,我们放到解码平台去还原一下 window["url"] "/api/match/1";request function…