Adaptive AUTOSAR 学习笔记 4 - 架构
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf
缩写
AP:AUTOSAR Adaptive Platform
AA:Adaptive Application
ARA:AUTOSAR Runtime for Adaptive Applications
FC:Functional Cluster
3 架构
3.1 逻辑视角
3.1.1 ARA
下图是 AP 架构的逻辑视图。
- AA 运行在 ARA 之上
- ARA 由 FC 提供的接口组成
- FC 有两种接口
- AP Foundation(API):提供 AP 的基础功能
- AP Service:提供平台标准服务
- AA 也可以向其他 AA 提供服务(图中的 Non-PF Service)
AA 不关心 FC 的接口是 Foundation 还是 Service,对 AA 来说都是 C++ 的接口,尽管底层却有不同。注意:ARA 接口之下,包括运行在 AA 上下文中的 ARA 库,可能用 ARA 之外的接口去实现 AP,这是由 AP 实现设计决定。

上图的一些 FC 不在当前 Release 中,只是为了有个更好的 overall 架构。新的 FC 也可能会在之后的 Release 中加进来。
3.1.2 语言绑定,C++ 标准库和 POSIX API
API 的语言绑定基于 C++,C++ 标准库是 ARA 的一部分。系统 API 中,ARA 只包括 POSIX 的 PSE51子集(单进程 profile)的接口。
C++ 标准库有很多基于 POSIX 的接口,包括多线程 API。但是,不要把 C++ 标准库的线程接口和 PSE51 的线程接口混为一谈。C++ 标准库并没有覆盖所有 PSE51 的功能,比如设置线程调度策略。这时就不得不同时使用两种接口。
3.1.3 应用启动关闭
应用程序的生命周期是由 EM(Execution Management)管理的。启动应用程序需要在系统集成或运行时进行配置。所有的 FC 在 EM 看来都是应用程序,都是由相同的方式启动,除了 EM 自身(由 OS 启动)。下图是 AP 上不同的应用程序分类。

注意:什么时候启动/停止哪个应用不是 EM 决定的,而是另一个特殊的 FC,SM(State Management)。SM 根据系统设计来控制 EM,切换系统状态,进而控制着整个系统行为。这里系统指的是整个 AP 和上面运行的应用程序,其行为、具体实现视项目而定。SM 也和其他 FC 交互,协调整个机器的行为。SM 应该只用 ARA 定义的接口,以保证在不同 AP 实现上的可移植性。
3.1.4 应用程序接口
由于 PSE51 不含 IPC 接口,所以 AA 之间没有直接的交互。Communication Management(CM)是唯一的途径。CM 也提供面向服务通信,支持主机内或跨主机通信(这部分细节对应用程序来说是不可见的)。CM 负责路由转发“请求/回复”,无论 Service 应用和 Client 应用的部署拓扑是怎样的。有的 ARA 接口可能触发 AA 之间的交互,但这不属于通信接口,只是 ARA 接口的副作用罢了。
3.1.5 非标接口
AA 和 FC 可以使用非标接口,只要不和标准 AP 功能冲突,并且遵守项目 safety 和 security 的要求。除非是纯本地运行时库,尽量少用非标接口,影响移植到其他 AP 实现。
更多关于 Adaptive AUTOSAR 文章
https://www.cnblogs.com/tengzijian/category/1995263.html
Adaptive AUTOSAR 学习笔记 4 - 架构的更多相关文章
- Adaptive AUTOSAR 学习笔记 5 - 架构 - 物理视图
本系列学习笔记基于 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 学习笔记 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 学习笔记 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 原文地 ...
- Adaptive AUTOSAR 学习笔记 2 - 官方文档下载及阅读建议
目前互联网上没有太多的 Adaptive AUTOSAR 的学习资料,官方文档是一个很不错的途径.看过官方文档才发现,目前很多关于 Adaptive AUTOSAR 的文章都是官方文档的简化翻译,不如 ...
- Adaptive AUTOSAR 学习笔记 7 - 应用设计和 Manifest
本系列学习笔记基于 AUTOSAR Adaptive Platform 官方文档 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf 缩写 AP:AUTOSAR Adap ...
随机推荐
- 将 maven repo 部署到 Gitlab
为什么要将 maven repo 部署到 Gitlab 将 Maven artifacts 放在对应的项目仓库下,而不是专门再去建一个 Maven 仓库.这么做使用起来更方便,更易于管理. 借助 Gi ...
- [leetcode] 116. 填充同一层的兄弟节点
116. 填充同一层的兄弟节点 其实就是个二叉树的层次遍历 class Solution { public void connect(TreeLinkNode root) { if (root == ...
- python异步编程之asyncio
python异步编程之asyncio 前言:python由于GIL(全局锁)的存在,不能发挥多核的优势,其性能一直饱受诟病.然而在IO密集型的网络编程里,异步处理比同步处理能提升成百上千倍的效率, ...
- celery Django 简单示例
一.目录结构 二.创建worker文件夹 __init__.py # -*- coding:utf-8 -*-import osfrom celery import Celery, platforms ...
- App自动化测试之Appium环境安装(涉及雷电模拟器和真机)
1.安装Microsoft .NET Framework 4.5 及以上版本 2.安装Appium 官方网站地址:http://appium.io/ 我装了1.17.0版本 3.安装JDK 1.8及以 ...
- CVPR2019论文看点:自学习Anchor原理
CVPR2019论文看点:自学习Anchor原理 原论文链接:https://arxiv.org/pdf/1901.03278.pdf CVPR2019的一篇对anchor进行优化的论文,主要将原来需 ...
- TensorFlow分布式(多GPU和多服务器)详解
本文介绍有关 TensorFlow 分布式的两个实际用例,分别是数据并行(将数据分布到多个 GPU 上)和多服务器分配. 玩转分布式TensorFlow:多个GPU和一个CPU展示一个数据并行的例子, ...
- ARM NEON指令集优化理论与实践
ARM NEON指令集优化理论与实践 一.简介 NEON就是一种基于SIMD思想的ARM技术,相比于ARMv6或之前的架构,NEON结合了64-bit和128-bit的SIMD指令集,提供128-bi ...
- PyTorch神经网络集成技术
PyTorch神经网络集成技术 create_python_neuropod 将任意python代码打包为一个neurood包. create_python_neuropod( neuropod_pa ...
- 笔记-13-多线程 Thread方法 线程安全 生产者和消费者 死锁和阻塞 练习
题目1 编写程序,创建两个线程对象,一根线程循环输出"播放背景音乐",另一根线程循环输出"显示画面";要求: 1: 1个线程使用Runnable接口的匿名内部类 ...