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