简介
AUTOSAR(AUTomotive Open System ARchitecture)是一种面向汽车电子系统的软件架构标准。AUTOSAR为汽车电子系统提供一种开放式的软件架构标准,以促进汽车电子系统的可重用性、互操作性和可扩展性。它包括一系列的规范和标准,涉及汽车电子系统的各个方面,如软件架构、通信、诊断、安全等。
AUTOSAR的主要目标是提高汽车电子系统的开发效率和质量,以及降低开发成本。它可以使汽车制造商和供应商在开发汽车电子系统时更加灵活和高效,从而加速新产品的上市和提高产品质量。
AUTOSAR的核心是一个分层的软件架构,包括应用层、运行时环境层、基础软件层和硬件抽象层等。它还定义了一些通信协议、诊断协议和安全机制等,以保证汽车电子系统的安全性和可靠性。
总之,AUTOSAR为汽车电子系统提供了一种开放式的软件架构标准,可以提高汽车电子系统的开发效率和质量,降低开发成本,并促进汽车电子系统的可重用性、互操作性和可扩展性。
AUTOSAR的软件架构
汽车电子软件架构被抽象成四层分别为:应用层(Application Layer)、运行时环境(Run Time Environment,RTE)、基础软件层(Basic Software,BSW)以及微控制器(Microcontroller)
AUTOSAR软件架构层次的作用如下:
- 应用层:应用层是最高层,它包含了汽车电子系统的应用软件,这些软件可以是从多个供应商获取的,也可以是自己开发的。应用层的主要任务是提供功能和服务。
- 运行时环境层:运行时环境层提供了一个运行环境,包括操作系统和一些运行时库,以支持应用程序的运行。这一层还定义了一些标准接口,用于应用层和基础软件层之间的通信。
- 基础软件层:基础软件层提供了一些基础软件模块,包括通信协议、诊断协议、内存管理、定时器等,以支持运行时环境层和应用层的功能实现。基础软件层的主要任务是提供可重用性和互操作性。
- 硬件抽象层:硬件抽象层是最底层,它提供了一个硬件抽象层次,使得汽车电子系统的软件可以与硬件独立。硬件抽象层的主要任务是提供硬件相关的抽象和访问接口。
AUTOSAR基础软件层进一步拆分四部分:
微控制器抽象层,ECU抽象层,服务层以及复杂驱动。
AUTOSAR基础软件层各层次的作用如下:
- 微控制器抽象层(MCAL):MCAL层提供了与微控制器硬件无关的软件接口,使得上层应用程序能够以统一的方式访问硬件资源,而不需要了解底层硬件的细节。MCAL层包含了一些硬件抽象接口,例如通用IO口、定时器、ADC、SPI等,这些接口能够方便地控制微控制器的硬件资源。
- ECU抽象层(ECU Abstraction Layer):ECU抽象层是在MCAL层之上的一个抽象层,它提供了一些ECU硬件资源的抽象接口,例如CAN总线、LIN总线、FlexRay总线等。ECU层主要负责与外部通信,以及与其他ECU共享数据。
- 服务层(Service Layer):服务层提供了一些常用的服务和功能,例如定时、报警、内存管理、任务管理、通信管理等。服务层是一个比较底层的层次,它提供了很多基础功能,为上层应用程序提供了便利。
- 复杂驱动(Complex Driver):复杂驱动层是指一些与硬件有关的复杂驱动程序,例如CAN驱动、FlexRay驱动、以太网驱动等。这些驱动程序需要与硬件密切配合,实现数据的传输和控制。
总体来说,这四个部分共同构成了基础软件层,为上层应用程序提供了统一的接口和功能,使得应用程序能够更加方便地访问硬件资源,提高了软件的可重用性和可维护性。
AUTOSAR基础软件层划分为功能组
服务层Service Layer说明:
服务层来源3个不同部分:
◆通信服务
通信服务communication services是一组车辆网络通信模块(CAN、LIN、FlexRay、MOST)。他们通过通信硬件抽象communication hardware abstraction与通信驱动communication drivers进行交互。
该模块提供以下功能:
・为各种应用和车辆网络的通信提供统一接口;
・为网络管理提供统一服务;
・为诊断通信提供车辆网络的统一接口;
・隐藏协议和来自应用的消息特性
◆存储服务
存储服务负责管理非挥发数据(从不同存储驱动进行读/写)。NVRAM管理提供RAM镜像为应用层用作的数据接口,以便快速访问读。功能如下:
・利用统一方法为应用层提供非挥发数据
・抽取存储器的位置及特性
・为非挥发数据管理提供机制,如保存、装载、校验和保护、核实、可靠保存等。
◆系统服务
系统服务的功能可以被所有层次使用。例如实时操作系统、错误管理及库(CRC、插件)。这些服务依赖μC(如OS)、ECU硬件及依赖应用(ECU状态管理、DCM)或硬件及独立于μC,为应用和基本软件模块提供基本服务。
ECU抽象层ECU Abstraction Layer说明
ECU抽象层被分为4部分:
◆I/O Hardware Abstraction
I/O硬件抽象模块抽取外设I/O设备(芯片或面板)的位置和ECU硬件分层(μC管脚连接和信号转变)。I/O硬件抽象并不提取传感器/执行器。通过I/O信令接口访问不同的I/O设备。功能如下:
・I/O信令与ECU硬件的连接(电流、电压、频率);
・为较高的软件层隐藏ECU硬件和布局特性
◆Communication Hardware Abstraction
通信硬件抽象层抽取通信控制器的位置和ECU硬件布局。对所有通信系统必须有一个指明的通信硬件抽象(LIN、CAN、MOST、FlexRay)。例如,ECU有一个带有2个内部CAN信道的微控制器和一个附加的带有4个CAN控制器的ASIC面板。CAN-ASIC通过SPI与微控制器连接。
通过总线指定的接口访问通信驱动(如CAN接口)。意味着访问CAN控制器不考虑它是否在微控制器内部、外部或是否通过SPI连接。
・提供相等的装备访问总线信道而不需要考虑其位置(芯片上/面板上)。
◆Memory Hardware Abstraction
存储硬件抽象模块提取出外部存储设备的位置(芯片或面板)及ECU硬件布局。如:通过等价结构(equal mechanism)访问芯片EEPROM和外部EEPROM设备。通过存储器指定的接口(如EEPROM接口)可以访问memory驱动。
・提供等价结构来访问内部((on-chip)和外部(on-board)存储设备。
◆Onboard Device Abstraction
面板设备抽象包括ECU面板设备驱动,它不能向系统基本芯片、外部看门狗那样被当做传感器或执行器。这些设备通过μC抽象层访问ECU面板设备。
・提取ECU指定的面板设备
★复杂驱动
复杂驱动可以直接访问MCU,以实现一些复杂的传感器和控制器操作,比如喷油控制、曲轴信号采集等。复杂驱动重要的意义有:首先,可以用于实现AUTOSAR不支持或未标准化的硬件驱动,其次,可以作为已存在的应用程序向AUTOSAR过度的接口。
Microcontroller Abstraction Layer说明
微控制器抽象层被分成4部分:
◆I/O驱动
驱动模拟和数字I/O(如:ADC、PWM、DIO)
◆通信驱动
驱动ECU面板(如SPI、I2C)和车辆通信(如CAN)、OSI-Layer:数据链路层部分。
◆内存驱动
驱动芯片内存设备(内部Flash、内部EEPROM)和内存映射的外部存储设备(如外部Flash)。
◆微控制器驱动
驱动内部设备(如看门狗、时钟单元)并具有直接访问μC的功能(如:RAM test、Core test)。
autosar 22-11版本功能组如下变化