Adaptive AUTOSAR 学习笔记 12 - 通信管理
本系列学习笔记基于 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 - 通信管理的更多相关文章
- Adaptive AUTOSAR 学习笔记 10 - 执行管理
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 EM:Execution Ma ...
- Adaptive AUTOSAR 学习笔记 8 - 干货小结:背景、技术、特征、架构、方法论和 Manifest
官方文档下载方式及介绍情参见 Adaptive AUTOSAR 学习笔记 2 - 官方文档下载及阅读建议. 这是 Adaptive AUTOSAR 学习笔记的第 8 篇,学习笔记 3 - 7 翻译了 ...
- Adaptive AUTOSAR 学习笔记 3 - AP 背景、技术及特征(中文翻译)
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本.本文从AUTOSAR_EXP_PlatformDesign.pdf开始,一边学习,一边顺带着翻译一 ...
- Adaptive AUTOSAR 学习笔记 16 - 时间同步和网络管理
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...
- Adaptive AUTOSAR 学习笔记 4 - 架构
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...
- Adaptive AUTOSAR 学习笔记 6 - 架构 - 方法论和 Manifest
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...
- Adaptive AUTOSAR 学习笔记 7 - 应用设计和 Manifest
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...
- Adaptive AUTOSAR 学习笔记 14 - 车辆诊断
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...
- Adaptive AUTOSAR 学习笔记 15 - 持久化 Persistency
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf.作者:Zijian/TENG 原文地 ...
随机推荐
- C#调百度通用翻译API翻译HALCON的示例描述
目录 准备工作 参数简介 输入参数 输出参数 使用HttpClient 翻译工具类 应用:翻译HALCON的示例描述 准备工作 HALCON示例程序的描述部分一直是英文的,看起来很不方便.我决定汉化一 ...
- 文字识别OCR开源框架的对比--Tesseract vs EasyOCR
前言: OCR文字识别在目前有着比较好的应用,也出现了很多的文字识别软件,但软件是面向用户的.对于我们技术人员来说,有时难免需要在计算机视觉任务中加入文字识别,如车牌号识别,票据识别等,因此软件对 ...
- layui checkbox 样式
layui checkbox扩展插件: 一.新建 checkbox.css 样式文件 .checkBox .block{float:left; margin:5px;padding:6px 6p ...
- C# datagridview 这是滚动条位置
1.datagridview 设置 表格内容铺满,内容自动换行 dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True; ...
- 导入项目发现没得右边没得maven
使用ctrl + shift+A点Add Maven Project 就行了 参考:https://www.cnblogs.com/Juff-code/p/13390356.html
- MySql:使用Navicat定时备份数据库
Navicat自带就有备份 还可以直接计划任务,很方便. 1. 新建计划 打开navicat客户端,连上mysql后,双击左边你想要备份的数据库.点击"计划",再点击" ...
- linux中的vim用法
p.p1 { margin: 0; font: 16px ".PingFang SC"; color: rgba(53, 53, 53, 1) } p.p2 { margin: 0 ...
- mybatis 配置的log4j文件无效,不能正常显示日志信息
正在学习mybatis,配置好后log4j.properties文件后,日志信息不能正常显示,没有效果. 查看了一下mybatis的相关文档,在日志一栏找到问题愿意 原因是我们的mybatis选了其他 ...
- python 07篇 内置函数和匿名函数
一.内置函数 # 下面这些要掌握 # len type id print input open # round min max filter map zip exec eval print(all([ ...
- 基于Ryu的流量采集代码实现
1 from __future__ import division 2 import time 3 import math 4 import xlwt 5 from ryu.controller im ...