汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2)

汽车基础软件AutoSAR自学攻略(三)-AutoSAR CP分层架构(2)

下面我们继续来介绍AutoSAR CP分层架构,下面的文字和图来自AutoSAR官网目前最新的标准R24-11的分层架构手册。该手册详细讲解了AutoSAR分层架构的设计,下面让我们来一起学习一下。

Introduction介绍
目的及投入

本文档的目的
分层软件架构描述了 AUTOSAR 的软件架构:
➢ 它以自上而下的方式描述了 AUTOSAR 软件的层次结构,并且
➢ 将基础软件模块映射到软件层,并且
➢ 展示了它们之间的关系。

这份文件侧重于概念分层软件架构的静态视图:

➢ 它没有指定具有详细静态和动态接口描述的结构化软件架构(设计)

​ ◼ 这些信息包含在基本软件模块自身的规范中。

Scope and Extensibility

AUTOSAR 的应用范围
AUTOSAR 专门用于汽车电子控制单元(ECU)。此类 ECU 具有以下特性:
➢ 与硬件(传感器和执行器)的强交互,
➢ 连接到诸如 CAN、LIN、FlexRay 或以太网等车辆网络,
➢ 计算能力和内存资源有限(与企业解决方案相比)的微控制器(通常为 16 位或 32 位),
➢ 实时系统,以及
➢ 从内部或外部闪存执行程序。

注意:在 AUTOSAR 的概念中,ECU 指的是一个微控制器加上外围设备以及相应的软件/配置。机械设计不在 AUTOSAR 的范围内。这意味着如果在一个外壳中布置了不止一个微控制器,那么每个微控制器都需要其自身的 AUTOSAR-ECU 实例描述。

AUTOSAR 可扩展性
AUTOSAR 软件架构是一种通用方法:
➢ 标准模块的功能可以扩展,同时仍保持合规,
◼ 但它们的配置必须在自动基本软件配置过程中予以考虑!
➢ 非标准模块可以作为复杂驱动程序集成到基于 AUTOSAR 的系统中,
➢ 不能添加更多层。

Top view

AUTOSAR 架构在最高抽象级别上区分了三个软件层:应用程序、运行时环境和在微控制器上运行的基础软件。

image-20250103214136028

Coarse view

AUTOSAR 基础软件在以下层中进一步划分:Services 服务、ECU Abstraction ECU 抽象、Microcontroller Abstraction 微控制器抽象和Complex Drivers 复杂驱动程序。

image-20250103214215069

详细视图

基本软件层进一步细分为功能组。服务的示例包括系统服务、内存服务和通信服务。

image-20250103214336699

Microcontroller Abstraction Layer 微控制器抽象

image-20250103215941855

微控制器抽象层是基础软件的最低软件层。它包含内部驱动程序,这些内部驱动程序是能够直接访问微控制器(µC)和内部外设的软件模块。

任务: 使更高的软件层独立于微控制器(µC)

特性:

​ 实现:取决于微控制器
​ 上层接口:标准化且与微控制器无关

ECU Abstraction Layer ECU 抽象层

image-20250103215958890

ECU 抽象层与微控制器抽象层的驱动程序相连接。它还包含外部设备的驱动程序。

它提供了一个 API,用于访问外设和设备,无论它们的位置(微控制器内部/外部)以及它们与微控制器的连接方式(端口引脚、接口类型)如何。

**任务:**使更高的软件层独立于 ECU 硬件布局

特性:

实现:微控制器(µC)独立,电子控制单元(ECU)硬件相关

上层接口:微控制器(µC)和电子控制单元(ECU)硬件独立

Complex Drivers Layer复杂驱动程序层

image-20250103220012304

复杂驱动程序层从硬件延伸到 RTE 。

任务: 提供集成特殊用途功能的可能性,例如设备驱动程序:
➢ 不在 AUTOSAR 中指定的;
➢ 具有非常高的时间限制的;
➢ 用于迁移目的等。

特性:

实现:可能取决于应用程序、微控制器(µC)和电子控制单元(ECU)硬件
上层接口:可能取决于应用程序、微控制器(µC)和电子控制单元(ECU)硬件

Services Layer服务层

image-20250103220022238

服务层是 BasicSoftware 的最高层,其与应用软件的相关性也适用:虽然对 I/O 信号的访问由 ECU 抽象层涵盖,但服务层提供:
➢ 操作系统功能
➢ 车辆网络通信和管理服务
➢ 内存服务(NVRAM 管理)
➢ 诊断服务(包括 UDS 通信、错误内存和故障处理)
➢ ECU 状态管理、模式管理
➢ 逻辑和时间程序流程监控(WdgManager)

任务: 为应用程序、RTE(实时环境)和基本软件模块提供基础服务。

特性:

实现:主要是微控制器(µC)和电子控制单元(ECU)硬件独立
上层接口:微控制器(µC)和电子控制单元(ECU)硬件独立

RTE Runtime Environment 实时环境

image-20250103220147709

RTE 是为应用软件(AUTOSAR 软件组件和/或 AUTOSAR 传感器/执行器组件)提供通信服务的一层。在 RTE 之上,软件架构风格从“分层式”转变为“组件式”。AUTOSAR 软件组件通过 RTE 与其他组件(ECU 内部和/或外部)和/或服务进行通信。

任务: 使 AUTOSAR 软件组件独立于到特定 ECU 的映射。

特性:

实施:电子控制单元(ECU)和特定应用(针对每个 ECU 单独生成)
上层接口:完全独立于电子控制单元

服务类型介绍

基础软件可细分为以下几类服务:

输入/输出(I/O)
对传感器、执行器和 ECU 板载外设的标准化访问
内存
对内部/外部内存(非易失性内存)的标准化访问
加密
对包括内部/外部硬件加速器在内的加密原语的标准化访问
通信
对以下内容的标准化访问:车辆网络系统、ECU 板载通信系统和 ECU 内部软件
车外通信·
对以下内容的标准化访问:车对 X 通信、车内无线网络系统、ECU 车外通信系统
系统
提供可标准化的(操作系统、定时器、错误存储器)和 ECU 特定的(ECU 状态管理、看门狗管理器)服务和库函数

驱动(内部)

驱动程序包含控制和访问内部或外部设备的功能。

内部设备位于微控制器内部。内部设备的示例有:

➢ 内部 EEPROM

➢ 内部 CAN 控制器

➢ 内部 ADC

内部设备的驱动程序被称为内部驱动程序,并且位于微控制器抽象层中。

驱动(外部)

外部设备位于微控制器之外的 ECU 硬件上。外部设备的示例有:

➢ 外部 EEPROM

➢ 外部看门狗

➢ 外部闪存

外部设备的驱动程序称为外部驱动程序,位于 ECU 抽象层中。它通过微控制器抽象层的驱动程序访问外部设备。通过这种方式,AUTOSAR 也支持集成在系统基础芯片(SBC)中的组件,如收发器和看门狗。

➢ 示例:具有 SPI 接口的外部 EEPROM 的驱动程序通过 SPI 总线的处理程序/驱动程序来访问外部 EEPROM 。

异常: 用于内存映射外部设备(例如外部闪存)的驱动程序可能会直接访问微控制器。这些外部驱动程序位于微控制器抽象层,因为它们依赖于微控制器。

Interface接口

一个接口(接口模块)包含了对在架构上位于其下方的模块进行抽象的功能。例如,一个从特定设备的硬件实现中抽象出来的接口模块。它提供了一个通用的 API,以访问特定类型的设备,而不受该类型现有设备数量的影响,也不受不同设备硬件实现的影响。

该接口不会更改数据的内容。

通常,接口位于 ECU 抽象层。

示例:CAN 通信系统的接口提供了一个通用的 API,可独立于 ECU 内 CAN 控制器的数量以及硬件实现方式(片上、片外)来访问 CAN 通信网络。

Handler处理

处理程序是一种特定的接口,用于控制一个或多个客户端对一个或多个驱动程序的并发、多重和异步访问。即它执行缓冲、排队、仲裁、复用。

处理程序不会更改数据的内容。

处理程序的功能通常被并入驱动程序或接口中(例如 SPI 处理程序驱动程序、ADC 驱动程序)。

Manager管理

在纯处理程序功能不足以从多个客户端进行抽象的所有情况下,都需要一个管理器为多个客户端提供特定服务。

除了处理程序功能外,管理器还可以评估、更改或调整数据的内容。

通常,管理器位于服务层

示例:NVRAM 管理器管理对内部和/或外部存储设备(如闪存和 EEPROM 存储器)的并发访问。它还执行分布式和可靠的数据存储、数据检查、提供默认值等操作。

Introduction to Libraries库函数介绍

image-20250104081110524

库是用于相关目的的函数集合。

库:
➢ 可由 BSW 模块(包括 RTE)、SW-C、库或集成代码调用
➢ 在相同保护环境中于调用者的上下文中运行
➢ 只能调用库
➢ 是可重入的
➢ 没有内部状态
➢ 不需要任何初始化
➢ 是同步的,即它们没有等待点

image-20250104081121298

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/952651.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MBTiles 爬取,读取,数据转换,发布

MBTiles :https://github.com/mapbox/mbtiles-spec/blob/master/1.3/spec.md 1.MBTiles是什么 MBTiles是一个在SQLite 数据库存储瓦片地图数据的标准,该标准的目的是即时传输和使用数据。 作为一个容器格式,MBTiles可以存储任何瓦片数据,…

机器学习笔记合集

大家好,这里是好评笔记,公主 号:Goodnote。本笔记的任务是解读机器学习实践/面试过程中可能会用到的知识点,内容通俗易懂,入门、实习和校招轻松搞定。 笔记介绍 本笔记的任务是解读机器学习实践/面试过程中可能会用到…

java_将数据存入elasticsearch进行高效搜索

使用技术简介: (1) 使用Nginx实现反向代理,使前端可以调用多个微服务 (2) 使用nacos将多个服务管理关联起来 (3) 将数据存入elasticsearch进行高效搜索 (4) 使用消息队列rabbitmq进行消息的传递 (5) 使用 openfeign 进行多个服务之间的api调用 参…

Gitlab-Runner配置

原理 Gitlab-Runner是一个非常强大的CI/CD工具。它可以帮助我们自动化执行各种任务,如构建、测试和部署等。Gitlab-Runner和Gitlab通过API通信,接收作业并提交到执行队列,Gitlab-Runner从队列中获取作业,并允许在不同环境下进行作…

SpringBoot项目实战(41)--Beetl网页使用自定义函数获取新闻列表

在Beetl页面中可以使用自定义的函数从后台新闻列表中获取新闻数据展示到页面上。例如我们可以从后台新闻表中获取新闻按照下面的格式展示&#xff1a; <li><a href"#">东亚非遗展即将盛妆亮相 揭起盖头先睹为快</a></li><li><a hre…

LayaAir3.2来了:性能大幅提升、一键发布安装包、支持WebGPU、3D导航寻路、升级为真正的全平台引擎

前言 LayaAir3的每一个分支版本都是一次较大的提升&#xff0c;在3.1彻底完善了引擎生态结构之后&#xff0c;本次的3.2会重点完善全平台发布相关的种种能力&#xff0c;例如&#xff0c;除原有的安卓与iOS系统外&#xff0c;还支持Windows系统、Linux系统、鸿蒙Next系统&#…

【力扣热题100】—— Day18.将有序数组转换为二叉搜索树

期末考试完毕&#xff0c;假期学习开始&#xff01; —— 25.1.7 108. 将有序数组转换为二叉搜索树 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵平衡二叉搜索树。 示例 1&#xff1a; 输入&#xff1a;nums [-10,-3,0,5,9] …

C++ Qt练习项目 QChar功能测试

个人学习笔记 代码仓库 GitCode - 全球开发者的开源社区,开源代码托管平台 新建项目 设计UI 1、拖入group box去掉名字 2、拖入2个LineEdit 3、拖入两个Label 4、拖入两个PushButton 5、点栅格布局 1、拖入GroupBox 2、拖入4个PushButton 3、点栅格布局 1、拖入GroupBo…

保证Mysql数据库到ES的数据一致性的解决方案

文章目录 1.业务场景介绍1.1 需求分析1.2 技术实现方案 2.业界常用数据一致性方案分析2.1 同步双写方案2.2 MQ异步双写方案2.3 扫表定期同步方案2.4 监听binlog同步方案 1.业务场景介绍 1.1 需求分析 某知名的在线旅游平台&#xff0c;在即将到来的春季促销活动之前&#xff…

初学stm32 --- DAC模数转换器工作原理

目录 什么是DAC&#xff1f; DAC的特性参数 STM32各系列DAC的主要特性 DAC框图简介&#xff08;F1/F4/F7&#xff09; 参考电压/模拟部分电压 触发源 关闭触发时(TEN0)的转换时序图 DMA请求 DAC输出电压 什么是DAC&#xff1f; DAC&#xff0c;全称&#xff1a;Digital…

《HTTP协议与内外网划分:网络世界的基石知识》

http协议与内外网的划分 http协议的简介 HTTP&#xff08;超文本传输协议&#xff09;是互联网上应用最广泛的一种网络协议&#xff0c;用于从服务器传输超文本&#xff08;如HTML&#xff09;到本地浏览器的传输协议。以下是关于HTTP协议的简介&#xff1a; HTTP协议的基本…

二叉树层序遍历 Leetcode102.二叉树的层序遍历

二叉树的层序遍历相当于图论的广度优先搜索&#xff0c;用队列来实现 &#xff08;二叉树的递归遍历相当于图论的深度优先搜索&#xff09; 102.二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右…

特制一个自己的UI库,只用CSS、图标、emoji图 第二版

图&#xff1a; 代码&#xff1a; index.html <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>M…

12工具篇(D3_Lombok)

目录 一、基本介绍 二、Lombok使用说明 1. 基本介绍 2. 安装插件 IDEA在线安装Lombok插件 IDEA离线安装Lombok插件 3. 引入依赖坐标 4. Lombok注解功能说明 NonNull Getter&Setter Cleanup ToString EqualsAndHashCode Constructor RequiredArgsConstructor …

STM32如何测量运行的时钟频率

前言 环境&#xff1a; 芯片&#xff1a;STM32F103C8T6 Keil&#xff1a;V5.24.2.0 一、简介STM32F103C8T6的时钟源 ①HSI 内部高速时钟,RC振荡器&#xff0c;频率为8MHz&#xff0c;精度不高。②HSE 外部高速时钟,可接石英/陶瓷谐振器&#xff0c;频率范围为4MHz~16MHz&…

【物流管理系统 - IDEAJavaSwingMySQL】基于Java实现的物流管理系统导入IDEA教程

有问题请留言或私信 步骤 下载项目源码&#xff1a;项目源码 解压项目源码到本地 打开IDEA 左上角&#xff1a;文件 → 新建 → 来自现有源代码的项目 找到解压在本地的项目源代码文件&#xff0c;点击确定&#xff0c;根据图示步骤继续导入项目 查看项目目录&#xff…

时序数据库InfluxDB—介绍与性能测试

目录 一、简述 二、主要特点 三、基本概念 1、主要概念 2、保留策略 3、连续查询 4、存储引擎—TSM Tree 5、存储目录 四、基本操作 1、Java-API操作 五、项目中的应用 六、单节点的硬件配置 七、性能测试 1、测试环境 2、测试程序 3、写入测试 4、查询测试 一…

探索数据存储的奥秘:深入理解B树与B+树

key value 类型的数据红黑树&#xff08;最优二叉树&#xff0c;内存最优&#xff09;&#xff0c;时间复杂度&#xff1a;O&#xff08;logn&#xff09;,调整方便&#xff1b;一个结点分出两个叉B树一个节点可以分出很多叉数据量相等的条件下&#xff1a;红黑树的层数很高&am…

element ui前端小数计算精度丢失的问题如何解决?

文章目录 前言一、什么是精度丢失&#xff1f;产生精度丢失的原因如何避免或减少精度丢失的影响 二、实际项目开发实例举例以项目预算模块为例如何解决精度丢失 总结 前言 在《工程投标项目管理系统》项目开发中工程项目预算、成本管理、财务管理等模块的开发中不可避免的要和…

小程序textarea组件键盘弹起会遮挡住输入框

<textarea value"{{remark}}" input"handleInputRemark" ></textarea> 如下会有遮挡&#xff1a; 一行代码搞定 cursor-spacing160 修改后代码 <textarea value"{{remark}}" input"handleInputRemark" cursor-spacin…