目录
一、到底什么是AutoSAR
1、大白话来讲
2、架构上来讲
应用软件层(APPL)
实时运行环境(RTE)
基础软件层(BSW)
3、工具链上来讲
二、AutoSAR的目标
一、到底什么是AutoSAR
1、大白话来讲
AUTOSAR 就是AUTomotive Open System ARchitecture的简称,中文翻译就是汽车开放系统架构
- 再说直白一点就是: 将汽车电子控制单元(ECU)的软件底层做了一个标准的封装。使得大家都能共用一套底层软件,只需要修改其中的一些参数,就可以匹配不同硬件,也可以匹配不同的应用层软件。如此之后,用户只需要专心负责应用层与一些复杂驱动功能开发即可,底层都交给AutoSAR工程师(基础软件部门)就行了。
- 更加容易理解但不是很准确的讲就是一套写的比较好的底层软件"。其实现了硬件驱动的封装(类似于STM32的库),实现了操作系统的功能。 用户只需要开发操作系统上层的软件应用即可(类似于基于安卓开发App)
2、架构上来讲
首先我们来看一张整体的架构图,以后我们会在这张图上细分和深入,添加细节来补充完整。首先就能看出AutoSAR主要分为3个层级:应用软件层 (AppL),实时运行环境(RTE)和基础软件层(BSW)
- 应用软件层主要就是用来存放我们自己的代码的地方
- 实时运行环境是提供应用层所需的资源,同时将应用层和底层隔离
- 基础软件层是将硬件做封装,一直封装到一个标准的操作系统的状态,以便上层可以标准化调用系统服务,这里又分几个部分,马上将会讲到
上图中应用层和BSW层都比其他层大一些,这是因为它们两还可以再做细分,接下来我们看下面这张图,我们将应用层和基础软件层做了细分, 就这几层现在做分别的讨论:
应用软件层(APPL)
该层是由一个一个SWC组成的,每个SWC咱们可以理解为一个.c文件,而整个应用软件层就是一个文件夹。用下面这张图应该很好的说明了对应关 系:
1. 图中右边的工程只是为了大家理解建立的一个样板,与Vector的实际工程还有很大区别,将会在后续章节中讲到
2. composition SWC和其他更加详细的说明会在SWC章节中讲到
3. 可以看出:这里的整个工程就是我们的AutoSAR架构,而其中的AppL、RTE和BSW都分别对应一个文件夹,而我们的SWC组件就是一个一个 的.c文件(和.h)
实时运行环境(RTE)
做一个不太恰当的比喻:把BSW比作我们的windows系统,AppL就是开发的应用软件,而RTE更像是一个虚拟机,将上层应用和底层操作系统隔绝 开的同时,又兼容了不同厂商开发的软件。(实际上更像是电话转接员的工作,这里在后面讨论)
基础软件层(BSW)
基础软件层又分为4大部分:
1. 硬件抽象层(MCAL):可能用过STM32的童鞋应该都知道库的概念,硬件抽象层又叫MCAL,就是将芯片的寄存器操作都封装成一个AutoSAR
规定的统一的库Api。就是说这套Api是不同厂商都支持的,但是底层怎么实现,就是芯片厂商的事了。同时也有软件工具EB,可以通过界面配置
MCAL功能
2. ECU抽象层(ECU Abstraction Layer):如果说MCAL只封装了芯片,那么ECU抽象层就是将硬件上所有的硬件都进行了封装。比如我们的控制器上有一个主芯片英飞凌的
TC275,还有采样电路,电源电路,CAN电路等等。而MCAL就是封装了芯片上有的功能。而ECU抽象层就是将所有的这些都做一个统一的封 装。所以不管硬件是如何实现的,这里封装后,也形成了统一的Api
3. 服务层(Service Layer):这里有是更加高级的一层了,服务层里是包含操作系统(OS)的。OS将使用ECU抽象层的Api,再对上层暴露出服务接口,其实就是 嵌入式实时操作系统(RTOS)所作的工作。
4. 复杂驱动(CDD Complex Device Drivers):又叫做CDD,主要工作是将AutoSAR未定义的一些功能封装起来,给应用层提供接口来调用这些功能。(简单说就是其他的概念)
3、工具链上来讲
目前主要是2大流派:
- MATLAB + DaVinci(国内主流,参考书籍有《基于AUTOSAR规范的车用电机控制器软件开发》)
- MATLAB + ETAS(博世和联电主要用这个,参考书籍有《AUTOSAR规范与车用控制器软件开发》)
- 其实国内也有一家做AutoSAR开发工具的,叫做恒润,可以稍微了解一下
这里我们就选国内常用的Matlab(MathWork) + DaVinci(Vector)来详细说明一下:
- Matlab:
大家应该都很熟悉了,主要是用Simulink做代码生成的,就是我们的应用层软件就需要Matlab来开发,当然手写也是可以的,不过弊端就很多 了,这个看预算和需求吧
- DaVinci Developer: 主要用来设计AppL的程序架构
- DaVinci Configurator pro: 主要用来配置BSW和自动生成RTE的
- EB Tresos: 主要用来配置MCAL的,可以兼容英飞凌和恩智浦的芯片
- Vector还有其他的一系列的工具:比如Canoe、Canape等,这里就暂时略过
二、AutoSAR的目标
目标这个东西不是重点,这里就不长篇大论了,我通过一句话的总结一下: 建立一套优秀的软件底层代码,使得各大主机厂都能通用,同时使汽车软件开发更加标准化、规范化、安全化、快速化和经济化