[AutoSAR系列] 1.3 AutoSar 架构

依AutoSAR及经验辛苦整理,原创保护,禁止转载。

专栏 《深入浅出AutoSAR》

1. 整体架构

图片来源: AutoSar 官网

从官往图中可以看出autosar作为汽车ECU软件架构,是通过分层来实现软硬件隔离。就像大多数操作系统一样,通过分层实现软件架构的最通用化。

上面的框框有点零碎,我们试着来归纳下,抽象成下图。 可以更清晰看出它的层级关系。

为了实现应用程序和硬件模块之间的分离,AUTOSAR被抽象成四层:由上至下依次为:应用层(Application Layer)、运行时环境(Run Time Environment,RTE)、基础软件层(Basic Software,BSW)以及微控制器(Microcontroller)。

其中应用程序、实时运行环境(RTE)和基本软件(BSW) 是架构中三个软件层。作为汽车人, 因为有 AutoSar, 我们可以不受硬件改动影响,关注于软件层。

  • 应用软件层:逻辑代码,基本上是与硬件无关的。
  • 实时运行环境:应用程序的完整接口,软件组件之间的通信和通过RTE访问BSW。
  • 基础软件层:分为三个主要层次和复杂的驱动因素: 服务、ECU(电子控制单元)抽象和微控制器抽象。服务进一步划分为代表系统、内存和通信服务的基础设施的功能组。

后续仔细讲解每一个小的组件模块。

2. App应用层

ApplicationLayer实现具体的应用功能,由软件组件(SWC)组成,基于AutoSAR设计的SWC组件能够提高上层应用软件的复用性和灵活性。

每一个SWC相当于一个.c文件,SWC和SWC之间的通信又会通过Port(端口)实现,SWC内部又有多个runable(运行实体)组成。

3. RTE运行时环境

目的:使SWC与ECU的映射无关,隔离APP和BSW

功能:提供跨ECU /ECU内部的通信管理

实现:

1. RTE对Runnables的运行支撑(Runanable的触发条件)

2. RTE对Ports支撑(S/RC/S port的通信方式)

3. 实现SWC之间的通信

4. RTE对数据一致性管理

4. BSW基础软件

4.1 BSW 分层

BSW被抽象划分为部分:微控制器抽象层,ECU抽象层,服务层以及复杂驱动。

ServiceLayer:服务层

1. 提供给应用程序的服务,例如网络服务、内存管理和总线通信服务等

2. 诊断,非易失性内存管理,操作系统(OS),通讯

3. 内存和ECU管理

特别注意:CDD不属于BSW,它是独立Autosar架构的一些复杂驱动,直接通过CDD_SWC来操作硬件驱动。

ECUAbstraction Layer:ECU抽象层

提供统一的访问接口实现对通信、内存或者I/O的访问,从而无须考虑这些资源由微处理器提供还是由外部设备提供。

1. 使上层软件与ECU硬件设计无关

2. 包含ECU板上外部设备的驱动

3. 内部设备与外部设备的接口(I/O)

MCAL:Microcontroller Abstraction Layer 微控制器抽象层

1. 使上层软件与微控制器硬件无关,实现软硬件隔离。

2. 实现MCU中外设的驱动,可以用来访问内存、通信和I/O等

复杂驱动(CCD)

层跨越于微控制器硬件层和RTE之间,其主要任务是整合具有特殊目的且不能用MCAL进行配置的非标准功能模块,将该部分功能嵌入到AUTOSAR基础软件层中,从而实现处理复杂传感器以及执行器的特定功能和时间要求。

4.1 BSW 组件

如下图所示:

基础软件层的组件及其功能对应如下:

1)系统:提供标准化的规定(针对操作系统、定时器以及错误存储器)、ECU特定的服务(ECU状态管理、看门狗管理)和库函数;

2)内存:对内部和外部的内存(非易失性存储器)的访问入口进行标准化;

3)通信:对汽车网络系统、ECU通信系统以及ECU内部软件的访问入口进行标准化;

4)输入/输出:对传感器、执行器以及ECU外设的访问入口进行标准化;

同时,基础软件层模块按照类型可以分为驱动模块、接口模块、处理模块以及管理器。

1、驱动模块

驱动模块包含了控制和使用内部或者外部器件的功能,分为内部驱动和外部驱动。

1)内部驱动

内部器件位于微控制器(单片机)的内部,比如内部EEPROM、内部CAN控制器、内部ADC模块等。它主要是针对单片机内部器件资源的驱动程序,这部分驱动程序属于微控制器抽象层(MCAL)。

2)外部驱动

外部器件是指单片机外部的ECU硬件,比如外部EEPROM、外部看门狗、外部Flash等。外部驱动程序就是针对单片机外部硬件资源的驱动程序,属于ECU抽象层。外部驱动程序需要通过微控制器抽象层(MCAL)驱动程序来实现对外部器件的驱动。这种方法下AUTOSAR也支持嵌入在系统基础芯片(SBCs)中的组件,像收发器以及看门狗等。例如,使用SPI通信接口的外部EEPROM驱动程序是通过SPI总线处理程序来驱动外部EEPROM的。但是有一种例外,对于和内存映射相关的外部器件(如外部Flash存储器),其驱动程序是可以直接对微控制器进行存取访问的,所以这部分驱动程序属于微控制器抽象层(MCAL)。

2、接口模块

接口模块包含了对其次级模块进行抽象的功能,比如对一个特定功能的硬件进行抽象。它提供一个通用的接口函数(API)来访问一种特定的器件类型,且与该类型器件的数目无关,同时也与器件的具体硬件实现无关。

接口模块不会改变数据的内容。一般来说,接口属于ECU抽象层。例如,CAN通信系统的接口模块提供一个通用的接口函数来访问CAN通信网络,并且与ECU上CAN控制器的数目以及硬件实现无关。

3、处理模块

处理模块是一个专用的接口,它控制一个或多个客户端对一个或多个驱动程序进行并行、多重以及异步地访问。也就是说,它起着缓冲、队列、仲裁以及多路复用的功能。同时,处理程序也不会改变数据本身的内容。处理模块通常会并入驱动程序或是接口模块中(如SPIHandlerDriver、ADC Driver等)。

4、管理器

管理器为多重的客户端提供特定的服务。当单纯的处理程序不能满足对多重的客户端进行抽象时,就需要用到管理器来进行处理。除了处理功能外,管理器还可以对数据内容进行评估、改变或是适应数据内容。

一般而言,管理器属于服务层。例如,非易失性随机存储器(NVRAM)的管理器负责对内部或是外部存储设备进行并行的访问,如Flash、EEPROM存储器等。同时,它也可以完成分布式并且可靠的数据存储、数据校验以及默认值的规定等。

5. MCAL微控制器抽象层

MCAL就是硬件驱动的封装,比如CAN、ETH、SPI等外设驱动封装,和芯片息息相关。一般都是购买芯片原厂MCAL的软件包。

主要分为4大模块:

微控制器驱动

1) GPT:General Purpose Timer Driver,通用定时器,为操作系统或者其他基础软件模块提供计时功能

2)  Watchdog:看门狗驱动,除防止程序跑飞基本功能外,功能安全还使用看门狗进行程序流监控,比如监控程序执行时间、执行顺序等。

3) MCU:Microcontroller Unit Driver,基本的MCU设置:时钟、休眠、复位设置等。

4)  Core Test:芯片内核测试,提供上电或者周期检测两种方式,检测结果能触发中断。

存储器驱动

1) Flash Test & Ram Test:存储器测试驱动。

2)  Flash/Eep Driver:提供基本的存储器操作,如初始化,擦除,写入,读取等。

通信驱动

CAN、ETH、LIN、SPI等通讯外设的通信功能实现

I/O驱动

1) Port:所有端口的统称,包含了(DIO和配置成特有功能的io口)

2) ADC:模拟/数字转换器,采样模拟信号,转成数字信号。

3)  DIO:Digital Input/Output Driver,数字输入输出驱动,也就是配置成GPIO功能,实现通用的输入输出功能。

4) PWM:生成周期和频率可变的PWM方波

5)  ICU:Input Caputre Unit,输入捕获单元,捕获方波周期或者捕获方波电平持续时间。

6) OCU:Output Compare Unit,输出比较单元,基于定时器单元的比较模块。

参考文献

面包板社区浅论汽车电子行业的汽车开放系统架构AUTOSAR-汽车
汽车工程师谈技术AUTOSAR架构 - 知乎

Autosar Architecture (Learn from Scratch with Demo)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网络安全—自学笔记

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…

Spring Boot中RedisTemplate的使用

当前Spring Boot的版本为2.7.6&#xff0c;在使用RedisTemplate之前我们需要在pom.xml中引入下述依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><vers…

基于SSM的幼儿园管理系统

基于SSM的幼儿园管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatis工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 登录界面 管理员界面 摘要 基于SSM&#xff08;Spring、Spring MVC、MyBatis&#…

IDEA: 自用主题及字体搭配推荐

文章目录 1. 字体设置推荐2. 主题推荐3. Rainbow Brackets(彩虹括号)4. 设置背景图片 下面是我的 IDEA 主题和字体&#xff0c;它们的搭配效果如下&#xff1a; 1. 字体设置推荐 在使用 IntelliJ IDEA 进行编码和开发时&#xff0c;一个合适的字体设置可以提高你的工作效率和舒…

Fabric.js 图案笔刷

本文简介 带尬猴&#xff0c;我是德育处主任 Fabric.js 有图案画笔功能&#xff0c;这个功能可以简单理解成“刮刮卡”效果。 如果只是看 Fabric.js 文档可能还不太明白 图案画笔 PatternBrush 是如何使用。 本文将讲解如何配置这款画笔的基础属性。 图案画笔&#xff08;笔…

Kafka入门05——基础知识

目录 副本数据同步原理 HW和LEO的更新流程 第一种情况 第二种情况 数据丢失的情况 解决方案 Leader副本的选举过程 日志清除策略和压缩策略 日志清除策略 日志压缩策略 Kafka存储手段 零拷贝&#xff08;Zero-Copy&#xff09; 页缓存&#xff08;Page Cache&…

关于JAVA中字节码文件版本号、产品版本号及开发版本号的关系

目录 关于字节码版本对应关系清单关于字节码格式说明的资料关于这些版本号 关于字节码版本 以二进制打开字节码文件&#xff1a; 如上图中第5-8标识&#xff08;圈起来的&#xff09;的即字节码版本号 十六进制&#xff1a; 34 十进制&#xff1a; 52 jdk 8 对应关系清单 …

四、【常用的几种抠图方式三】

文章目录 钢笔工具抠图通道抠图蒙版抠图色彩范围抠图 钢笔工具抠图 钢笔工具抠图适合边缘比较硬的主体对象&#xff0c;因此适合需要精修而且边缘比较生硬的图片&#xff0c;钢笔工具操作比较多&#xff0c;对一般的新手来讲不是很友好&#xff0c;想要使用好钢笔工具需要经常…

5G与医疗:开启医疗技术的新篇章

5G与医疗&#xff1a;开启医疗技术的新篇章 随着5G技术的快速发展和普及&#xff0c;它已经在医疗领域产生了深远的影响。5G技术为医疗行业提供了更高效、更准确、更及时的通信方式&#xff0c;从而改变了医疗服务的模式和患者的体验。本文将探讨5G技术在医疗领域的应用场景、优…

JS问题:项目中如何区分使用防抖或节流?

前端功能问题系列文章&#xff0c;点击上方合集↑ 序言 大家好&#xff0c;我是大澈&#xff01; 本文约2300字&#xff0c;整篇阅读大约需要6分钟。 本文主要内容分三部分&#xff0c;第一部分是需求分析&#xff0c;第二部分是实现步骤&#xff0c;第三部分是问题详解。 …

CSS 基础知识-02

CSS 基础知识-01 1. flex布局2.定位3.CSS精灵4.CSS修饰属性 1. flex布局 2.定位 3.CSS精灵 4.CSS修饰属性

[③ADRV902x]: Digital Filter Configuration(接收端)

前言 本篇博客主要总结了ADRV9029 Rx接收端链路中各个滤波器的配置。配置不同的滤波器系数以及不同的参数&#xff0c;可以对输入的数字信号灵活得做decimation处理&#xff0c;decimation信号抽取&#xff0c;就是降低信号采样率的过程。 Receiver Signal Path 下图为接收端…

程序化广告系列之一---名词解释

基础 1、DSP&#xff1a;全称“Demand-Side Platform”&#xff0c;需求方平台&#xff0c;是为广告主、代理商提供一个综合性的管理平台&#xff0c;通过统一界面管理多个数字广告和数据交换账户。 2、SSP&#xff1a;SSP是Sell-Side Platform的缩写&#xff0c;即供应方平台…

Linux | 进程地址空间

目录 前言 一、初始进程地址空间 1、实验引入 2、虚拟地址空间 二、什么是进程地址空间 1、基本概念 2、深入理解进程地址空间 3、进程地址空间的本质 4、遗留问题解决 三、为什么要有进程地址空间 1、知识扩展 2、进程地址空间存在意义 3、重新理解挂起 前言 本…

Vue引入异步组件

defineAsyncComponent 函数&#xff1a;异步引入组件。 Suspense 标签&#xff1a;异步引入组件时&#xff0c;显示默认的内容。 异步引入组件的基本使用&#xff1a; 异步引入组件&#xff1a; import { defineAsyncComponent } from vue; const Child defineAsyncComponen…

没有电脑也不用担心,在Android设备上也可以轻松使用ppt

PowerPoint是制作幻灯片的好工具&#xff0c;无论是工作、学校还是个人使用。但有时你无法使用电脑或笔记本电脑&#xff0c;你必须在旅途中做演示。 这就是PowerPoint for Android派上用场的地方。它允许你在移动设备上创建、编辑和呈现幻灯片。以下是要遵循的步骤&#xff1…

【单例模式】饿汉式,懒汉式?JAVA如何实现单例?线程安全吗?

个人简介&#xff1a;Java领域新星创作者&#xff1b;阿里云技术博主、星级博主、专家博主&#xff1b;正在Java学习的路上摸爬滚打&#xff0c;记录学习的过程~ 个人主页&#xff1a;.29.的博客 学习社区&#xff1a;进去逛一逛~ 单例设计模式 Java单例设计模式 Java单例设计模…

031-从零搭建微服务-监控中心(一)

写在最前 如果这个项目让你有所收获&#xff0c;记得 Star 关注哦&#xff0c;这对我是非常不错的鼓励与支持。 源码地址&#xff08;后端&#xff09;&#xff1a;mingyue: &#x1f389; 基于 Spring Boot、Spring Cloud & Alibaba 的分布式微服务架构基础服务中心 源…

KMS在腾讯云的微服务实践助力其降本50%

背景介绍 KMS 是一家日本的游戏公司&#xff0c;主要经营游戏业务、数字漫画业务、广告业务、云解决方案业务等&#xff0c;出品了多款在日本畅销的漫画风游戏&#xff0c;同时有网络漫画专业厂牌&#xff0c;以内容创作为目标&#xff0c;拥有原创 IP 创作、游戏开发等多元化发…

第三篇:实践篇 《使用Assembler 实现图片任意切割功能》

实现原理&#xff1a; 共用一个texture、material、渲染状态等。紧通过修改vertex、uvs、indexes数据即可实现任意切割功能。 一、线段分割多边形&#xff0c;并分散多边形 线段分割多边形 已知多边形points&#xff0c;线段sp、ep。线段分割多边形得到两个多边形。 publi…