1 AUTOSAR规范
AUTOSAR是面向汽车领域的嵌入式软件体系结构标准。该体系结构采用了分层模型,每一层只能使用下一层的接口,并向上一层提供服务接口,从上至下依次为应用层、RTE层、服务层、ECU抽象层、微控制器抽象层,还有一个特殊的复杂驱动……
2 MCU驱动设计与实现
MCU驱动为MCU提供时钟和RAM初始化服务。在启动代码之后,MCU驱动进一步完善程序运行的硬件环境,如图2所示。
2.1文件结构
参考AUTOSAR MCU模块驱动规范[1]中的文件结构体系,本文设计了如图3所示的驱动工程文件结构,其中Std_Type.h,Complier.h,Platform_Type.h分别用于管理数据类型、编译器、平台说明等; Det.h和Dem.h用于管理错误处理机制; MemMap.h,MCU_Cfg.h,MCU.c,MCU.h用于管理模块的驱动程序。
2.2 API定义
根据AUTOSAR中MCU模块的API规范、具体ECU的硬件特性以及考虑上层应用的灵活性定义出MPC5634[3]MCU驱动程序API的函数原型,确定接口函数名称,返回类型以及形参类型。其中主要的API如表1所示。
2.3 构造参数配置接口
构造参数配置接口就是细化AUTOSAR规范中API的相关型参。参数配置接口用于上层应用进行相关参数设置并通过API函数来达到初始化和配置指定模块功能的目的。其实质就是一个底层驱动程序的数据入口,它的实现与具体ECU相关,因此需按照API所需的功能来分析该功能在具体ECU中实现流程,参数设置,寄存器配置,并对需要的配置参数进行分类。找出可供上层根据具体应用来灵活设置的参数簇,并用宏定义,结构体数据类型,枚举数据类型等进行封装,作为上层对底层操作时,参数设置,数据传输……
2.4 MCU 驱动API函数实现
API函数实现即是抽象接口函数的实例化,它把上层应用所配置的参数写入到硬件中并通过硬件实现API函数所给出的功能。这需要根据具体ECU中模块相应功能的驱动流程设计实现算法。如MPC5634的MCU初始化函数void Mcu_Init(const Mcu_ConfigType* ConfigPtr)的实现示例为:void Mcu_Init(const Mcu_ConfigType* ConfigPtr)
{
FMPLL.ESYNCR1.B.EMODE = 1;
FMPLL.ESYNCR2.B.LOLRE = 0;
FMPLL.ESYNCR1.B.EPREDIV = ConfigPtr -> PLLSetting.inputClockDivider;
……
} |