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
)
- (注意:标准AutoSAR工程与其有较大差异,这里只是做一个大致划分)
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
的
返回总目录
版权归原作者 嵌入式内核源码 所有, 如有侵权,请联系我们删除。