目录
AUTOSAR 就是AUTomotive Open System ARchitecture的简称,中文翻译就是汽车开放系统架构
首先我们来看一张整体的架构图,以后我们会在这张图上细分和深入,添加细节来补充完整。首先就能看出AutoSAR主要分为3个层级:应用软件层 (AppL),实时运行环境(RTE)和基础软件层(BSW)
上图中应用层和BSW层都比其他层大一些,这是因为它们两还可以再做细分,接下来我们看下面这张图,我们将应用层和基础软件层做了细分, 就这几层现在做分别的讨论:
该层是由一个一个SWC组成的,每个SWC咱们可以理解为一个.c文件,而整个应用软件层就是一个文件夹。用下面这张图应该很好的说明了对应关 系:
1. 图中右边的工程只是为了大家理解建立的一个样板,与Vector的实际工程还有很大区别,将会在后续章节中讲到
2. composition SWC和其他更加详细的说明会在SWC章节中讲到
3. 可以看出:这里的整个工程就是我们的AutoSAR架构,而其中的AppL、RTE和BSW都分别对应一个文件夹,而我们的SWC组件就是一个一个 的.c文件(和.h)
做一个不太恰当的比喻:把BSW比作我们的windows系统,AppL就是开发的应用软件,而RTE更像是一个虚拟机,将上层应用和底层操作系统隔绝 开的同时,又兼容了不同厂商开发的软件。(实际上更像是电话转接员的工作,这里在后面讨论)
基础软件层又分为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未定义的一些功能封装起来,给应用层提供接口来调用这些功能。(简单说就是其他的概念)
目前主要是2大流派:
这里我们就选国内常用的Matlab(MathWork) + DaVinci(Vector)来详细说明一下:
大家应该都很熟悉了,主要是用Simulink做代码生成的,就是我们的应用层软件就需要Matlab来开发,当然手写也是可以的,不过弊端就很多 了,这个看预算和需求吧
目标这个东西不是重点,这里就不长篇大论了,我通过一句话的总结一下: 建立一套优秀的软件底层代码,使得各大主机厂都能通用,同时使汽车软件开发更加标准化、规范化、安全化、快速化和经济化