AUTOSAR基础软件层的结构主要由四部分组成,即微控制器抽象层(Microcontroller Abstraction Layer,MCAL)、ECU抽象层(ECU Abstraction Layer)、服务层(Service Layer)以及复杂驱动(Complex Driver)。各部分在AUTOSAR基础软件层的位置如下图所示。
其中,MCAL包含了与硬件相关的驱动程序,可以用来访问内存、通讯和I/O等;ECU抽象层负责提供统一的访问接口实现对通信、内存或者I/O的访问;服务层提供各种类型的后台服务,如网络服务、内存管理和总线通信服务等,且操作系统也位于该层中。
AUTOSAR基础软件层主要用于提供基础软件服务,包括标准化的系统功能以及功能接口,并且由一系列的基础服务软件组件构成,包括系统服务(System Service)、存储器服务(Memory Service)、通信服务(Communication Service)等,如下图所示。
基础软件层的组件及其功能分别为:
1)系统(System):提供标准化的规定(针对操作系统、定时器以及错误存储器)、ECU特定的服务(ECU状态管理、看门狗管理)和库函数;
2)内存(Memory):对内部和外部的内存(非易失性存储器)的访问入口进行标准化;
3)通信(Communication):对汽车网络系统、ECU通信系统和ECU内部软件的访问入口进行标准化;
4)输入/输出(I/O):对传感器、执行器以及ECU外设的访问入口进行标准化;
基础软件层的模块按照类型分为驱动模块、接口模块、处理模块和管理器,各个模块的功能分别是:
1、驱动模块
驱动模块包含了控制和使用内部和外部器件的功能,分为内部驱动和外部驱动。
1)内部驱动
内部驱动位于微控制器的内部,比如内部EEPROM、内部CAN控制器、内部ADC模块等。
内部驱动程序就是针对微控制器内部器件资源的驱动程序,因此该部分驱动程序属于微控制器抽象层(MCAL)。
2)外部驱动
外部器件指的是微控制器外部的ECU硬件,如外部EEPROM、外部看门狗、外部Flash等。外部驱动程序就是针对微控制器外部硬件资源的驱动程序,因此属于ECU抽象层。外部驱动程序需要通过微控制器抽象层(MCAL)驱动程序来实现对外部器件的驱动。
2、接口模块(Interface)
接口模块包含了对其次级模块进行抽象的功能,比如对一个特定功能的硬件进行抽象。它提供一个通用的接口函数来访问一种特定的器件类型,且与该器件类型的数目无关,同时也与器件的具体硬件实现无关。接口模块不会改变数据的内容,一般来说,接口模块属于ECU抽象层。
3、处理模块(Handle)
处理模块作为专用接口,其控制着一个或多个客户端对一个或多个驱动程序的并行、多重和异地访问。也就是说,它起着缓冲、队列、仲裁以及多路复用的功能。处理模块通常会并入驱动程序或者接口模块中。
4、管理器(Manager)
管理器为多重的客户端提供特定的服务,同时也对数据内容进行评估、改变,或是适应数据内容。一般来说,管理器属于服务层。