让SOME/IP运转起来——SOME/IP系统设计(上)

什么是SOME/IP?

SOME/IP(Scalable service-Oriented MiddlewarE over IP)是AUTOSAR应用层的协议,是基于IP协议的面向服务的可拓展性的中间件。

SOME/IP中主要定义了:

  • 数据的序列化:SOME/IP支持的数据类型,复杂数据的序列化及反序列化方式
  • 通信机制:提供Request/Response、Fire&Forget、发布-订阅的通信机制
  • 服务发现:实现节点在网络上找到可用的服务,还可以进行订阅

SOME/IP作为一种通信协议,主要应用于车内ECU之间的通信,相比较传统的CAN来说具有可扩展性,报文传输内容更多,基于以太网,面向服务等优势。

那么如何使用SOME/IP实现车内ECU之间的通信呢?

SOME/IP系统设计

在这里插入图片描述
SOME/IP的系统涉及几个层面:功能,功能逻辑,通信,ECU部署。

由于功能需求、功能逻辑、ECU部署由架构工程师开发,通信过程由通信工程师进行设计,中间交接的部分是十分重要的,因此在整个过程中,需要架构工程师和通信工程师的共同合作,才能达到一个正确的设计结果。

SOME/IP系统设计需要通信工程师梳理使用SOME/IP传输的信号以及信号传输的逻辑,并将这些信号设计成服务接口,以符合SOME/IP面向服务的特点和通信机制,通信的逻辑形成时序图,可以为系统测试提供输入。

在整个系统设计的过程中会涉及到三个输出产物:

  • UC:以太网Use Case,承接架构的开发产物,用来梳理使用SOME/IP传输的信号内容和逻辑。
  • 矩阵:SOME/IP服务接口设计,将UC中梳理出来的需要使用SOME/IP传输的信号,以符合SOME/IP要求的服务接口的格式进行设计。矩阵还可以转换为ARXML供下游工具解析,并以此为基础继续开发。
  • 时序图:将UC中使用SOME/IP传输的功能的逻辑绘制为时序图,为系统测试提供输入。

系统设计注意事项

UC

系统设计的第一步,作为架构工程师与通信工程师之间工作衔接的中间产物,需要双方明确功能、信号、逻辑等,才能保证系统设计的正确性。

矩阵

  • 服务划分:可以根据功能或者SWC进行划分
  • 唯一标识符:Service ID、Method ID、Instance ID需要全局唯一指示服务接口
  • 服务接口:根据SOME/IP通信机制和接口类型的定义,选择能够实现功能的通信逻辑的接口和通信机制
  • 数据类型:根据SOME/IP对数据类型的要求,选择能够实现功能通信信号的数据类型,以确保SOME/IP可以正确序列化和反序列化
  • 订阅组:订阅的服务接口需要部署在某个EventGroup里,才能实现订阅
  • 通信协议选择:根据TCP和UDP的特点选择即可,如TCP更加可靠,UCP更加实时
  • 版本管理:可以根据平台或者车型的更新或扩展计划进行版本管理,需要保证向后兼容

时序图

需要体现Server和Client的ECU、服务、信号传输使用的服务接口,必要时还要体现接口具体传输的数据以及事件发送的机制。

SOME/IP通信设计例子

功能需求整理

  • 功能需求:通过HU接听电话,并且在屏幕上显示通话相关信息及状态
  • 子系统:该功能分为“交互”和“通话”两个逻辑单元
  • ECU部署:“交互”部署到HU,“通话“部署到TBOX

梳理交互逻辑及信息

  • 电话呼入
  • TBOX向HU发送通话信息
  • HU进行显示
  • 用户通过HU进行操作
  • HU向TBOX发送接听或者拒绝通话
  • TBOX向HU反馈操作响应并执行相应动作
  • 如果通话信息及状态有更新,TBOX向HU发送相关信息

服务接口设计

根据梳理的交互逻辑及信息,将服务定为TBoxTelephony,部署在TBOX上,服务接口分别为CallOperarion和CallInfo,分别用于控制电话接听或者拒绝和通话相关信息及状态。

下表为接口设计内容:

在这里插入图片描述

传输协议选择

根据TCP和UDP的特性,以及实际功能的要求,每个服务接口单独选择。

端口定义

系统设计的第一步,作为架构工程师与通信工程师之间工作衔接的中间产物,需要双方明确功能、信号、逻辑等,才能保证系统设计的正确性。

时序图设计

在这里插入图片描述

总结

SOME/IP系统设计实现了系统内ECU之间的SOME/IP通信,设计思路可以总结为确定功能需求,梳理功能的逻辑及信息,设计服务接口,传输协议及端口号的定义等。

矩阵内包含的服务接口设计是覆盖整个系统的,ECU的开发都需要遵循矩阵的设计,但是矩阵的内容可以是确定的,格式可能会大不相同,因此就需要一种统一的格式来承载——ARXML(AUTOSAR XML)格式文件,那么ARXML是如何生成的呢?敬请期待《SOME/IP系统设计(下)》。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Web开发介绍详细介绍

Web开发介绍 1 什么是web开发 Web:全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站。 所以Web开发说白了,就是开发网站的,例如下图所示的网站:淘宝,京东等等 那么我们…

SpringBoot集成JPA实现分页和CRUD

SpringBoot集成JPA实现分页和CRUD 文章目录 SpringBoot集成JPA实现分页和CRUDpom.xmlapplication.propertiesaddCategory.jspeditCategory.jsphello.jsplistCategory.jspCategoryCategoryDAOCategoryServiceCategoryServiceImplPage4NavigatorRedisConfigCategoryControllerHel…

基于Springboot+MYSQL+Maven实现的宠物医院管理系统(源码+数据库+运行指导文档+项目运行指导视频)

一、项目简介 本项目是一套基于springboot框架实现的宠物医院管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单…

【Kubernetes】初识k8s--扫盲阶段

文章目录 1、k8s概述2、为什么要有k8s2.1 回顾以往的应用部署方式2.2 容器具有的优势 3、k8s能带来什么 1、k8s概述 kubernetes是一个可移植、可扩展的开源平台,用于管理 容器化 的工作负载和服务,可促进申明式配置和自动化。kubernetes拥有一个庞大且快…

ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑

ElasticSearch深度解析入门篇:高效搜索解决方案的介绍与实战案例讲解,带你避坑 1.Elasticsearch 产生背景 大规模数据如何检索 如:当系统数据量上了 10 亿、100 亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题&a…

【C语法学习】15 - fopen()函数

文章目录 1 函数原型2 返回值3 参数3.1 文件名3.2 模式3.2.1 以"r"模式打开3.2.2 以"w"模式打开3.2.3 以"a"模式打开3.2.4 以"r"模式打开3.2.5 以"w"模式打开3.2.6 以"a"模式打开 1 函数原型 fopen()&#xff1a…

右击显示Pycharm打开教程

效果图 操作流程 win r 输入 regedit 回车打开注册表编辑器 2.找到 shell 路径 计算机\HKEY_CLASSES_ROOT\Directory\shell3.在 shell 下新建项,名称为 Pycharm 单击Pycharm文件夹,双击默认项,修改默认值,这个数值就是你右击后…

【Linux】 shutdown 命令使用

shutdown 命令可以用来进行关机程序,并且在关机以前传送讯息给所有使用者正在执行的程序,shutdown 也可以用来重开机。使用权限:系统管理者。 语法 shutdown [选项] 时间 [警告信息] 命令选项及作用 执行令 man shutdown 执行命令结果 参…

计算虚拟化2——内存虚拟化

目录 物理机内存访问过程 虚拟地址VA和物理地址PA概念 MUU实现VA到PA所使用的映射表 内存虚拟化类型 内存软件辅助虚拟化 内存硬件辅助虚拟化 内存虚拟化-内存超分配 内存共享 内存置换 内存气泡 物理机内存访问过程 内存的基本知识 内存都是从物理地址0开始的&…

golang工程——opentelemetry简介、架构、概念、追踪原理

opentelemetry 简介 OpenTelemetry,简称OTel,是一个与供应商无关的开源可观测性框架,用于检测、生成、收集和导出 遥测数据,如轨迹、度量、日志。OTel的目标是提供一套标准化的供应商无关SDK、API和工具,用于接 收、…

阿里云免费服务器

文章目录 最近的阿里云活动By the way在云服务器ECS上搭建个人网站正文补充:定期释放补充:不知道阿里云服务器的密码怎么办?成果补充:怎么找到实例操作的后台?补充:怎么查看服务器到期时间? 究竟白嫖了多少?最后&…

[论文笔记]RetroMAE

引言 RetroMAE,中文题目为 通过掩码自编码器预训练面向检索的语言模型。 尽管现在已经在许多重要的自然语言处理任务上进行了预训练,但对于密集检索来说,仍然需要探索有效的预训练策略。 本篇工作,作者提出RetroMAE,一个新的基于掩码自编码器(Masked Auto-Encoder,MAE)…

【leetcode】17.04 消失的数字

目录 1. 思路2. 代码 题目链接:leetcode 17.04.消失的数字 题目描述: 1. 思路 要求算法复杂度为O(n),有两种方式: (1)利用异或交换律 与nums所有元素异或一遍;与0-n的值异或,n…

开源 | 30余套STM32单片机、嵌入式Linux、物联网、人工智能项目(开发板+教程+视频)

文末免费领取! 30余套综合项目案例 STM32单片机、嵌入式、物联网、人工智能 项目文档源码视频 高校教学、学生毕设、个人项目练手 嵌入式实战项目推荐 15个嵌入式LinuxQt综合应用项目,涉及家居、医疗、农业等多种应用领域,案例中使用了嵌…

Linux高级命令(扩展)二

一、Linux下用户管理 1、用户概念以及基本作用 用户:指的是Linux操作系统中用于管理系统或者服务的人 一问:管理系统到底在管理什么? 答:Linux下一切皆文件,所以用户管理的是相应的文件 二问:如何管理…

【自用】vmware workstation建立主机window与虚拟机ubuntu之间的共享文件夹

1.在windows中建立1个文件夹 在vmware中设置为共享文件夹 参考博文: https://zhuanlan.zhihu.com/p/650638983 2.解决: (1)fuse: mountpoint is not empty (2)普通用户也能使用共享目录 参考博文&#x…

大模型 其他方案的进度

Llama2 1、中文提问,英文的回答,对于中文不友好 2、网上还没有看到很详细的微调教程 3、虽然Llama2的预训练数据相对于第一代LLaMA扩大了一倍,但是中文预训练数据的比例依然非常少,仅占0.13%,这也导致了原始Llama2的中…

多模态大模型最全综述

由微软7位华人研究员撰写--多模态基础模型已经从专用走向通用 它从目前已经完善的和还处于最前沿的两类多模态大模型研究方向出发,全面总结了五个具体研究主题: 视觉理解视觉生成统一视觉模型LLM加持的多模态大模型多模态agent 1、谁适合阅读这份综述&…

Vue3问题:如何实现组件拖拽实时预览功能?

前端功能问题系列文章,点击上方合集↑ 序言 大家好,我是大澈! 本文约3000字,整篇阅读大约需要5分钟。 本文主要内容分三部分,第一部分是需求分析,第二部分是实现步骤,第三部分是问题详解。 …

运维基础-Docker容器命令部署

Docker基础知识 安装问题-有podmanCentos8使用yum install docker -y时,默认安装的是podman-docker软件安装docker yum list installed | grep dockeryum -y remove xxxxDocker安装配置下载安装docker启动docker,并设置开机启动下载所需镜像 centos镜像进…