首先我们先看一个图:
1 Overview of Software Layers
软件层概述
AUTOSAR 最高抽象层划分成了三个部分:应用层、RTE层、基础软件层
基础软件层又划分成四个部分:
服务层、ECU抽象层、微控制器抽象层、复杂驱动层;
1.1基础软件层(BSW)分层介绍
从底层向顶层依次介绍:
(1)MCAL层是基础软件层的最底层,他包含内部驱动,可以访问微控制器(uC)和内部外设。
(内部驱动:内部器件位于微控制器(单片机)的内部,例如内部EEPROM、内部CAN控制器、内部ADC模块等。内部驱动程序就是针对单片机内部器件资源的驱动程序,这部分驱动程序属于微控制器抽象层(MCAL))
(2)ECU抽象层连接微控制器抽象层的驱动程序。 它还包含外部驱动程序。它提供了一个访问外围设备和设备的API,不管设备位置如何(μC内部/外部)、它们与μC的连接(端口引脚,接口类型)怎么样。
(外部器件是指单片机外部的ECU硬件,比如外部EEPROM、外部看门狗、外部Flash等。外部驱动程序就是针对单片机外部硬件资源的驱动程序,属于ECU抽象层。外部驱动程序需要通过微控制器抽象层(MCAL)驱动程序来实现对外部器件的驱动。这种方法下AUTOSAR也支持嵌入在系统基础芯片(SBCs)中的组件,像收发器以及看门狗等。例如,使用SPI通信接口的外部EEPROM驱动程序是通过SPI总线处理程序来驱动外部EEPROM的。但是有一种例外,对于和内存映射相关的外部器件(如外部Flash存储器),其驱动程序是可以直接对微控制器进行存取访问的,所以这部分驱动程序属于微控制器抽象层(MCAL))
(3)复杂设备驱动层,贯穿了硬件层到TRE层。主要用来定义没有被AUTOSAR指定的设备,有高度时间限制的的设备,以移动为目的的驱动等等。
(4)服务层是基础软件的最高层,他也用来跟应用层进行交流,他可以提供:
1)操作系统
2)车载通信网络和管理服务
3)内存服务
4)诊断服务(包括UDS通信,内存错误,和错误处理)
5)ECU状态管理模式管理;
6)逻辑和时间程序流监控;
1.2 基础软件层(BSW)服务类型介绍
(1)输入输出类型:标准化访问传感器、执行器、ECU片上外设;
(2)内存:标准化访问内部或者外部存储(非易失存储);
(3)加密:标准化访问加密基元,包括内外部硬件加速器;
(4)通信:标准化访问车载网络系统、ECU板上通信系统ECU内部软件;
(5)板外通信:标准化访问Vehicle-to-X通信,车载无线网络系统,ECU版外通信系统;
(6)系统:提供标准化(操作系统、定时器、错误内存)和特定于ECU (ECU状态管理、watchdog管理器)的服务和库功能;
1.3 RTE层
RTE层用来给应用软件提供服务(应用软件包括 AUTOSAR 软件模块 AUTOSAR传感器制动器模块);主要任务就是是软件模块脱离指定的平台,使软件模块更具有通用性。
1.4 BSW模块类型介绍
1.4.1 驱动介绍(BSW模块类型----Driver)
驱动可以用来访问和控制内部以及外部的设备。
(1)内部设备就是在微控制器内部的设备,例如:内部EEPROM,内部CAN controller,内部ADC;内部驱动位于MCAL层。
(2)外部设备就是在微控制器外部的设备,例如外部EEPROM,外部看门狗,外部flash,外部驱动位于ECU抽象层。
1.4.2 接口介绍(BSW模块类型----驱动)
接口模块具有模块抽象的功能,从结构上看,这些模块位于接口的下面。例如从指定设备的硬件上抽象出来接口模块。例如接口模块提供一个通用的API接口来访问特定类型的设备,该API和该类型设备的数量以及不同硬件的实现无关。
一般来说,接口位于ECU抽象层,例如CAN通信系统接口提供了一个常规的API来访问CAN通信网络,该接口独立于CAN控制器的数量,并且独立于硬件的实现。
1.4.3 Handler介绍 (BSW模块类型----Handler)
Handler是一个特殊的接口,他可以用来控制并发、多重、同步、一个或多个客户端对一个或多个驱动程序进行访问。完成缓冲、队列、仲裁、多路复用。
Handler函数经常并入驱动或者接口(e.g. SPIHandlerDriver—MCAL层的通信驱动中, ADC Driver)
1.4.4 Manager介绍 (BSW模块类型----Manager)
Manager为多个客户端提供特殊服务,他适用于纯处理函数不足以从多个客户端中抽象的所有情况。
Manager位于服务层;
Manager和Handler以及Interface不同,Manager可以评估更改或调整数据的内容,Interface和Handler不能修改数据。
例如:NVRAM manager 管理对内部和/或外部内存设备(如闪存和EEPROM内存)的并发访问。它还执行分布式可靠的数据存储、数据检查、提供默认值等
2 Content of Software Layers(上面是模块类型,下面是模块)
2.1.1 MCAL层 module groups
(1)微控制器驱动
可以用来驱动内部外设,例如:看门口狗,通用定时器;可以直接访问微控制器的函数,如内核测试程序。
(2)通信驱动
ECU板上资源驱动如SPI,车辆通信如CAN;
OSI-Layer:数据链路层一部分
(3)存储驱动
片上存储驱动(如内部flash,内部EEPROM),内存映射外部存储设备驱动程序。
(4)I/O驱动
模拟和数字I/O驱动(如ADC 、PWM 、DIO)
(5)加密驱动
片上加密驱动程序(SHE、HSM)
(6)无线通信驱动
车内片外通信
MCAL层模块组在软件层的位置示意图如下:
MCAL层模块组驱动程序综述如下图:(这个很重要,学习MCAL的时候可以可以看这个知道学习哪些)
2.2 复杂驱动
复杂驱动是用来实现基本软件栈中非标准化功能的模块。
2.3 ECU抽象层module groups
(1)I/O硬件抽象模块
I/O硬件抽象模块是一个从本地I/O外设(片上 or 板上)和ECU硬件设计的(如µC pin的连接和信号电平反转)抽象出来的模块。I/O硬件抽象不能是从传感器和执行器抽象而来。
(2)通信硬件抽象模块
通信硬件抽象模块是一个从本地通信控制器和ECU硬件设计抽象而来的模块。对于所有通信系统都需要特定的硬件抽象。
(3)存储硬件抽象模块
存储硬件抽象模块块是从本地存储外设(片内 or 板上)以及ECU硬件设计抽象而来的。
注意:内部和外部存储驱动的位置,分别处于MCAL层和ECU抽象层。
(4)板载设备抽象模块
板载设备(注意区分板载和片上设备)抽象包含ECU板载设备的驱动程序,这些板载设备不能被视为传感器或执行器,如内部或外部看门狗。这些驱动程序通过µC机载设备抽象层访问ECU。
(5)加密硬件抽象模块
密码硬件抽象是一组从密码基元(基于内部或外部硬件或软件)的位置抽象出来的模块。
例如:AES primitive是在SHE中实现的,或者作为软件库提供。
2.4 服务层module groups
(1)加密服务
加密服务由一个叫做加密服务管理器模块组成。它负责管理加密作业和密钥的存储。
(2)通信服务
通信服务是一组用于车辆网络通信(CAN,LIN,FlexRay和以太网)的模块。 它们通过通信硬件抽象与通信驱动程序连接。
为车辆网络提供统一的接口以进行通信。
为网络管理提供统一的服务。
为车辆网络提供统一的接口以进行诊断通信
隐藏应用程序中的协议和消息属性。
例子 之后用到在细说
(3)存储服务
内存服务由一个模块NVRAM管理器组成。 它负责管理非易失性数据(从不同的内存驱动程序读/写)
(4)系统服务
系统服务是一组可供所有层的模块使用模块和功能,。示例是实时操作系统(包括计时器服务)和错误管理器。
其中一些服务是:
μC依赖(如OS),可能支持特殊 μC功能(如时间服务)
部分ECU硬件和应用程序依赖(如ECU状态管理器)硬件和μC独立。
(5)错误处理报告和诊断
(6)软件层的传感器和执行器
传感器/执行器AUTOSAR软件组件是用于传感器评估和执行器控制的特定类型的AUTOSAR软件组件。 虽然不属于AUTOSAR Basic软件,但由于其与本地信号的密切关系, 由于集成原因(标准化接口实现和接口描述),已决定将传感器/执行器SW组件定位在RTE之上。 由于它们与原始本地信号的强烈交互,因此可重新定位性受到限制。