[AutoSAR系列] 1.3 AutoSar 架构

news2024/12/24 2:01:44

依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.coloradmin.cn/o/1133336.html

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

相关文章

Linux系统编程_线程:线程、互斥量、条件变量

1. 线程概述(与进程的区别及线程的优势)(437.1) Linux多线程编程初探 https://www.cnblogs.com/xiehongfeng100/p/4620852.html 进程与线程 典型的 UNIX/Linux 进程可以看成只有一个控制线程:一个进程在同一时刻只做…

低概率Bug,研发敷衍说复现不到

测试工作中,经常会遇到一些低概率出现的问题,如果再是个严重问题,那测试人员的压力无疑是很大的,一方面是因为低概率难以复现,另一面则是来自项目组的压力。 如何在测试时减少此类问题的重复投入,我的思考如…

I/O设备的概念和分类,I/O控制器

文章目录 1.什么是I/O设备2.按使用特性分类1.人机交互类外部设备2.存储设备3.网络通信设备 3.按传输速率分类1.低速设备:2.中速设备:3.高速设备: 4.按信息交换的单位分类1.块设备:2.字符设备: 5.I/O设备的机械部件6.I/O设备的电子部件(I/O控制器)1.接收和…

Python实现双目标定、畸变矫正、立体矫正

一,双目标定、畸变矫正、立体矫正的作用 双目目标定: 3D重建和测距:通过双目目标定,您可以确定两个摄像头之间的相对位置和朝向,从而能够根据视差信息计算物体的深度,进行三维重建和测距。姿态估计&#xf…

【ROS入门】机器人系统仿真——相关组件以及URDF集成Rviz

文章结构 相关组件URDF(Unified Robot Description Format)——创建机器人模型Gazebo——搭建仿真环境Rviz(ROS Visualization Tool)——显示机器人各种传感器感知到的环境信息 URDF集成RvizURDF相关语法robotlinkjoint URDF优化——xacro相关语法属性与算数运算宏文件包含 实操…

GD32_定时器输入捕获波形频率

GD32_定时器输入捕获波形频率(多通道轮询) 之前项目上用到一个使用定时器捕获输入采集风扇波形频率得到风扇转速的模块,作为笔记简单记录以下当时的逻辑结构和遇到的问题,有需要参考源码、有疑问或需要提供帮助的可以留言告知 。…

怎么防止公司终端电脑文件资料、设计图纸外泄?

PC营销页: https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 天锐绿盾防泄密软件主要通过以下几种方式来防止公司设计图纸泄露: 透明加密:天锐绿盾采用透明加密技术,对设计图纸进行加密。这种加密方…

护眼灯台灯哪个牌子好?五款公认最专业护眼台灯推荐

今天跟大家聊聊现在热门的灯具,护眼台灯。目前的护眼台灯市场水很深,有很多不符标准、不适宜学习用光的护眼台灯,以低价吸引大家,在市面上热销,甚至销量非常高。其实这类产品在照度、光衰弱等多项核心参数上根本没有进…

p11 第63题 请设计一个判断字母序列是否对称的算法 桂林电子科技大学015年 数据结构(c语言代码实现)

本题代码如下 int symmetry(linklist* L)//判断循环双链表是否对称 {lnode* p (*L)->next, * q (*L)->prior;while (p ! q && q->next ! p){if (p->data ! q->data)return 0;else{p p->next;q q->prior;}}return 1; } 完整测试代码 #inclu…

快速排序(c语言代码实现)

交换排序:快速排序(不稳定的排序) 快速排序(Quick Sort)是一种常见的排序算法,它采用分治法的思想,对待排序序列进行划分,使得划分出的子序列可以分别进行排序,最终使整…

Python OpenCV剪裁图片并修改对应的Labelme标注文件

Python OpenCV剪裁图片并修改对应的Labelme标注文件 前言前提条件相关介绍实验环境剪裁图片并修改对应的Labelme标注文件代码实现 前言 由于本人水平有限,难免出现错漏,敬请批评改正。更多精彩内容,可点击进入Python日常小操作专栏、OpenCV-P…

RAG之微调垂域BGE的经验之谈

文章目录 前言数据格式部分代码训练参数接下来的尝试总结 前言 随着大模型的爆火,很多垂域行业都开始使用大模型来优化自己的业务,最典型的方法就是RAG(检索增强生成)了。简单来说就是利用检索技术,找出与用户问题相关…

一、PHP环境搭建[phpstorm]

一、安装 1.php编写工具 地址:https://www.jetbrains.com/phpstorm/download/#sectionwindows 图示: 2.php环境 解释:建议使用phpstudy进行安装,安装较为简单 链接:https://www.xp.cn/ 图示: 二、第…

四、W5100S/W5500+RP2040树莓派Pico<TCP Server数据回环测试>

文章目录 1. 前言2. 协议简介2.1 简述2.2 优点2.3 应用 3. WIZnet以太网芯片4. TCP Server数据回环测试4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 测试现象 5. 注意事项6. 相关链接 1. 前言 在计算机网络中,TCP Server是不可或缺的角色,它…

APP逆向基础(APK流程)

APK的基本结构 Android体系结构和APK基本结构-CSDN博客 APK 打包流程 【Android 安装包优化】APK 打包流程 ( 文件结构 | 打包流程 | 安装流程 | 安卓虚拟机 )_adnroid 安装包优化,打指定资源_韩曙亮的博客-CSDN博客 APK安装流程

Linux下根目录都包含什么? 每个文件什么作用?

bin: binary, 二进制文件目录, 存储了可执行程序, 系统的命令对应的可执行程序都在这个目录中 sbin: super binary, root用户使用的一些二进制可执行程序 home: 存储了普通用户的家目录,家目录名和用户名相同 opt: 第三方软件的安装目录 (交叉编译等…

【tio-websocket】9、服务配置与维护—TioConfig

场景 我们在写 TCP Server 时,都会先选好一个端口以监听客户端连接,再创建N组线程池来执行相关的任务,譬如发送消息、解码数据包、处理数据包等任务,还要维护客户端连接的各种数据,为了和业务互动,还要把这些客户端连接和各种业务数据绑定起来,譬如把某个客户端绑定到一…

2001-2021年省、上市公司五年规划产业政策整理代码+匹配结果

2001-2021年省、上市公司五年规划产业政策整理代码匹配结果 1、时间:2001-2021年 2、来源:整理自wind、国民经济和社会发展五年规划纲要 3、指标: 上市公司数据指标: 国家代码、证券代码、证券简称、公司全称、公司英文全称、…

运行 Python 脚本/代码的几种方式

哈喽大家好,我是咸鱼 我们知道,python 脚本或者说 python 程序其实是一个包含了 python 代码的文件。要让它们实现特定功能,我们需要知道该如何运行(run)它 通过运行 python 代码,我们可以验证脚本/程序是…

Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (三)

这是继之前文章: Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (一) Elasticsearch:使用 Open AI 和 Langchain 的 RAG - Retrieval Augmented Generation (二&…