本系列学习笔记基于 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. 为什么 Python 没有函数重载?如何用装饰器实现函数重载?

    英文:https://arpitbhayani.me/blogs/function-overloading 作者:arprit 译者:豌豆花下猫("Python猫"公众号作者) 声 ...

  2. 20204107 孙嘉临 《PYTHON程序设计》实验四报告

    课程:<Python程序设计>班级: 2041姓名: 孙嘉临学号: 20204107实验教师:王志强实验日期:2020年6月29日必修/选修: 公选课 ##作为一个轻度游戏玩家,当然是要写 ...

  3. 台达PLC开发笔记(二):台达PLC设置主机通讯参数为RTU并成功通讯

    前言   前面使用485和网口与台达成功建立通讯,但是485是使用用的ASICC模式,多数情况下是使用RTU模式提升通讯效率.   下载安装台达ISPSoft软件   官网下载地址:https://d ...

  4. 50、django工程(ajax)

    50.1.ajax介绍: 1.ajax是在不跳转当前url地址的情况偷偷的往后台发送数据做增删改数据的操作,如果成功返回结果刷新当前页面,失败则提醒, 使用 id 或 name 属性. 2.模态对话框 ...

  5. 【Azure API 管理】解决调用REST API操作APIM(API Management)需要认证问题(Authentication failed, The 'Authorization' header is missing)

    问题描述 在通过REST API的方式来管理APIM资源,需要调用Azure提供的management接口.而这所有的接口,都是需要有Token并且还需要正确的Token.如若不然,就会获取到如下的错 ...

  6. Activiti7 入门篇

    1.  工作流 简单地来讲,工作流就是在计算机的协助下实现流程的自动化控制.目前,笔者熟知的主流的框架有:Camunda .Flowable .Activiti .jBPM.还有我们国产的盘古BPM. ...

  7. Jenkins 凭证 Devops 的粘合剂

    大家好,我是小猿来也,一个热衷于搞 Devops 自动化的 Java 程序猿. 万事具备,只欠东风.当我决定大搞特搞 Devops 的时候,Jenkins 凭证却傻傻分不清. 玩 Devops 的小伙 ...

  8. Docker学不会?不妨看看这篇文章

    大家好,我是辰哥! 上一篇文章(2300+字!在不同系统上安装Docker!)教大家如何在系统上安装docker,今天咱们来学习docker的基本使用. 辰哥将在本文里详细介绍docker的各种使用命 ...

  9. [心得体会]RabbitMQ

    RabbitMQ是什么? 消息队列, 基于AMQP(高级消息队列), 使用Erlang语言编写, 收发消息使用 有什么用? 有什么应用场景? 1. 任务异步处理 2. 应用程序解耦 为什么使用Rabb ...

  10. 在docker的镜像中安装vim

    在使用docker容器时,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要安装vim,可是当你敲apt-get install vim命令时 ...