0%

Autosar MCAL初步认知

MCAL介绍

Autosar整体架构(Classic Autosar)

AUTOSAR体系结构在最高抽象级别上区分了三个软件层:应用软件层(ASW)、运行时环境(RTE)、运行在微控制器(Microcontroller)上的基础软基层(BSW)。

  • ASW(Application Software)层包含若干个软件组件(SWC),软件组件间通过端口(Port)进行交互。每个软件组件可以包含一个或者多个运行实体(RE),运行实体中封装了相关控制算法,其可由RTE事件(RTE Event)触发。
  • RTE(Run-Time Environment)层作为应用软件层与基础软件层交互的桥梁,为软硬件分离提供了可能。RTE可以实现软件组件间、基础软件间以及软件组件与基础软件之间的通信。RTE封装了基础软基层的通信和服务,使得应用层可以通过RTE接口函数调用基础软件的服务。除此之外,RTE抽象了ECU之间的通信,即RTE通过使用标准化的接口将其统一为软件组件之间的通信。由于RTE的实现与具体的ECU相关,所以必须为每个ECU分别实现。
  • BSW(Basic Software)层负责提供基础软件功能支持。

MCAL层所在位置

  • MCAL是MicroController Abstraction Layer(微控制器抽象层)的缩写。如下图所示,MCAL位于基本软件(Basic Software,BSW)的底层,是可以直接访问MCU寄存器和内部外设的底层驱动。这样划分的目的是使上层软件(如ECU抽象层、系统服务层等)独立于MCU硬件平台,保证上层软件的标准化和通用性。
  • ECU抽象层对MCAL所包含的驱动进行封装,同时它还包含片外设备(板上设备)的驱动。ECU抽象层提供访问各种设备的接口,不管这些设备的位置在哪里(是MCU内部还是MCU外部),也不管它们是如何与MCU进行连接的(端口还是串行通信)。它的任务是让上层软件(服务层)独立于ECU硬件设备。
  • 复杂驱动层跨越MCAL、ECU抽象层和服务层,是AUTOSAR标准之外的基础软件模块。一般是通过特定中断或复杂的MCU外设,用来实现传感器处理和执行器驱动,比如电机控制、电磁阀控制、位置检测等。复杂驱动高度依赖于MCU、ECU和应用软件。
  • 服务层是BSW的最高层,为上层的应用软件提供各种服务(存储、通讯、诊断、ECU状态管理等服务)。

MCAL内部划分

AUTOSAR规范根据MCU底层驱动功能的相似性,把MCAL抽象为6个驱动组,分别是微控制器驱动(Microcontroller Drivers)、存储器驱动(Memory Drivers)、加密驱动(Crypto Drivers)、无线通讯驱动(Wireless Communication Drivers)、通信驱动(Communication Drivers)、输入/输出驱动组(I/O Drivers)。