参考:
https://zhuanlan.zhihu.com/p/336833453

1.概述

通信管理负责分布式实时嵌入式环境中应用程序之间的所有通信。

背后的概念是从实际机制中抽象出来,以查找和连接通信伙伴,以便应用程序软件的实现者可以专注于其应用程序的特定目的。

2.面向服务的通信

服务的概念是指提供给应用程序的功能超出了基本操作软件已经提供的功能。通信管理软件提供了为机器内通信以及机器间通信提供或使用此类服务的机制。

服务包含以下各项的组合

· Events

· Methods

· Fields

可以在设计时,启动时或运行时建立通信伙伴之间的通信路径。该机制的重要组成部分是服务注册中心,它充当中介实例,并且也是通信管理软件的一部分。

提供服务的每个应用程序都在服务注册表中注册这些服务。要使用服务,Costumer应用程序需要通过查询服务注册表来找到请求的服务,此过程称为服务发现。

3.语言绑定和网络绑定

通信管理提供了标准化的手段,将定义的服务呈现给应用程序实现者(上层,语言绑定)以及网络上服务数据的相应表示(下层,网络绑定)。这确保了源代码的可移植性以及跨平台的不同实现的已编译服务的兼容性。

语言绑定定义如何通过使用目标编程语言的便捷功能将服务的Method,Event和Field转换为可直接访问的标识符。性能和类型安全性(就目标语言所支持的程度而言)是主要目标。因此,语言绑定通常由由Service Interface定义提供的源代码生成器实现。

网络绑定定义了如何将已配置服务的实际数据序列化并绑定到特定网络。可以基于通信管理配置(AUTOSAR元模型的接口定义),通过解释生成的服务特定配方或直接生成序列化代码本身来实现。当前,通信管理支持SOME / IP,DDS,IPC(进程间通信或任何其他自定义绑定)和Signal PDU(基于信号的网络绑定)。

本地服务注册表也是网络绑定的一部分。

注意:语言绑定和网络绑定之间的接口被视为Communication Management软件内部的专用接口。因此,定义此接口的规范目前不在范围内。但是,鼓励平台供应商为其软件独立定义这样的接口,以允许轻松实现除C ++之外的其他语言绑定以及其平台实现内的其他网络绑定。

4.C ++语言绑定生成的代理和骨架

C ++语言绑定的上层接口提供了AUTOSAR元模型的接口描述中定义的服务的面向对象的映射。

作为Communication Management软件开发工具一部分的生成器生成C ++类,这些类包含每个相应服务的Field,Event和Method的类型安全表示。

在服务实现方面,这些生成的类称为Service Provider Skeletons。在Client,它们称为Service Requester Proxies。

对于服务Methods,服务Requester Proxy提供了同步(阻止调用者直到服务器返回结果)和异步调用(被调用函数立即返回)的机制。当Server的返回值通过Core Type ara :: core :: future的特殊功能可用时,调用者可以并行启动其他活动并接收结果。参见后面的文章《AP AUTOSAR平台设计(17)——Core Types》。

可以配置平台实现,以便当相应的Server尚不可用时,生成器创建模型类,以便于Client功能的轻松开发。相同的机制也可以用于对Client进行单元测试。

Client可以直接使用proxy类,而C ++绑定的 Service Provider Skeleton 只是抽象基类。服务实现应从生成的基类派生并实现各自的功能。

ara :: com的接口还可以为安全相关的E2E受保护的通信提供Proxy和Skeleton 。这些接口的设计可确保无论E2E保护是打开还是关闭,都可以确保与应用程序的兼容性。

5.静态和动态配置

通信路径的配置可以在设计时,启动时或运行时进行,因此被认为是静态或动态的:

完全静态配置:

由于Server知道所有Client,而Client也知道Server,因此根本不需要发现Service。

没有通过应用程序代码发现:

Client知道Server,但是Server不知道Client。事件订阅是应用程序中唯一的动态通信模式。

在应用程序中发现全面服务:

在配置时,尚无通信路径。用于服务发现的API允许应用程序代码在运行时选择服务实例。

6.服务Contract Versioning

在SOA环境中, Client和Server的provider通过Service Interface和behavior连接在一起。

在开发服务期间,Service Interface或behavior可能会随时间而改变。 因此,已引入服务Contract Versioning以区分服务的不同版本。 AUTOSAR自适应平台支持Contract 的Versioning设计,以用于服务的设计和部署阶段。

此外,Client的Service discovery可以配置为支持版本向后兼容。这意味着,如果Client Service与Client 的required service版本向后兼容,则它们可以连接到不同版本的ProvidedService版本。

7.原始数据流接口

除了面向服务的通信外,通信管理还提供了一个独立的API,用于处理朝向外部ECU(例如,ECU)的原始二进制数据流。 ADAS系统中的传感器。 该API是静态的,并为Client实现建立通信通道,破坏通信通道以及在通信通道上读取和写入原始数据(字节流)的功能。

原始数据流通道可以由集成商通过应用包含例如以下内容的部署信息来配置。网络端点信息和所选协议。 当前,TCP / IP套接字将用作传输层,但将来可以添加其他替代方案。 Raw Data Stream接口在名称空间ara :: com :: raw中可用。

自适应平台AUTOSAR(Adaptive Platform AUTOSAR)平台设计(6)——通信管理相关推荐

  1. AutoSAR Adaptive platform 初探

    AutoSAR Adaptive platform初探 博主逐步开始探索Adaptive platform,如果你也是初学者,那博主可以跟你作回同窗了,一起先来看看,这个平台内都有哪些值得我们CARE ...

  2. Adaptive AUTOSAR (AP) 平台设计(6)——通信管理

    前言 Hello!大家好! 欢迎来到<搞一下汽车电子> 本期为<搞一下 AP AUTOSAR 平台设计>第6期:通信管理 更多精彩内容欢迎订阅微信公众号 " 搞一下汽 ...

  3. 软件接口设计_基于PREEvision的AUTOSAR Adaptive设计——上篇

    AUTOSAR Adaptive概述 2003年,汽车行业的高端玩家们发起了汽车嵌入式系统软件架构标准化项目--AUTOSAR(汽车开放系统架构).2017年,为适应汽车的发展趋势(智能化.网联化等) ...

  4. A2 AP AUTOSAR 与 CP AUTOSAR 的特性

    Hello!大家好!欢迎来到<搞一下汽车电子>今天,我们给大家分享的是Adaptive Platform AUTOSAR 专题视频,增加的第二篇内容:A2 自动驾驶 & 域控中间件 ...

  5. 将DDS集成到AUTOSAR Adaptive平台

    解决新挑战是推动创新的动力,但不可避免的事实是:在各种行业中,系统架构都在迅速发展并变得越来越复杂.为了控制这种复杂性并最大程度地提高数据吞吐量,Data Distribution Service™( ...

  6. autosar网络管理_AP AUTOSAR平台设计(11)——网络管理

    点击蓝字右上角      关注置顶不迷路 Hello!大家好!欢迎来到<搞一下汽车电子>本篇是AP AUTOSAR平台设计(11)--网络管理如果觉得不错,"转发" & ...

  7. 普元eos开发手册_名词解释--统一应用(开发)平台Unified Application Platform

    国内有些企业项目开发当中,可能会遇到UAP的概念,UAP指的是Unified Application Platform,即统一应用平台. UAP,简单的理解,就是公司层面,统一的技术平台,涉及整个公司 ...

  8. 打造企业级云深度学习平台——小米云深度学习平台的架构设计与实现

    作者:陈迪豪,小米深度学习工程师,负责小米云深度学习平台的架构和实现,目前专注于TensorFlow和Kubernetes社区. 责编:何永灿,欢迎人工智能领域技术投稿.约稿.给文章纠错,请发送邮件至 ...

  9. Java实现旅游app_基于安卓Android平台的旅游系统APP的设计(Eclipse,MySQL)

    基于安卓Android平台的旅游系统APP的设计(Eclipse,MySQL)(任务书,开题报告,论文15700字,程序代码) 摘  要 随着手机使用的普及,人们获取与保存信息的方式已经发生了激动人心 ...

  10. 嵌入式linux智能家居系统,以Arm-Linux为平台的智能家居控制系统的设计详解

    嵌入式系统以其占用资源少.专用性强.功耗低的特点使其广泛应用在移动通信.工业生产.安全监控等领域.针对人们对高效.舒适.安全.便利.环保的居住环境的要求,提出了以Arm-Linux为平台的智能家居控制 ...

最新文章

  1. 赤兔四足机器人的作用_腾讯 Robotics X 实验室四足移动机器人Jamoca首亮相,可挑战高难度梅花桩...
  2. Django ORM 级联删除
  3. 信息系统项目管理师-常用英文术语整理
  4. Delphi 中的 Var buffer 开类型参数
  5. 底部居中_中文编程:安卓的底部菜单设计
  6. linux 如何创建内核进程,Linux内核的进程创建和执行.pdf
  7. 软件工程网络15个人阅读作业1 201521123038 游舒婷
  8. uft自动化测试工具安装步骤_自动化功能测试和接口测试工具整理
  9. html css怎么连在一起,CSS秘密花园:连体字母_html/css_WEB-ITnose
  10. 和docket的第一次亲密接触
  11. linux下qt生成dll,Qt 创建和使用动态链接库 - cibiren2011的专栏 - 博客频道 - CSDN.NET...
  12. RabbitMQ教程_1 引言
  13. 复习:关于类的继承和构造函数
  14. Reverse Linked List 反转链表
  15. 打印时总跟出一页计算机主的纸,如何将多页PDF打印在一张纸上
  16. HttpSession基础
  17. 渥太华大学计算机科学,加拿大渥太华大学计算机科学CO-OP录取
  18. SSH密匙key介绍
  19. 襄阳寻古2-襄阳城墙,铁佛寺
  20. 要将OFD文件的base64编码转换为可下载的OFD文件

热门文章

  1. ArcGIS学习总结(七)——河流制图综合
  2. 关于重分类工具的其他讨论
  3. java静态类堆栈_Java回归学习-面向对象内存分析-堆栈
  4. 实习成长之路: 重新认识IOC,你可能对IoC有些误会?
  5. lua脚本语言学习(一)
  6. Flutter之Flutter-Redux框架源码解析
  7. Android AsyncTask源代码浅析
  8. 软件测试 白盒测试是否为闰年,对【判断闰年】函数的白盒测试
  9. Linux深度系统卡在开机界面,deepin开机卡死在logo页面解决方案
  10. C语言求组合数取模,C 习题1.pdf