本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf

缩写

  • CM:Communication Management
  • SOME/IP:Scalable service-Oriented MiddlewarE over IP
  • DDS:Data Distribution Service
  • IPC:Inter-Process Communication
  • PDU:Protocol Data Unit
  • SOA:Service Oriented Architecture
  • AP:AUTOSAR Adaptive Platform

7 通信管理

7.1 概述

CM 负责分布式、实时、嵌入式环境下的应用间通信。CM 从实现中抽象出一套发现、连接通信对象的机制。这样应用开发者就能专注于应用软件本身的业务逻辑。

7.2 面向服务通信

Service 即提供给应用的、基础软件之外的功能。CM 提供了 Service 消费者/提供者的机制,支持机器内和跨机器通信。

服务由事件Event、方法Methods、字段Fields的组合构成。通信各方的通信路径可以在设计、启动或者运行时建立。Service Registry 是 CM 软件中的一个重要组件,起到中间人的作用。

每个提供服务的应用向 Service Registry 注册服务。服务的客户端应用先向 Service Registry 查找(find)服务,这一过程叫做服务发现(Service Discovery)。

7.3 语言绑定和网络绑定

CM 标准化了:

  • 服务如何呈现给应用实现者(上层,语言绑定
  • 服务数据如何在网络中表示(下层,网络绑定

以上两点保证了源码的可移植性和已编译的服务在不同平台实现的兼容性。

语言绑定定义了:如何将服务的 methods,events,fields 翻译成目标语言中可直接访问的标识符。性能类型安全(只要目标语言支持)是首要目标。因此,语言绑定一般实现为以服务接口定义为输入的代码生成器

类型安全:编译时验证类型

网络绑定定义了:服务数据如何序列化以及如何绑定到特定网络。可以实现为基于 CM 的配置(AUTOSAR 元模型接口定义)实现:或通过解释(生成的)服务 recipe,或直接生成序列化代码。

目前 CM 支持 SOME/IP,DDS,IPC 以及 Signal PDU(基于信号的网络绑定)。

本地 Service Registry 也是网络绑定的一部分。

注意:语言绑定网络绑定之间的接口应当视为 CM 内部的 private 接口。尽管如此,平台供应商应当尽量为其软件定义独立的接口,以便在平台内实现除 C++ 之外的语言绑定

7.4 C++ 语言绑定 Proxies 和 Skeletons 代码生成

C++ 语言绑定的上层接口提供了(定义在AUTOSAR 元模型接口描述中的)服务的面向对象映射。生成器是部署工具的一部分,用于为 CM 生成包含各个 Service 的 fields、events 和 methods 的类型安全表示的 C++ 类。

在服务实现侧,生成的类叫 Service Provider Skeletons;在客户端侧,叫 Service Requester Proxies。对于服务方法,服务请求代理提供同步(调用者阻塞,直到 Server 返回结果)和异步(被调函数立即返回)调用机制。调用者可以并行执行其他任务,当服务端返回结果时,通过 Core Type 的 ara::core::future 接收结果。平台可以配置生成器生成 mockup 类,当服务尚未开发完成时,便于开发客户端功能,也可用于客户端的单元测试。

客户端可以直接使用代理类,而 Service Provider Skeletons 只是抽象基类,服务实现需要继承自生成的抽象基类,实现相应的功能。

ara::com 接口可以为 proxies 和 skeletons 提供安全相关、受 E2E 保护的通信。这些接口旨在确保与应用程序的兼容性,无论是否开启 E2E 保护。

7.5 静态、动态配置

通信路径的配置可能发生在设计、启动或者运行时。因此配置可以是静态或者动态的:

  • 全静态配置

    完全不需要服务发现,服务端知道所有的客户端,客户端也知道服务端。
  • 客户应用无需发现

    客户端知道服务端,但服务端不知道客户端。应用中唯一的动态通信方式就是事件订阅。
  • 全服务发现

    配置时不知道通信路径。服务发现 API 允许应用代码在运行时选择服务实例。

7.6 服务合同版本控制

SOA(Service Oriented Architecture)环境下,服务的客户端和提供端依赖覆盖服务接口和行为的合同。服务开发过程中,服务的接口和行为会改变。因此,引入服务合同版本控制来区分不同版本的服务。AP 支持设计、部署阶段的服务合同版本控制。不仅如此,客户端的服务发现可配置为向后兼容,即如果服务版本向后兼容客户端请求的服务版本,客户端可以连接到一个不同于其请求版本的服务。

7.7 原始数据流接口

除了面向服务的通信,CM 还提供了用于处理外部 ECU(如 ADAS 系统中的传感器)原始二进制数据流的独立、静态 API。

  • 为客户端应用实现了:建立到服务端的通信通道的功能
  • 为服务端应用实现了:等待客户端连接的功能
  • 为客户端和服务端提供了:销毁通信通道以及通过通道读写原始数据流的功能

原始数据流通道可以由集成配置其部署信息,包括网络端点信息、协议等。目前传输层使用 TCP/IP 套接字,但今后可能增加其他替代方式。原始数据流接口定义在 ara::com::raw 命名空间中。

更多关于 Adaptive AUTOSAR 文章

https://www.cnblogs.com/tengzijian/category/1995263.html

原文地址(获取最新更新):https://www.cnblogs.com/tengzijian/p/15112262.html

Adaptive AUTOSAR 学习笔记 12 - 通信管理的更多相关文章

  1. Adaptive AUTOSAR 学习笔记 10 - 执行管理

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 EM:Execution Ma ...

  2. Adaptive AUTOSAR 学习笔记 8 - 干货小结:背景、技术、特征、架构、方法论和 Manifest

    官方文档下载方式及介绍情参见 Adaptive AUTOSAR 学习笔记 2 - 官方文档下载及阅读建议. 这是 Adaptive AUTOSAR 学习笔记的第 8 篇,学习笔记 3 - 7 翻译了 ...

  3. Adaptive AUTOSAR 学习笔记 3 - AP 背景、技术及特征(中文翻译)

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本.本文从AUTOSAR_EXP_PlatformDesign.pdf开始,一边学习,一边顺带着翻译一 ...

  4. Adaptive AUTOSAR 学习笔记 16 - 时间同步和网络管理

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...

  5. Adaptive AUTOSAR 学习笔记 4 - 架构

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...

  6. Adaptive AUTOSAR 学习笔记 6 - 架构 - 方法论和 Manifest

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...

  7. Adaptive AUTOSAR 学习笔记 7 - 应用设计和 Manifest

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...

  8. Adaptive AUTOSAR 学习笔记 14 - 车辆诊断

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...

  9. Adaptive AUTOSAR 学习笔记 15 - 持久化 Persistency

    本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...

随机推荐

  1. 我是如何用 ThreadLocal 虐面试官的?

    我是陈皮,一个在互联网 Coding 的 ITer,微信搜索「陈皮的JavaLib」第一时间阅读最新文章,回复[资料],即可获得我精心整理的技术资料,电子书籍,一线大厂面试资料和优秀简历模板. Thr ...

  2. 详解Redis主从复制原理

    文章首发于公众号 "蘑菇睡不着" 前言 Redis 的主从复制和 MySQL 差不多,主要起着 数据备份,读写分离等作用.所以说主从复制对 Redis 来说非常重要,而无论是面试还 ...

  3. DDoS攻击的工具介绍

    1.低轨道离子加农炮(LOIC) 1.1 什么是低轨道离子加农炮(LOIC)? 低轨道离子加农炮是通常用于发起DoS和DDoS攻击的工具.它最初是由Praetox Technology作为网络压力测试 ...

  4. Weblogic下的servlet内存马注入-无参照纯调试

    目录 1.寻找servlet注入方法 1.1 调试 1.2 servletMapping添加servlet 2.获取request 2.1 从当前线程寻找信息 2.2 JNDI注入到内存马注入 3.关 ...

  5. 一文带你了解.Net信号量

    本文主要讲解.Net基于Semaphore带大家了解信号量 信号量举例 大家去银行去银行取钱,互斥锁管理的时一个柜台是否正在处理业务,而信号量管理的是整个柜台是否正在处理业务,每当有一个柜台处理完成之 ...

  6. java swagger ui 添加header请求头参数

    我用到的swagger 主要有三款产品,swagger editor,swagger ui 和swagger codegen. swagger editor:主要是一个本地客户端,用来自己添加api, ...

  7. 《PHP扩展学习系列》系列分享专栏

    <PHP扩展学习系列>系列分享专栏   <PHP扩展学习系列>已整理成PDF文档,点击可直接下载至本地查阅https://www.webfalse.com/read/20177 ...

  8. linux:mysql

    数据库介绍 mysql与php是黄金搭档(LAMP.LNMP) 常见的数据库 Oracle.Sql server.Access.Mariadb.Ds2等 安装 安装前确保计算机时间准确 源码包安装 优 ...

  9. java基础---类和对象(4)

    一. static关键字 使用static关键字修饰成员变量表示静态的含义,此时成员变量由对象层级提升为类层级,整个类共享一份静态成员变量,该成员变量随着类的加载准备就绪,与是否创建对象无关 使用st ...

  10. Spring框架中一个有用的小组件:Spring Retry

    1.概述 Spring Retry 是Spring框架中的一个组件, 它提供了自动重新调用失败操作的能力.这在错误可能是暂时发生的(如瞬时网络故障)的情况下很有帮助. 在本文中,我们将看到使用Spri ...