文章目录
前言
在汽车行业,技术的发展日新月异,其中最引人注目的就是汽车电子系统的发展。随着汽车电子化、智能化的趋势日益明显,汽车软件的重要性也日益凸显。在这个背景下,Autosar(Automotive Open System Architecture)应运而生,它为汽车电子系统提供了一个开放、标准化的软件架构。由于车载软件和重复利用和转移的发展,汽车电子和电气 (E/E) 系统日益复杂。该组织成立的初衷是为越来越复杂的汽车ECU软件建立一个标准化平台,以减少其设计复杂度,增加其灵活性,提高其开发效率,本文主要介绍了什么是AutoSAR、AutoSAR的原则及核心思想、AutoSAR的架构、以及AutoSAR的工具链。
一、什么是AutoSAR
AUTOSAR是Automotive Open System Architecture的缩写,即汽车开放系统架构。AUTOSAR是一家由汽车电子、半导体和软件行业的全球各家汽车制造商、供应商、服务提供商等公司组成的全球开发合作伙伴组,成立于2003年7月,其核心成员由德国宝马、戴姆勒及博世等9家公司构成;并联合推出了一个开放化的、标准化的汽车嵌入式系统软件架构规范。
AUTOSAR组织是这样介绍自己的
AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development partnership of vehicle manufacturers, suppliers, service providers and companies from the automotive electronics, semiconductor and software industry.
与传统的ECU软件架构相对比,AutoSAR的分成架构的高度的抽象对汽车嵌入式系统的软件和硬件系统进行解耦,大大提高了独立性,降低了他们之间的耦合性。
二、AUTOSAR原则及心思想
AUTOSAR提倡“在标准上合作,在实现上竞争”原则;
AUTOSAR核心思想是“统一标准,分散实现、集中配置”,即统一的开放平台、软件系统层次化模块化,降低应用与平台耦合性、统一格式的配置信息,集中配置生成系统;
一个汽车电子应用系统可包含多个相互关联的AUTOSAR组件。组件通过虚拟功能总线(VFB)提供标准通信机制与服务,实现平台无关性;
三、AutoSAR的架构
为了实现应用程序和硬件模块之间的分离,汽车电子软件架构被抽象成四层,如下图所示。由上至下依次为:应用层(Application Layer)、运行时环境(Run Time Environment,RTE)、基础软件层(Basic Software, BSW)以及微控制器(Microcontroller)。
应用软件层(Application Software Layer,ASW)
应用软件层(Application Software Layer,ASW)其包含若干个软件组件(Software Component,SWC),软件组件间通过端口(Port)进行交互。每个软件组件可以包含一个或者多个运行实体(Runnable Entity,RE),运行实体中封装了相关控制算法,其可由RTE事件(RTE Event)触发。
运行时环境(Runtime Environment,RTE)
运行时环境(Runtime Environment,RTE)作为应用软件层与基础软件层交互的桥梁,为软硬件分离提供了可能。RTE可以实现软件组件间、基础软件间以及软件组件与基础软件之间的通信。RTE封装了基础软件层的通信和服务,为应用层软件组件提供了标准化的基础软件和通信接口,使得应用层可以通过RTE接口函数调用基础软件的服务。此外,RTE抽象了ECU之间的通信,即RTE通过使用标准化的接口将其统一为软件组件之间的通信。由于RTE的实现与具体ECU相关,所以必须为每个ECU分别实现。
基础软件层(Basic Software Layer,BSW)
基础软件层(Basic Software Layer,BSW)又可分为四层,即服务层(Services Layer)、ECU抽象层(ECU Abstraction Layer)、微控制器抽象层(Microcontroller Abstraction Layer,MCAL)和复杂驱动(Complex Drivers)
(1)服务层
服务层(Services Layer)提供了汽车嵌入式系统软件常用的一些服务,其可分为系统服务(System Services)、存储器服务(Memory Services)以及通信服务(Communication Services)三大部分。提供包括网络通信管理、存储管理、ECU模式管理和实时操作系统(Real Time Operating System,RTOS)等服务。除了操作系统外,服务层的软件模块都是与ECU平台无关的。
(2)ECU抽象层
ECU抽象层(ECU Abstraction Layer)包括板载设备抽象(Onboard Devices Abstraction)、存储器硬件抽象(Memory Hardware Abstraction)、通信硬件抽象(Communication Hardware Abstraction)和I/O硬件抽象(Input/Output Hardware Abstraction)。该层将ECU结构进行了抽象,负责提供统一的访问接口,实现对通信、存储器或者I/O的访问,从而不需要考虑这些资源是由微控制器片内提供的,还是由微控制器片外设备提供的。该层与ECU平台相关,但与微控制器无关,这种无关性正是由微控制器抽象层来实现的。
(3)微控制器抽象层
微控制器抽象层(Microcontroller Abstraction Layer,MCAL)是实现不同硬件接口统一化的特殊层。通过微控制器抽象层可将硬件封装起来,避免上层软件直接对微控制器的寄存器进行操作。微控制器抽象层包括微控制器驱动(Microcontroller Drivers)、存储器驱动(Memory Drivers)、通信驱动(Communication Drivers)以及I/O驱动(I/O Drivers)
(4)复杂驱动层
由于对复杂传感器和执行器进行操作的模块涉及严格的时序问题,难以抽象,所以在AUTOSAR规范中这部分没有被标准化,统称为复杂驱动(Complex Drivers)。
四、AutoSAR的工具链
AutoSAR的开发工具及调试工具有很多,如:
MathWorks Simulink:一个用于AUTOSAR模型建模和仿真的工具,支持多种AUTOSAR版本和硬件平台。
Lauterbach TRACE32:一个用于AUTOSAR软件调试的工具,支持多种MCU和调试接口。
EB tresos Studio:一个用于AUTOSAR配置和代码生成的工具,支持多种AUTOSAR版本和硬件平台。
Vector CANoe:一个用于AUTOSAR通信协议测试和仿真的工具,支持多种通信协议和ECU。
Vector CANape:一个用于AUTOSAR应用程序调试和校准的工具,支持多种通信接口和ECU。
Tasking by Altium:一个用于AUTOSAR应用程序编译和调试的工具,支持多种MCU和编译器。
ETAS:一款用于AUTOSAR系统调试和测试的工具,支持多种MCU和总线协议。ETAS是Bosch旗下的一家汽车电子开发工具和测试系统提供商。
Davinci:一款用于AUTOSAR系统调试和测试的工具,支持多种MCU和总线协议。ETAS是Bosch旗下的一家汽车电子开发工具和测试系统提供商。
当前主流的组合有
1、Matlab + Davinci
2、Matlab + ETAS
SWC应用层主要使用Matlab开发,使用Simulink模型开发应用,优点在于生成代码,逻辑清晰,不易出出现误编码,缺点是开发周期大于手写代码。
BSW层主要是使用Davinci / ETAS配置BSW基础软件的服务层、ECU抽象层、以及部分手写的复杂驱动层和自动生成RTE。
MCAL微控制器抽象层主要使用EB tresos Studio来配置微控制器的抽象驱动层。
总结
AutoSAR的目标就是建议一套优秀的框架的软件代码,实现软硬件分离的分层设计,提高系统的整合能力,尤其标准化交互接口以及软件组件模型的定义提高了各层的软件复用能力,从而降低了开发成本,使得系统集成与产品推出的速度极大提升。同时使得汽车软件开发更加规范化、标准化、快速化、简洁化、经济化。