1. 概述
近年来,自动驾驶新能源汽车比较火爆,AutoSAR
工程师也是极奇需缺,本专栏记录AutoSAR
学习过程。
2. 什么是AutoSAR
2.1 简易描述
AUTOSAR
就是Automotive Open System Architecture
的简称,中文翻译就是汽车开放系统架构。 将汽车电子控制单元(ECU
)的软件底层做了一个标准的封装。使得大家都能共用一套底层软件,只需要修改其中的一些参数,就可以匹配不同硬件,也可以匹配不同的应用层软件。如此之后,用户只需要专心负责应用层功能开发即可,底层都交给AutoSAR
工程师就行了更加容易理解但不是很准确的讲就是: “就是一套写的比较好的底层软件”。其实现了硬件驱动的封装(类似于STM32
的库),实现了操作系统的功能。用户只需要开发操作系统上层的软件应用即可(类似于基于安卓开发App
)
2.2 AutoSAR架构描述
首先我们来看一张整体的架构图,以后我们会在这张图上细分和深入,添加细节来补充完整。首先就能看出AutoSAR
主要分为3
个层级:应用软件层(AppL
),实时运行环境(RTE
)和基础软件层(BSW
)
Application Layer
):存放用户应用层代码的地方实时运行环境层(Runtime Environment
):提供应用层所需要的一些资源,同时将应用层和底层分离基础软件层(Basic Software
):这一层从图中就可以看出,比其它几层都庞大,它主要是将对硬件的操作封装成统一AutoSAR
标准的接口,供上层系统调用,需要将其封装到一个标准操作系统的状态才行硬件层(Hardware
):由硬件工程师设计的PCBA
3. AutoSAR层级介绍
3.1 应用软件层(APPL)
该层是由一个一个SWC
组成的,每个SWC
咱们可以理解为一个.c
文件,而整个应用软件层就是一个文件夹。如下图说明了对应关系,可以看出,这里的整个工程就是我们的AutoSAR
架构,而其中的AppL
、RTE
和BSW
都分别对应一个文件夹,而我们的SWC
组件就是一个一个的.c
文件(和.h
)
3.2 实时运行环境层(RTE)
什么是RTE
呢?将硬件层比做我们常用的PC
主机,BSW
层比作我们的Ubuntu
或者Windows
系统,AppL
就是QQ
、微信等应用程序,而RTE
就像是虚拟机(VM
)一样,兼容各个硬件平台,AppL
可以随意跑在上面。
3.3 基础软件层(BSW)
基础软件层又分为四大类,分别是如下描述:
硬件抽象层(MCAL
):可能用过STM32
的童鞋应该都知道库的概念,硬件抽象层又叫MCAL
,就是将芯片的寄存器操作都封装成一个AutoSAR
规定的统一的库Api
。就是说这套Api
是不同厂商都支持的,但是底层怎么实现,就是芯片厂商的事了。同时也有软件工具EB
,可以通过界面配置MCAL
功能ECU
抽象层:如果说MCAL
只封装了芯片,那么ECU
抽象层就是将硬件上所有的硬件都进行了封装。比如我们的控制器上有一个主芯片英飞凌的TC397
,还有采样电路,电源电路,CAN
电路等等。而MCAL
就是封装了芯片上有的功能。而ECU
抽象层就是将所有的这些都做一个统一的封装。所以不管硬件是如何实现的,这里封装后,也形成了统一的Api
服务层:这里有是更加高级的一层了,服务层里是包含操作系统(OS
)的。OS
将使用ECU
抽象层的Api
,再对上层暴露出服务接口,其实就是嵌入式实时操作系统(RTOS
)所作的工作。复杂驱动:又叫做CDD
,主要工作是将AutoSAR
未定义的一些功能封装起来,给应用层提供接口来调用这些功能。(简单说就是其他的概念) 4. AutoSAR工具链介绍
目前主流的主要是以下两种开发模式:
MATLAB + DaVinci
(国内主流,参考书籍有《基于AUTOSAR
规范的车用电机控制器软件开发》)MATLAB + ETAS
(博世和联电主要用这个,参考书籍有《AUTOSAR
规范与车用控制器软件开发》) 4.1 工具链介绍
这里主要介绍第一种国内主流的工具链:MATLAB + DaVinci
MATLAB
:主要是应用层做算法用的,比较方便实用DaVinci Developer
:主要用来搭建设计APPL
的框架架构DaVinci Configurator pro
: 主要用来配置BSW
和自动生成RTE
的 返回总目录