当前位置: 首页 > news >正文

【车载嵌入式开发】AutoSar架构入门介绍篇

【车载嵌入式开发】AutoSar架构入门介绍篇

AutoSar架构入门介绍篇

  • 【车载嵌入式开发】AutoSar架构入门介绍篇
    • 一.首先什么是AutoSar?
    • 二.AutoSar组织成立初衷
    • 三.Autosar成员有哪四类?
    • 四.Autosar的目标有哪些?
    • 五.Autosar如何提高软件质量?
    • 六.AutoSar的两种分类
    • 七.使用AutoSar能够带来的好处
      • 1.软硬件隔离
      • 2.提高团队开发效率
      • 3.软件复用性程度提高
    • 八.AutoSar的具体层次架构
      • 1.应用软件层
      • 2.RTE层
      • 3.BSW基础软件层
      • 4.MicroController层
    • 九.基础软件层BSW中的层次
      • 1.微控制器抽象层
      • 2.ECU抽象层
      • 3.服务层
      • 4.复杂驱动层CDD
    • 十.AUTOSAR的扩展性

一.首先什么是AutoSar?

汽车开放系统架构联盟(AUTomotive Open System ARchitecture,AUTOSAR)联合推出了一个开放化的、标准化的汽车嵌入式系统软件架构:AUTOSAR规范。
Autosar(AUTomotive Open System ARchitecture)就是汽车开放式系统架构。这是一个由整车厂,零配件供应商,以及软件、电子、半导体公司合起来成立的一个组织。
AUTOSAR也是一种开放的软件架构,需要汽车制造商、零部件供应商、芯片供应商及软件公司共同合作来实现该软件架构。简单来说AUTOSAR就是一套标准协议、软件架构。

二.AutoSar组织成立初衷

该组织成立于2003年7月,其核心成员由德国宝马、戴姆勒及博世等9家公司构成。在汽车行业,由于车载软件和重复利用和转移的发展,汽车电子和电气 (E/E) 系统日益复杂。该组织成立的初衷是为越来越复杂的汽车ECU软件建立一个标准化平台,以减少其设计复杂度,增加其灵活性,提高其开发效率。成立至今的近20年时间里,得到了越来越多的行业认可,目前成员已超过几百个。

三.Autosar成员有哪四类?

Autosar成员包括四类:
Core Parteners(核心成员)分别为:博世,大陆,大众,丰田,通用,PSA,福特,宝马,奔驰。
Premium Partners(高级成员)的年度会费:17,500€;年度贡献:1.5 FTE(FTE:全职人力工时)
Development Partners(开发成员)的年度会费:10,000€;
Associate Partners(一般成员)。

四.Autosar的目标有哪些?

该架构最重要的目标就是基本系统功能与函数接口的标准化。
这使得开发合作伙伴可以在车载网络里直接进行数据的整合、交换、传输功能。
使得整车E/E架构由传统的基于ECU的开发(ECU-based)转变为基于功能的开发(function-based)。

五.Autosar如何提高软件质量?

它通过高度的软件复用(re-use),减少相同/类似模块的开发来减少bug的产生,从而提高软件的成熟度。并且Autosar方法论与标准接口可以减轻ECU、系统集成的难易程度,提高软件质量。

六.AutoSar的两种分类

AUTOSAR目前分为两种:Classic Platform AUTOSAR和Adaptive Platform AUTOSAR,也称为CP和AP。通常我们提到的AUTOSAR一般指Classic AUTOSAR,它是用在众多汽车ECU上的AUTOSAR架构。而Adaptive AUTOSAR是随着近些年汽车信息娱乐系统的发展,在带有高级操作系统(Linux或QNX)的车载Soc上使用的一种AUTOSAR架构。

七.使用AutoSar能够带来的好处

它的核心思想是“统一标准、分散实现、集中配置”。
统一标准”是为了给各厂商提供一个开放的、通用的平台。
“分散实现”要求软件系统高度的层次化和模块化,同时还要降低应用软件与硬件平台之间的耦合;
“集中配置”是不同的模块可以由不同的公司去完成开发,但要想完成最终软件系统的集成,就必须将所有模块的配置信息以统一的格式集中整合并管理起来,从而配置生成一个完整的系统

1.软硬件隔离

在使用AUTOSAR之前的状态下,嵌入式软件和硬件层是很难做到完美分离的,软硬件之间的耦合性也很大。在使用AUTOSAR之后的状态,软硬件就已经被分隔开来。如果更换MCU,只需要变更AUTOSAR架构中的一部分即可(BSW,即基础软件),而处于上层的应用软件是可以直接复用的。

2.提高团队开发效率

AUTOSAR对不同模块之间的数据交互接口进行了统一定义(RTE),每个模块只需要按照接口标准定义去开发,当开发完成后可以直接进行联合调试,因为接口定义出现问题的概率是很低的。

3.软件复用性程度提高

由于软硬件之间进行了良好的隔离,以及模块之间的通信接口也是按标准开发的。一个开发好的软件可以直接根据新项目的需求取用相应的模块,移植到另一个项目上。由于上层的应用软件不会涉及具体的硬件,即使更换MCU应用层也无需做相应的更改。

八.AutoSar的具体层次架构

AutoSar由应用软件层、RTE和基础软件层,硬件控制层四层架构所组成。

1.应用软件层

应用软件层包含了汽车主机厂要求的和功能相关的软件。
它独立于硬件,软件组件之间的通信以及通过 RTE 访问 BSW。
由一个个的软件组件SWC(Software Component)组成,软件组件间通过端口(Port)进行交互。每个软件组件可以包含一个或者多个运行实体(Runnable Enity),运行实体里是一些实现的算法。

2.RTE层

RTE是应用层不同模块之间以及应用层和基础软件层之间进行交互的桥梁。
RTE提供基础的通信服务,支持Software Component之间和Software Component到BSW的通信(包括ECU内部的程序调用、ECU外部的总线通信等情况)。RTE使应用层的软件架构完全脱离于具体的单个ECU和BSW。

3.BSW基础软件层

基础软件层则包含MCU及其外围设备驱动、硬件抽象层以及为上层应用提供接口服务的服务层。

4.MicroController层

就是微控制层(ECU的硬件层)。它在基础软件层的下面。

九.基础软件层BSW中的层次

BSW可以再进一步划分为微处理器抽象层(MCAL)、ECU抽象层、服务层以及复杂驱动。

1.微控制器抽象层

微控制器抽象层(Microcontroller Abstraction Layer)简称MCAL。
MCAL其实就是MCU的驱动软件,对每个外设模块的操作进行了寄存器操作的封装,比如SPI的初始化只需要调用一个初始化函数即可,不用关心函数内部是怎么实现的。

2.ECU抽象层

ECU抽象层相比MCAL多了一些板上硬件资源的驱动,比如外部看门狗、片外EEPROM或FLASH等,如果要使用这些硬件资源直接调用ECU抽象层的接口即可

3.服务层

服务层是进一步的封装和抽象,一般包括OS、电源状态管理、整车网络通信、诊断服务、存储服务等。

4.复杂驱动层CDD

复杂驱动主要包含一些不在AUTOSAR标准规范里的一些硬件设备的驱动,比如电机驱动、一些比较复杂的传感器驱动等。

十.AUTOSAR的扩展性

AUTOSAR里面规定了很多软件模块,对这些模块的行为,配置参数,API等等都做了详细的规定,这些模块我们叫标准模块。但我们不可能规定完所有的东西,比如各式各样的传感器,执行器等等,它们太多太多。这些没有被包含在标准里面的东西我们可以通过CDD(Complex Device Drivers )/复杂设备驱动来实现。
这里需要强调的是,标准模块并不意味着就完全不能改了,很多时候我们发现即使标准模块规定了很多东西,看起来很完善,但是不同厂家也不可避免的有自己的特有的东西,所以这部分就不是标准的啦,所以AUTOSAR也允许进行扩展,这就是扩展性体现的地方。同样上面我们提到的CDD,其实也是一种扩展,因为它们都没有包含在标准里面嘛。

相关文章:

  • 【计算机视觉 | 目标检测】DETR风格的目标检测框架解读
  • 【面试专栏】Java8 - CompletableFuture,增强版Future
  • OSPF(开放式最短路径优先协议2)
  • cleanmymac最新2023版 mac清理软件CleanMyMac X4.12.5 中文版功能介绍
  • 【C语言学习】C语言初探
  • R语言处理表格数据(一)
  • Java开发环境配置
  • JS手写Promise(详细过程)
  • Postman接口测试之断言
  • C语言基础 — ( C语言的链表实例)
  • 社科院与杜兰大学金融管理硕士项目,承载着你读研时光的喜与乐
  • 再了解一点Ribbon的重试机制
  • MySQL5.7安装教程
  • Python 3.9 有什么新变化 - 新的特性
  • 为什么我们认为GPT是一个技术爆炸
  • JavaSE进阶之(十六)枚举
  • [数据结构]直接插入排序、希尔排序
  • 10个杀手级应用的Python自动化脚本
  • Python截图自动化工具
  • avue强大的upload表单项内置方法的使用,用这个可以配合$DialogForm.show()弹框完美使用上传控件
  • HTB-baby~
  • Docker使用DockerFile部署Go项目
  • 自己设计的网站,如何实现分页功能?(详细代码+注释)
  • O2O、C2C、B2B、B2C是什么意思
  • 带你一文透彻学习【PyTorch深度学习实践】分篇——加载数据集(Dataset类、DataLoader类核心参数讲解)附:实例源代码
  • 基于html+css的图片居中排列
  • Python通用验证码识别OCR库ddddocr的安装使用
  • 「无服务器架构」无服务器架构是应用程序的正确选择?需要考虑利弊。
  • Pycharm中修改git提交代码的账户和用户名【Git追溯注解,git blame】
  • 中介变量、调节变量与协变量