AUTOSAR_EXP_ARAComAPI的7章笔记(5)

☞返回总目录

相关总结:典型的 SOME/IP 多绑定用例总结

7.3.3 典型的SOME/IP多绑定用例

在前面的章节中,我们简要提到,在一个典型的SOME/IP 网络协议的部署场景中,AP SWC不太可能自己打开套接字连接来与远程服务通信。为什么不太可能呢?因为SOME/IP被明确设计为尽可能少的使用端口。这种需求的原因来自于低功耗/低资源嵌入式 ECU:并行管理大量的IP套接字意味着在内存资源方面的巨大成本。

因此,与非汽车IT 对端口的使用模式相比,通信伙伴主要是AUTOSAR CP车内网络以某种方式要求这种方法,这是不常见的。

通常,这种需求导致了一种架构,其中一个 ECU(网络端点)的所有SOME/IP 流量通过一个IP端口进行路由!这意味着,不同本地应用程序(服务提供者服务消费者)的SOME/IP消息使用一个套接字连接进行复用。

在经典的 AUTOSAR(CP)中,这是一个直观的概念(比如:RTE),因为已经有一个共享的通信栈,整个通信都通过它进行。通过一个套接字对不同的上层PDU进行复用是集成在CPSoAd基本软件模块中的核心功能。对于一个具有POSIX套接字APIPOSIX兼容操作系统,许多应用程序的 SOME/IP通信复用一个端口意味着引入一个中央守护进程,该进程管理相应的端口。这个进程的任务是在 SOME/IP网络通信本地通信之间架起桥梁,反之亦然。

从上图可以看出,ara::com应用程序中的服务代理通过(绿色线条)一个SOME/IP桥与远程服务实例2进行通信。在这个图中有两点可能会引起注意:

  • 将从应用程序通信路径(绿色)与从服务实例2的通信路径(蓝色)用不同的颜色表示。

  • 服务发现SOME/IP桥的功能块周围画了一个框。

使用不同颜色表示的原因很简单:两部分使用不同的传输机制。第一部分(绿色)在代理SOME/IP之间使用供应商特定的实现,第二部分(蓝色)必须符合SOME/IP规范供应商特定在这里意味着,供应商不仅决定他使用哪种技术(管道套接字共享内存等),还决定他在该路径上使用哪种序列化格式(见 7.1 节)。在这里,显然进入了优化的领域:在一个优化的 AP产品中,供应商不会为用绿色线条表示的通信路径使用不同的序列化格式, 否则会导致低效。首先,服务消费者中的服务代理在将数据传输到节点之前会对数据进行专有的序列化,然后SOME/IP桥必须对其进行反序列化并重新序列化SOME/IP序列化格式!所以,即使AP产品供应商对于本地通信有一个更精细的序列化方法,使用它也没有好处,因为SOME/IP桥就无法在内部和外部之间简单地复制数据。对于示例场景,我们最终使用一个多绑定设置,即使与本地ara::com应用程序SOME/IP桥节点通信的技术传输管道Unix 域套接字共享内存等)是相同的,绑定序列化部分也不同。

关于图中的第二点:我们在服务发现SOME/IP桥功能周围画了一个框,因为在产品实现中,很可能它被集成到一个组件中 (在一个守护进程)中运行。这两个功能高度相关:注册表(服务发现)部分也由 ECU本地部分(接收本地注册,并为本地FindService请求提供服务)和网络相关功能(基于SOME/IP服务发现提供/查找)组成,其中注册表必须进行仲裁。这种仲裁在其核心也是一种桥接功能

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

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

相关文章

Jenkins下载安装、构建部署到linux远程启动运行

Jenkins详细教程 Winodws下载安装Jenkins一、Jenkins配置Plugins插件管理1、汉化插件2、Maven插件3、重启Jenkins:Restart Safely插件4、文件传输:Publish Over SSH5、gitee插件6、清理插件:workspace cleanup system系统配置1、Gitee配置2、…

Flutter:Dio下载文件到本地

import dart:io; import package:dio/dio.dart;main(){// 创建dio对象final dio Dio();// 下载地址var url https://*******.org/files/1.0.0.apk;// 手机端路径String savePath Directory.systemTemp.path/ceshi.apk;print(savePath);downLoad(dio,url,savePath); }downLo…

【C++笔记】C++三大特性之多态

【C笔记】C三大特性之多态 🔥个人主页:大白的编程日记 🔥专栏:C笔记 文章目录 【C笔记】C三大特性之多态前言一.多态1.1 多态的概念1.2 虚函数1.3 虚函数的重写/覆盖1.4 多态的定义及实现 二.虚函数重写的⼀些其他问题2.1 协变(…

2.STM32之通信接口《精讲》之USART通信

有关通信详解进我主页观看其他文章!【免费】SPIIICUARTRS232/485-详细版_UART、IIC、SPI资源-CSDN文库 通过以上可以看出。根据电频标准,可以分为TTL电平,RS232电平,RS485电平,这些本质上都属于串口通信。有区别的仅是…

麒麟V10,arm64,离线安装docker和docker-compose

文章目录 一、下载1.1 docker1.2 docker-compose1.3 docker.service 二、安装三、验证安装成功3.1 docker3.2 docker-compose 需要在离线环境的系统了里面安装docker。目前国产化主推的是麒麟os和鲲鹏的cpu,这块的教程还比较少,记录一下。 # cat /etc/ky…

云原生之运维监控实践-使用Telegraf、Prometheus与Grafana实现对InfluxDB服务的监测

背景 如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》 去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当…

三十九、Python(pytest框架-中)

一、执行用例的方式 1.工具执行 2.在终端使用命令行运行 命令:pytest -s 用例代码文件 -s 的作用是输出显示代码中的 print。 3.在主函数main中执行 if __name__ "__main__": # 主函数pytest.main([-s, 用例代码文件]) import pytestclass TestDemo…

丹摩征文活动|丹摩助力selenium实现大麦网抢票

丹摩征文活动|丹摩助力selenium实现大麦网抢票 1.引言 在人工智能飞速发展的今天,丹摩智算平台(DAMODEL)以其卓越的AI算力服务脱颖而出,为开发者提供了一个简化AI开发流程的强大工具。通过租赁GPU资源,丹…

【计算机网络】协议定制

一、结构化数据传输流程 这里涉及协议定制、序列化/反序列化的知识 对于序列化和反序列化,有现成的解决方案:①json ②probuff ③xml 二、理解发送接收函数 我们调用的所有发送/接收函数,根本就不是把数据发送到网络中!本质都是…

大数据-226 离线数仓 - Flume 优化配置 自定义拦截器 拦截原理 拦截器实现 Java

点一下关注吧!!!非常感谢!!持续更新!!! Java篇开始了! 目前开始更新 MyBatis,一起深入浅出! 目前已经更新到了: Hadoop&#xff0…

AI行业动态:AGI预测、模型进化与工具革新

本周,人工智能(AI)领域的新闻层出不穷,从关于通用人工智能(AGI)何时到来的预测,到模型训练与推理技术的突破,再到各种实用工具的更新迭代,精彩纷呈。让我们一起深入了解这…

vue3 如何调用第三方npm包内部的 pinia 状态管理库方法

抛砖引玉: 如果在开发vue3项目是, 引用了npm第三方包 ,而且这个包内使用了Pinia 状态管理库,那我们如何去调用 npm内部的 Pinia 状态管理库呢? 实际遇到的问题: 今天在制作npm包时遇到的问题,之前Vue2版本的时候状态管理库用的Vuex ,当时调用npm包内的状态管理库很简单,直接引…

AWTK-WIDGET-WEB-VIEW 实现笔记 (4) - Ubuntu

Ubuntu 上实现 AWTK-WIDGET-WEB-VIEW 开始以为很简单,后来发现是最麻烦的。因为 Ubuntu 上的 webview 库是 基于 GTK 的,而 AWTK 是基于 X11 的,两者的窗口系统不同,所以期间踩了几个大坑。 1. 编译 AWTK 在使用 Linux 的输入法时…

C++之内存管理

​ 🌹个人主页🌹:喜欢草莓熊的bear 🌹专栏🌹:C入门 目录 前言 一、C/C内存分配 二、 malloc、calloc、realloc、free 三、C内存管理方式 3.1 new/delete 操作内置类型 3.2 new和detele操作自定义类型…

Visual Studio 2017 快捷键设置-批量注释和批量取消注释

一.批量注释设置: 1)打开Visual Studio 2017,点击菜单栏中的“工具”,然后选中“选项”: 2)选中“键盘”,在“显示命令包含”输入框中输入“注释”: 3)选中“编辑:注释选…

从零入门激光SLAM(二十三)——direct_visual_lidar_calibration全型号激光雷达-相机标定包

大家好呀,我是一个SLAM方向的在读博士,深知SLAM学习过程一路走来的坎坷,也十分感谢各位大佬的优质文章和源码。随着知识的越来越多,越来越细,我准备整理一个自己的激光SLAM学习笔记专栏,从0带大家快速上手激…

蓝桥杯备赛(持续更新)

16届蓝桥杯算法类知识图谱.pdf 1. 格式打印 %03d:如果是两位数,将会在前面添上一位0 %.2f:会保留两位小数 如果是long,必须在数字后面加上L。 2. 进制转化 2.1. 十进制转任意进制: 十进制转任意进制时&#xff…

【STL】set,multiset,map,multimap的介绍以及使用

关联式容器 在C的STL中包含序列式容器和关联式容器 1.关联式容器:它里面存储的是元素本身,其底层是线性序列的数据结构,比如:vector,list,deque,forward_list(C11)等 2.关联式容器里面储存的…

螺旋矩阵II(leetcode 59)

转圈过程&#xff08;边界处理&#xff09;遵循循环不变量的原则&#xff0c;坚持一个原则处理每一条边&#xff0c;左闭右开处理 class Solution { public:vector<vector<int>> generateMatrix(int n) {vector<vector<int>> num(n, vector<int>…

MCU的时钟体系

stm32F4的时钟体系图 1MHZ 10^6 HZ 系统时钟频率是168MHZ;AHB1、AHB2、AHB3总线上的时钟频率是168MHz;APB1总线上的时钟频率为42MHz&#xff1b;APB2总线上的时钟频率为84MHz&#xff1b; stm32F4的时钟体系图 在system_stm32f4xx.c文件中查看APB1和APB2的预分频值到底是多少…