导读:
AUTOSAR旨在改善汽车电子系统软件的更新与交换,同时更方便有效地管理日趋复杂的汽车电子软件系统。AUTOSAR规范的运用使得不同结构的电子控制单元的接口特征标准化,应用软件具备更好的可扩展性以及可移植性,能够实现对现有软件的重用,大大降低了重复性工作,缩短开发周期。本文主要介绍一下内容:
1、AUTOSAR的背景介绍
2、AUTOSAR的分层模型
3、AUTOSAR的方法论
4、AUTOSAR的接口类型
5、AUTOSAR的基础软件层
1)建立分层的体系架构
2)为应用程序的开发提供方法论
3)制定各种应用接口规范
2
第一阶段:定义系统配置文件,这是系统设计者或架构师的任务。包括选择硬件和软件组件,定义整个系统的约束条件。AUTOSAR通过使用信息交换格式和模板描述文件来减少初始系统设计时的工作量。系统配置的输入是XML类型的文件,输出是系统配置描述文件,系统配置的主要作用是把软件组件的需求映射到ECU上。
第二阶段:根据系统配置描述文件提取单个ECU资源相关的信息,提取出来的信息生成ECU提取文件。根据这个提取文件对ECU进行配置,例如操作系统任务调度,必要的BSW模块及其配置,运行实体到任务的分配等,从而生成ECU配置描述文件。该描述文件包含了特定ECU的所有信息。
AUTOSAR接口是一种与应用相关的接口,与RTE一并生成。基于AUTOSAR接口的端口可以用于软件组件(Software Component,SWC)之间或者软件组件与ECU固件之间(例如复杂驱动)的通信;
标准化AUTOSAR接口是一种特殊的AUTOSAR接口。这些在AUTOSAR规范中定义过的接口被SWC用于访问AUTOSAR BSW模块提供的服务,比如ECU管理模块或者诊断事件管理模块;
标准化接口是AUTOSAR规范中用C语言定义的API。这些接口用于ECU内部BSW模块之间,RTE和操作系统之间或者RTE和COM模块之间;
微控制器抽象层(MicroController Abstraction Layer,即MCAL),它位于BSW的最底层,包含了跟硬件相关的驱动程序、软件模块与直接访问微控制器内部和外围的设备,可以用来访问内存、通信和I/O等;
ECU抽象层(ECU Abstraction Layer),位于微控制器抽象层之上,对接微控制器抽象层所提供的驱动程序,并同时包含对外部设备的驱动程序,然后负责向上提供统一的访问接口实现对通信、内存或者I/O的访问,从而使得上层模块无须考虑这些资源由微处理器提供还是由外部设备提供;
服务层(Service Layer),提供各种类型的后台服务,例如网络服务、内存管理和总线通信服务等,操作系统就位于这一层。服务层是基础软件的最高层,同时与应用程序也有关联。虽然对I/O信号的访问由ECU抽象层覆盖,但服务层负责提供以下接口:操作系统的功能、车辆网络通信管理服务、存储器服务(NVRAM管理)、诊断服务(包括UDS通信、错误存储和故障处理)、ECU状态管理,模式管理、逻辑和时间程序流监控(Wdg管理器)、密码服务(密码服务管理);
复杂驱动层(Complex Drivers Layer,即CCD),跨越于微控制器硬件层和RTE之间,其主要任务是整合具有特殊目的且不能用MCAL进行配置的非标准功能模块,将该部分功能嵌入到AUTOSAR基础软件层中,从而实现处理复杂传感器以及执行器的特定功能和时间要求,提供集成特殊用途的功能,例如设备驱动程序,在AUTOSAR中未规定的、具有非常高的时间限制或用于迁移等目的;
系统:提供标准化的规定(针对操作系统、定时器以及错误存储器)、ECU特定的服务(ECU状态管理、看门狗管理)和库函数;
内存:对内部和外部的内存(非易失性存储器)的访问入口进行标准化;
通信:对汽车网络系统、ECU通信系统以及ECU内部软件的访问入口进行标准化;
驱动模块Driver
驱动模块包含了控制和使用内部或者外部器件的功能,分为内部驱动和外部驱动。
1)内部驱动
内部器件位于微控制器(单片机)的内部,例如内部EEPROM、内部CAN控制器、内部ADC模块等。
内部驱动程序就是针对单片机内部器件资源的驱动程序,这部分驱动程序属于微控制器抽象层(MCAL)。
2)外部驱动
外部器件是指单片机外部的ECU硬件,比如外部EEPROM、外部看门狗、外部Flash等。外部驱动程序就是针对单片机外部硬件资源的驱动程序,属于ECU抽象层。外部驱动程序需要通过微控制器抽象层(MCAL)驱动程序来实现对外部器件的驱动。这种方法下AUTOSAR也支持嵌入在系统基础芯片(SBCs)中的组件,像收发器以及看门狗等。例如,使用SPI通信接口的外部EEPROM驱动程序是通过SPI总线处理程序来驱动外部EEPROM的。但是有一种例外,对于和内存映射相关的外部器件(如外部Flash存储器),其驱动程序是可以直接对微控制器进行存取访问的,所以这部分驱动程序属于微控制器抽象层(MCAL)。
接口模块Interface
接口模块包含了对其次级模块进行抽象的功能,比如对一个特定功能的硬件进行抽象。它提供一个通用的接口函数(API)来访问一种特定的器件类型,且与该类型器件的数目无关,同时也与器件的具体硬件实现无关。
接口模块不会改变数据的内容。一般来说,接口属于ECU抽象层。例如,CAN通信系统的接口模块提供一个通用的接口函数来访问CAN通信网络,并且与ECU上CAN控制器的数目以及硬件实现无关。
处理模块Handler
处理模块是一个专用的接口,它控制一个或多个客户端对一个或多个驱动程序进行并行、多重以及异步地访问。也就是说,它起着缓冲、队列、仲裁以及多路复用的功能。同时,处理程序也不会改变数据本身的内容。处理模块通常会并入驱动程序或是接口模块中(如SPIHandlerDriver、ADC Driver等)。
启动和停止硬件定时器;
得到定时器数值;
控制时间触发的中断;
FlexRay控制器的初始化;
配置数据处理单元;
控制指令向通信控制器的传递;
从协议引擎到控制器主接口状态数据的规定;
对CAN控制器进行初始化;
发送和接收报文;
对报文的数据和功能进行通知(对接收报文的指示、对发送报文的确认);
溢出和错误处理;
单个或多个CAN通道;
CAN驱动的多重实例化;
对接收报文的中断/轮询模式;
选择SPI驱动的功能级别,配置可选择的功能特性;
根据数据用途来定义SPI通道,它们可以是SPI驱动的内部缓冲器,或者是由用户提供的外部缓冲器;
根据硬件属性来定义SPI任务,它们会包含一系列使用这些属性的通道;
信号边沿检测及通知;
中断唤醒;
周期性信号时间的测量;
边沿时间戳捕获;
启动或停止输出通道;
设定某个阈值;
启用或禁用某个通道的通知函数;
获取计数器数值;
J1939通信服务的实施与单片机和ECU硬件无关,它是基于CAN通信的;
AUTOSAR COM、通用网络管理接口(Generic NM Interface)以及诊断通信管理器(Diagnostic Com.Manager)对所有的车辆网络系统都是通用的,并且作为每个ECU的一个实例而存在;
支持在配置阶段未知的动态帧标识符;
J1939网络管理器管控每一个ECU的特定地址分配,但它不支持休眠/唤醒处理以及其他相关的概念,如局部网络等;
—END—