1、AUTOSAR简介
AUTOSAR(AUTomotive Open System ARchitecture)
是一种为汽车软件开发提供开放化、标准化、可重用化的架构标准。它旨在解决汽车电子系统日益复杂和多样化的软件需求,以提高软件开发效率、降低开发成本、提高软件质量和可靠性。
2、AUTOSAR的分层架构
在AUTOSAR
分层架构中,自上而下分别:应用软件层(ASW
)、运行时环境(RTE
)、基础软基层(BSW
)和微控制器(Microcontroller
)。
2.1、应用软件层(ASW)
ASW(Application Software)
层是AUTOSAR
架构的一个重要组成部分,它包含若干个软件组件(SWC
),软件组件间通过端口(Port
)进行交互。每个软件组件可以包含一个或者多个运行实体(RE
),运行实体中封装了相关控制算法,其可由RTE
事件(RTE Event
)触发。
ASW
层主要的作用:
①、提供应用软件的运行环境:
ASW
层为上层应用软件提供一个标准的运行环境,包括硬件抽象层和基础软件组件。它隐藏了底层硬件的复杂性,使应用软件能够独立于具体的硬件平台运行。
②、实现软件模块的组合和配置:ASW
层允许开发人员将不同的软件模块组合在一起,并在实时系统中配置和管理这些软件模块。它提供了一个统一的界面和规范,使得不同供应商的软件模块可以无缝集成和协作。
③、提供软件组件通信机制:ASW
层定义了一套标准的接口和通信机制,用于不同软件组件之间的相互通信和数据交换。这种标准化的通信机制可以保证软件组件之间的互操作性和可靠性。
④、支持软件模块的自动化测试和验证:ASW
层提供了一套标准的测试工具和验证平台,用于对软件模块进行自动化测试和验证。这样可以提高软件开发的效率和质量,减少错误和缺陷。
2.2、运行时环境(RTE)
RTE(Run-Time Environment)
作为应用软件层与基础软件层交互的桥梁,为软硬件分离提供了可能。RTE
可以实现软件组件间、基础软件间以及软件组件与基础软件之间的通信。RTE
封装了基础软基层的通信和服务,使得应用层可以通过RTE
接口函数调用基础软件的服务。除此之外,RTE抽象了ECU
之间的通信,即RTE通过使用标准化的接口将其统一为软件组件之间的通信。由于RTE
的实现与具体的ECU
相关,所以必须为每个ECU
分别实现。
RTE层的主要功能包括:
①、通信管理:
RTE
层负责管理软件组件之间的通信,包括消息的传递和接收。它提供了一套API
,使得不同的软件组件可以通过消息传递方式进行通信。
②、数据管理:RTE
层负责管理软件组件之间的数据交换。它定义了数据类型和数据接口,确保软件组件能够正确地访问和共享数据。
③、事件触发和调度:RTE
层通过事件触发和调度机制,控制软件组件的执行顺序和时间。它可以根据事先定义的优先级和触发条件,自动触发和调度软件组件的执行。
④、错误处理:RTE
层可以监测和处理软件组件的错误。它提供了错误检测、错误处理和错误恢复机制,确保系统的稳定运行。
2.3、基础软件层(BSW)
BSW(Basic Software)
层是AUTOSAR
架构中的一部分,负责提供基础软件功能支持,包括以下几个方面的作用:
①、 任务调度和任务管理:
BSW
层负责管理和调度各种任务,并提供任务间的通信机制,以确保任务按照预定的优先级和时间要求运行。
②、内存管理:BSW
层负责管理车载电子系统中的内存分配和释放,以保证系统的稳定性和安全性。
③、设备驱动和通信协议:BSW
层提供设备驱动程序,用于与外设(如传感器、执行器等)进行通信,并实现与车辆网络通信协议(如CAN、LIN、FlexRay
等)的支持。
④、诊断和故障管理:BSW层负责实现车辆的诊断功能,包括故障检测、故障处理和故障通知等,以提高车辆的可靠性和安全性。
⑤、电源管理:BSW
层负责管理车辆电源系统,实现电源的初始化、控制和监视功能,以确保车辆电源的稳定和高效使用。
2.4、微控制器-MCAL层
在AUTOSAR
中,MCAL(Microcontroller Abstraction Layer)
是一个重要的软件层。它主要负责将硬件特定的底层驱动程序与上层应用程序分离开来,提供一个抽象的接口,使得应用程序可以独立于具体的硬件平台。
MCAL
层的作用包括以下几个方面:
①、硬件抽象:提供对硬件的抽象接口,通过统一的
API
,使得应用程序可以通过相同的方式访问不同的硬件平台,无需考虑底层硬件的差异。
②、低级驱动:MCAL
层提供了与底层硬件直接交互的驱动程序,包括对外设(如CAN、SPI、I2C
等)、时钟、中断等的控制。这些驱动程序封装了底层硬件的操作细节,提供了简单易用的API
供上层应用程序调用。
③、硬件配置:MCAL
层提供了对硬件参数的配置接口,包括时钟频率、中断优先级、IO
口配置等。通过MCAL
层,应用程序可以方便地配置硬件参数,无需直接操作底层寄存器。
④、故障诊断:MCAL
层还提供了故障诊断的功能。当硬件发生故障或异常时,MCAL
层可以通过相应的接口提供错误码或故障状态,方便上层应用程序进行故障处理。