一、什么是 AUTOSAR?
AUTOSAR 是 Automotive Open System Architecture 的缩写,即汽车开放式系统架构。它是由奥迪、宝马、戴姆勒、福特、通用、飞利浦、博世、日产和沃尔沃等新一代汽车厂商联盟共同创建的一个汽车电子协会组织,致力于开发和推广一种汽车电子标准化的解决方案。
事实上,汽车已经变成一个全新的智能电子设备,包括硬件和软件在内的电子化程度日益提高,而传统的汽车系统难以跟上这些技术的发展,因此,产生了这种针对汽车电子系统标准化的需求。
通过引入 AUTOSAR 标准,汽车行业可以整合高质量、高安全性的汽车应用程序,提高汽车系统的互操作性、可扩展性和可维护性,从而降低开发成本和时间,实现在不同车型、不同厂商的车载电子设备中的软件和硬件互换。
二、AUTOSAR 标准框架
AUTOSAR 标准的总体架构被称为基础软件(BSW)。基础软件分为两个主要层次:MCAL 和 RTE。MCAL 提供了对微控制器硬件的访问,而 RTE 提供了应用程序和 MCAL 之间的接口。
1. MCAL 层
MCAL 是 AUTOSAR 中最底层的软件层。它包含了针对具体 MCU 的硬件驱动程序和低级别功能模块,包括 ADC、PWM、EEPROM、CAN 等。MCAL 负责提供硬件访问的 API,使高层软件可以通过 API 访问硬件。
例子:
void Pwm_Init(const Pwm_ConfigType* ConfigPtr); // 初始化 PWM
void Pwm_SetDutyCycle(Pwm_ChannelType ChannelId, uint16 DutyCycle); // 设置 PWM 占空比
Std_ReturnType Pwm_GetState(Pwm_ChannelType ChannelId, Pwm_StateType* StatePtr); // 获取 PWM 的当前状态
2. RTE 层
RTE 是应用程序和 MCAL 之间的接口。RTE 提供了一个抽象层,将基础软件(MCAL)和应用程序进行解耦,用于管理和协调访问该系统的所有软件组件。它为应用程序提供了 API,应用程序利用这些 API 来进行硬件访问,而不必关心底层硬件的细节。
例子:
Std_ReturnType Rte_Write_LED_Status(Std_ReturnType Value); // 将 LED 状态写入 RTE 管理的 SWC 状态缓存中
Std_ReturnType Rte_Read_Button_Status(Std_ReturnType *Value); // 从 RTE 管理的 SWC 状态缓存中读取按键状态
void Rte_IWrite_PWM_DutyCycle_Port(uint16 *Value); // 将占空比值写入 PWM 驱动程序中
三、AUTOSAR 软件构件
软件构件是 AUTOSAR 中软件的最小单元,它是一组函数和数据结构的集合,用于执行特定的功能。软件构件分为两种类型:基础软件构件和应用软件构件。
1. 基础软件构件
基础软件构件是 AUTOSAR 中的最底层,包括 MCAL 和 RTE。MCAL 和 RTE 的主要作用是协调系统资源和提供硬件接口,以支持更高层次的应用程序。
基础软件构件是由基础软件在制定 AUTOSAR 标准时定义的,所有不同的汽车厂商都必须遵循该标准,这样才能确保一个相同的基础软件架构。
2. 应用软件构件
应用软件构件提供软件服务和特定类型的功能。它是构建应用程序的关键部分。在 AUTOSAR 中,应用软件构件被视为 System-Wide Service(SWS)中的一个实现。根据应用程序的需要,汽车厂商可以根据 SWS 规定实现这些 SWS。
四、AUTOSAR 软件组件
软件组件是由一个或多个软件构件组成的最小逻辑单元。它既包括基础软件构件,也包括应用软件构件。软件组件负责执行具体的任务,它组成了一个完整的应用程序。
AUTOSAR 中,软件组件被定义为分层、模块化的实体。各个软件组件层是相互独立的,各自完成特定的功能。软件组件层次结构是从下到上依次包括虚拟功能组件(VFB)、原子软件组件(SWC)、复合软件组件(CSC)和应用软件组件(ASWC)。
1. 原子软件组件(SWC)
原子软件组件是 AUTOSAR 中最小的可部署软件单元,它只包含一个软件构件。每一个原子软件组件都具有一组输入引脚和一组输出引脚,可以和其他原子软件组件或复合软件组件连接起来,形成一个完整的应用程序。
2. 复合软件组件(CSC)
复合软件组件包含多个 SWC,它们可以是原子软件组件或者其他复合软件组件。复合软件组件通过内部通信和协调,执行整个系统的逻辑控制和数据处理任务。
五、AUTOSAR 中的通讯
在 AUTOSAR 中,通讯是不可避免的,因为软件组件往往需要互相通信。AUTOSAR 建立了一种通用的通讯机制,称之为 RTE。
RTE 作为应用程序和 MCAL 之间的接口,通过内部通信和协调,支持软件组件之间的通信。他提供了一种规范的机制,使组件之间的数据能够在运行时共享。在 RTE 中,数据从一个服务组件(例如 SWC)流向另一个服务组件,或者从一个服务组件流向驱动程序(例如 MCAL)。
RTE 的工作原理类似于软件总线,但是与软件总线不同的是,RTE 没有硬件约束,这使得 AUTOSAR 系统变得灵活且易扩展。
六、结语
本篇文章对 AUTOSAR 入门到精通系列讲解中的核心概念进行了简要的介绍,包括 AUTOSAR 的概念定义、标准框架、软件构件和软件组件、以及系统通讯机制。AUTOSAR 是一个复杂的系统,但是理解它的基本框架和核心概念对于开发高质量、高可靠性和可维护性的汽车应用程序至关重要。
如果您想深入了解 AUTOSAR,请参照官方标准文档和开源实现,并用实践来帮助您更好地理解 AUTOSAR 的复杂性。