汽车电子嵌入式驱动软件结构课件_第1页
汽车电子嵌入式驱动软件结构课件_第2页
汽车电子嵌入式驱动软件结构课件_第3页
汽车电子嵌入式驱动软件结构课件_第4页
汽车电子嵌入式驱动软件结构课件_第5页
已阅读5页,还剩107页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汽车电子嵌入式驱动软件结构

汽车电子嵌入式驱动软件结构

1主要内容汽车电子软件体系结构软件模块类型介绍微控制器抽象层ECU抽象层及示例复杂驱动主要内容汽车电子软件体系结构2基础软件体系结构-基本层:汽车电子软件体系结构基础软件体系结构-基本层:汽车电子软件体系结构3基础软件体系结构-细化分层:汽车电子软件体系结构基础软件体系结构-细化分层:汽车电子软件体系结构4软件模块类型介绍驱动(Driver)功能:控制和访问内部或外部设备内部设备:设备位于微控制器内部,如:内部EEPROM、内部CAN控制器、内部ADC内部设备的驱动称为内部驱动,并且驱动位于微控制器驱动层外部设备:设备位于在ECU硬件的微控制器外部,如:外部EEPROM、外部Watchdog、外部Flash外部设备的驱动称为外部驱动,并且驱动位于在ECU抽象层,它通过微控制器驱动层访问外部设备,如:带SPI接口的外部EEPROM驱动通过SPIHanderDriver驱动访问外部EEPROM软件模块类型介绍驱动(Driver)5软件模块类型介绍接口(Interface)接口包含的功能是为上层抽象特定设备的硬件实现提供通用API访问设备特定类型,不考虑这种设备类型存在的数量和不同设备硬件实现接口不改变数据内容通常接口的位于ECU抽象层例如:一个CAN通讯系统接口提供通用API访问CAN通讯网络而不用管ECU上的CAN控制器的数量和硬件实现软件模块类型介绍接口(Interface)6软件模块类型介绍处理程序(Handler)处理程序是一个特殊接口,它控制一个或多个访问程序对一个或多种驱动程序的并发、多重和异步方式的访问,如:执行缓冲、队列、仲裁、多路传输处理程序不改变数据内容处理程序功能是提供合并的驱动或接口(e.g.,SPIHandlerDriver,ADCDriver)软件模块类型介绍处理程序(Handler)7微控制器抽象层微控制器抽象层的驱动基础软件中最底层的位置,向上层软件屏蔽微控制器和ECU硬件设备驱动的细节和差异,是降低汽车电子应用软件与硬件的相关性,提高汽车电子应用软件和功能组件可重用性和可移植性的重要技术手段直接访问uC内部外设和内存映射uC外部设备微控制器抽象层微控制器抽象层的驱动8微控制器抽象层微控制器抽象层的驱动包括:微控制器驱动、内存驱动、通讯驱动、I/O驱动微控制器抽象层微控制器抽象层的驱动9微控制器抽象层微控制器驱动包括:看门狗驱动WDG、通用定时器驱动GPT、微控制器单元驱动MCU内部外设的驱动(e.g.,Watchdog,通用时钟)直接uC可存取的功能(e.g.,Core测试)微控制器抽象层微控制器驱动10微控制器抽象层微控制器驱动-看门狗驱动设定片内看门狗模式以及触发看门狗设备,触发程序由上层系统服务层的看门狗管理器模块进行调用,内部看门狗驱动控制MCU的内部看门狗计时器,它提供触发器功能和模式选择服务微控制器抽象层微控制器驱动-看门狗驱动11微控制器抽象层微控制器驱动-通用定时器驱动GPT为定时服务程序提供定时中断GPT驱动允许产生单触发或持续的计时器通知,这个模块使用通用计时器的硬件计时通道,因此就为操作系统中或者其它基本软件模块(在这类模块中,OS警告服务有过多的开销)中的使用提供了精确的、短期的计时。GPT驱动提供了用于启动和停止硬件计时模块中的功能计时实例(通道)的服务。它能够产生单个超时周期以及重复超时周期。如果必须调用一个通知,那么当所请求的超时周期过期时,用户就能够对它进行配置。可以在运行时启用或禁用通知。微控制器抽象层微控制器驱动-通用定时器驱动GPT12微控制器抽象层微控制器驱动-通用定时器驱动GPT不管是从上一个通知发生以来的相对时间消耗,还是到下一个通知之间的剩余时间,都可以进行查询。注意,GPT驱动仅产生时间基础,而不服务于时间计数器。这个功能是由另一个模块(ICU驱动)提供的GPT驱动可以用来唤醒ECU,不管预定义的超时周期是否过期。模式转换服务将GPT驱动在普通操作和睡眠模式之间进行转换。该驱动不提供超时周期,这些超时周期超过了被时钟源、预定标器和计时寄存器所限制的最大值。用户必须对这个进行处理。微控制器抽象层微控制器驱动-通用定时器驱动GPT13微控制器抽象层微控制器驱动-微控制器单元驱动MCU负责微处理器的各项设定,包括复位,初始化,电源管理,唤醒,时钟设定等。MCU驱动提供用于基本微控制器的初始化,下电,复位和其它MCAL软件模块需要的微控制器特定功能的服务。初始化服务提供了灵活性,同时,除了启动代码之外,还提供了应用程序相关的MCU初始化。启动代码是完全特定于MCU的。MCU驱动直接访问微控制器硬件,它位于微控制器抽象层(MCAL)中微控制器抽象层微控制器驱动-微控制器单元驱动MCU14微控制器抽象层内存驱动包括:内部EEPROM、内部Flash、RAM测试片上内存设备的驱动(e.g.,内部Flash,内部EEPROM)微控制器抽象层内存驱动15微控制器抽象层内存驱动-EEPROM驱动提供读、写、擦除EEPROM的服务,提供用于比较EEPROM中数据块和内存中数据块的服务,这些服务是异步方式的微控制器抽象层内存驱动-EEPROM驱动16微控制器抽象层内存驱动-FLASH驱动提供读、写和擦除闪存的服务,以及设置写/擦除保护的配置接口提供了一个内置加载器,以加载闪存存取代码到RAM中,并在需要的时候执行写/擦除操作微控制器抽象层内存驱动-FLASH驱动17微控制器抽象层内存驱动-RAM测试负责RAM单元(包括用于寄存器的单元)的物理性诊断(非数据检测),不同的诊断方式需要预编译然后根据系统或用户需要实时运行微控制器抽象层内存驱动-RAM测试18微控制器抽象层通讯驱动包括:SPI驱动、LIN驱动、CAN驱动、FlexRay驱动ECU板级上的通信驱动(e.g.,SPI,I2C)车载通信驱动(e.g.,LIN,CAN,FlexRay网络)微控制器抽象层通讯驱动19微控制器抽象层通讯驱动-SPI驱动提供外设的SPI读写通信控制驱动允许多个客户端对一个或多个SPI总线的并发访问。为了抽象SPI的特征,SPIHandlerDriver要直接处理微控制器中的片选引脚。这就意味着这些引脚对DIO驱动无效SPI总线是一种主从多节点总线系统,主节点设置片选(CS)来选择一个从节点来进行数据通信。SPI有一个4线的同步串行接口。使用片选线来激活数据通信微控制器抽象层通讯驱动-SPI驱动20微控制器抽象层通讯驱动-SPI驱动SPI模块提供基于通道的对SPI总线上的不同设备的读、写和传输访问,SPI通道代表数据元素(8到16比特)。这些通道可能是顺序组合的,不能够被中断。通道有一个静态配置定义的波特率、片选等等。SPI设备通常由所使用的SPI硬件单元和相关的片选线来标识。这个模块能够作为SPI主节点来使用这个软件模块的功能范围应该是可静态配置的,以尽可能多的适应每个ECU的时间需要。那就是说,比如同步的、异步的、或者两者都有的SPI访问都可以存在于ECU。因此,两个SPI驱动可以存在,但仅有一个处理接口。微控制器抽象层通讯驱动-SPI驱动21微控制器抽象层通讯驱动-LIN驱动为上层的LIN接口模块提供硬件抽象接口,负责对LIN硬件进行控制,比如初始化。对于属于相同LIN硬件单元LIN驱动模块支持多路通道。只支持LIN2.0主节点LIN驱动是最底层的一部分,执行硬件访问和为上层提供硬件无关的API。上层唯一能够访问到LIN驱动的就是LIN接口一个LIN驱动能够支持一个以上的通道。LIN驱动能够处理一个或多个属于相同LIN硬件单元的LIN通道微控制器抽象层通讯驱动-LIN驱动22微控制器抽象层通讯驱动-CAN驱动为上层的CAN接口模块提供硬件抽象接口,负责对CAN硬件传输进行初始化,实现事件通知,控制属于相同CAN硬件单元的CAN控制器。CAN驱动尽可能合理地隐藏了相关CAN控制器的硬件专用性。CAN驱动是最底层的一部分,为上层执行对硬件的访问和提供硬件无关的API。上层中唯一能够访问CAN驱动的是CAN接口。如果几个CAN控制器属于相同的CAN硬件单元,那么它们能够由CAN驱动来控制一个CAN控制器总是与一个物理通道相关联。它被允许与总线上的物理通道相连接,不管CAN接口是否将相关的CAN控制器分别对待微控制器抽象层通讯驱动-CAN驱动23微控制器抽象层通讯驱动-FlexRay驱动为上层的FlexRay接口模块提供硬件抽象接口,负责对FlexRay硬件传输进行初始化,实现事件通知,控制属于相同FlexRay硬件单元的FlexRay控制器FlexRay驱动模块必须为FlexRay接口模块、API的使用者提供统一接口,以访问许多FlexRay通信控制器,这些控制器通常是相同类型的。FlexRay驱动是一个软件层,它将抽象功能请求映射到CC专用硬件的序列上。CC的硬件实现将从FlexRay接口隐藏微控制器抽象层通讯驱动-FlexRay驱动24微控制器抽象层I/O驱动ICU驱动、PWM驱动、ADC驱动、DIO驱动、PORT驱动模拟和数字I/O驱动(e.g.,模数转换器ADC,脉宽调制PWM,数字输入输出DIO)微控制器抽象层I/O驱动25微控制器抽象层I/O驱动-ICU驱动对周期性输入信号进行频率检测以及占空比测量,计算脉冲,解调脉宽调制信号,捕获非周期输入信号,产生相应的中断或唤醒中断微控制器抽象层I/O驱动-ICU驱动26微控制器抽象层I/O驱动-PWM驱动对微控制器内部PWM端口进行初始化和控制每个PWM通道都连接到一个属于微控制器的硬件PWM上。该驱动提供了初始化和控制微处理器内部的PWM的服务。PWM模块产生有不同宽度的脉冲微控制器抽象层I/O驱动-PWM驱动27微控制器抽象层I/O驱动-ADC驱动对微控制器内部ADC端口进行初始化和控制ADC驱动初始化并控制微控制器内部的模数转换单元。该驱动包含一系列的基本功能函数。为了能够在某些特殊的应用中进行信号的频率分析(例如,快速傅立叶变换),就需要加强流式存取的功能微控制器抽象层I/O驱动-ADC驱动28微控制器抽象层I/O驱动-DIO驱动DIO通道的管脚和组以及端口进行读写提供基于端口和通道的、对内部通用I/O断点的读和写访问。这里的读和写并不被缓冲。这个驱动的基本行为是同步的微控制器抽象层I/O驱动-DIO驱动29微控制器抽象层I/O驱动-PORT驱动微控制器所有端口的初始化微控制器抽象层I/O驱动-PORT驱动30ECU抽象层ECU抽象层微控制器硬件抽象层的接口驱动包含外部设备驱动提供API访问外设和设备并且不管它位置(uC内/外)和它连接到uC(端口管脚,接口类型)ECU抽象层ECU抽象层31ECU抽象层包括以下软件模块通讯硬件抽象、内存硬件抽象、板载设备抽象、I/O硬件抽象ECU抽象层包括以下软件模块32ECU抽象层通信硬件抽象层对于内部和ECU硬件架构上外部通信控制器的抽象对于所有的通信系统(LIN,CAN,FlexRay),都需要特定的通信硬件抽象:LIN接口CAN接口FlexRay接口如果MCU没有板载通信控制器,需要外部的ASICECU抽象层通信硬件抽象层33ECU抽象层通信硬件抽象层-LIN接口为上层LINSM模块和PDURouter模块提供驱动抽象接口,通过下层驱动模块对LIN硬件设备进行控制。功能主要包括:根据上层通信模块切换调度表,执行LIN数据帧的收发,控制设备的唤醒和睡眠,错误处理以及诊断服务LIN接口被设计成硬件无关的。到上层模块(PDU路由器)和下层模块(LIN驱动)的接口被很好地定义。LIN接口可以处理一个以上的LIN驱动。一个LIN驱动能够支持一个以上的通道。这指的是LIN驱动能够处理一个或多个LIN通道ECU抽象层通信硬件抽象层-LIN接口34ECU抽象层通信硬件抽象层-LIN接口LIN接口负责向上层提供LIN2.0主要功能有:每个与ECU连接的LIN总线执行当前选择的调度当上层请求到来时,切换调度表从上层接收帧的传送,并传送数据部分作为适当LIN帧中的响应当相应的响应在适当的帧中接收时,为上层提供帧接收通知睡眠和唤醒服务错误处理诊断传输层服务ECU抽象层通信硬件抽象层-LIN接口35ECU抽象层通信硬件抽象层-CAN接口为上层CANSM模块,CANNM模块,CANTP模块以及PDURouter模块和下层CAN控制驱动和CAN收发驱动提供接口。提供了唯一的接口来访问管理CAN硬件设备,为上层服务层抽象了CAN硬件设备的分布和数量CAN接口提供标准化的接口,通过ECU的CAN总线系统来支持通信。其API与专用CAN控制器及其通过CAN驱动层的访问无关。CAN接口能够通过统一的接口访问一个或多个CAN驱动CAN接口仅能用于CAN通信,并且是为操作一个或多个底层CAN驱动而专门设计。涵盖不同CAN硬件单元的几个CAN驱动模块由一个在CAN驱动规范中指定的通用接口来表示。CAN之外(也就是LIN)的其他协议不支持ECU抽象层通信硬件抽象层-CAN接口36ECU抽象层通信硬件抽象层-FlexRay接口为上层FlexRaySM模块,FlexRayNM模块,FlexRayTP模块以及PDURouter模块提供驱动抽象接口,通过下层驱动模块对FlexRay硬件设备进行控制。提供的功能包括:初始化,收发数据,设定FlexRay运行模式,状态信息捕获以及各种定时提供一种标准化的接口以访问FlexRay通信系统/硬件。FlexRay接口必须与所使用的专用FlexRayCC及其通过FlexRay驱动的访问无关。FlexRay接口提供通过统一接口的对一个或几个FlexRay驱动的访问ECU抽象层通信硬件抽象层-FlexRay接口37ECU抽象层通信硬件抽象层-FlexRay接口FlexRay接口的主要任务为上层提供到FlexRay通信系统的抽象接口FlexRay接口通过一个或多个硬件专用驱动模块来访问FlexRay硬件,而不是直接访问为了访问FlexRay通信控制器,FlexRay接口使用一个或多个FlexRay驱动模块为了访问FlexRay收发器,FlexRay接口使用一个或多个FlexRay收发器驱动模块FlexRay接口可执行代码与FlexRay通信控制器和FlexRay收发器完全不相关FlexRay接口允许代码模块的对象代码提交,遵循“one-fits-all”原则ECU抽象层通信硬件抽象层-FlexRay接口38ECU抽象层内存硬件抽象层提供对于内存外设和板级的内存设备抽象的一组模块供相等的机制访问内部(片上的)和外部(板上的)的存储设备以及各种存储硬件(EEPROM,Flash)具有板载Flash的Mcu,可以仿真EEPROM,因此,这一层只需要两个模块:FlashEEPROM仿真内存抽象接口ECU抽象层内存硬件抽象层39ECU抽象层内存硬件抽象层-内存抽象接口MEMIF对于不同内存设备提供抽象内存接口上层的NVRAM管理器模块可以通过抽象内存接口来访问不同的抽象内存模块甚至是供应商的特殊内存驱动(FEE或EA模块)内存抽象接口抽象于下层FEE和EA模块的数目,并向上层提供统一线性地址空间上的虚拟分段ECU抽象层内存硬件抽象层-内存抽象接口MEMIF40ECU抽象层内存硬件抽象层-EEPROM抽象EA扩展EEPROM驱动,提供片内EEPROM的访问接口,抽象了EEPROM的地址以及数量,向上层提供线性地址空间上的虚拟分段和“实际上无限制的”擦除/写循环。除此之外,它还应该提供与EEPROM驱动相同的功能ECU抽象层内存硬件抽象层-EEPROM抽象EA41ECU抽象层内存硬件抽象层-FlashEEPROM仿真FEE按照Flash技术仿真EEPROM抽象层的行为,利用Flash来仿真EEPROM的数据存储,为上层的内存抽象接口模块提供数据的虚拟寻址。所以它与EEPROM抽象层有相同的功能和API,并且给出基于下层闪存驱动和闪存设备的相似配置ECU抽象层内存硬件抽象层-FlashEEPROM仿真FE42ECU抽象层板载设备抽象包含包括除传感器/执行器外的ECU板上设备(如板上系统芯片、外部watchdog等)的驱动程序它通过微控制器抽象层实现对ECU板上设备的访问主要是看门狗接口WDGIFECU抽象层板载设备抽象43ECU抽象层板载设备抽象-看门狗接口针对微控制器的看门狗设备提供了相同的访问机制,抽象了看门狗设备的地址以及数量ECU抽象层板载设备抽象-看门狗接口44ECU抽象层I/O硬件抽象它是一个模块组,通过从外设I/O设备(片上/板载)位置的抽象,并且在ECU抽象层I/O硬件抽象不从传感器/执行器抽象不同I/O设备通过I/O信号接口访问ECU抽象层I/O硬件抽象45ECU抽象层I/O硬件抽象提供微控制器外设的硬件输入输出抽象接口,通过下层驱动模块对相应硬件外设进行控制,包括,微控制器通用I/O,ADC,PWM,ICU等上层的汽车电子应用和组件可以通过该模块提供的I/O信号访问接口实现不同I/O设备的访问ECU抽象层I/O硬件抽象46ECU抽象层-示例内存栈MEMORY该示例显示在NVM管理和WDG管理在假定硬件配置上驱动的相互影响:ECU硬件上包含一个外部EEPROM和外部看门狗通过相同的SPI与微控制器连接SPIHandlerDriver控制对SPI硬件的并发访问,并且必须使看门狗访问的优先级高于EEPROM访问假设微控制器还有个能和外部EEPROM并行使用的内部flash。EEPROM抽象和FlashEEPROM仿真有在语义上相同的API。ECU抽象层-示例内存栈MEMORY47ECU抽象层-示例内存栈MEMORY内存抽象接口通过下面的方法实现:在运行期间基于设备索引(int/ext)的路由在运行期间基于块索引(如:0x01FF=外部EEPROM)的路由通过带有NVRAM管理器中的函数指针(这种情况下内存抽象接口只存在“虚拟的”)的ROM表在配置时间期间路由体系描述

NVRAM管理器通过内存抽象接口访问驱动,使用设备索引寻址不同的内存设备ECU抽象层-示例内存栈MEMORY48ECU抽象层-示例内存栈MEMORY接口描述:内存抽象接口应该有下面的接口(如:为写函数)Std_ReturnTypeMemIf_Write(Uint8 DeviceIndex,Uint16 BlockNumber,Uint8 *DataBufferPtr)ECU抽象层-示例内存栈MEMORYStd_ReturnTy49ECU抽象层-示例内存栈MEMORY接口描述:EEPROM抽象以及FlashEEPROM仿真应该有下面的接口(如:为写函数)Std_ReturnTypeEa_Write(Uint16 BlockNumber,Uint8 *DataBufferPtr)ECU抽象层-示例内存栈MEMORYStd_ReturnTy50ECU抽象层-示例内存栈MEMORY情形一:只使用一种类型的NV设备,这是一般的使用情况。在这种情况下,内存抽象被实现为一个忽略DeviceIndex参数的简单宏结果:在运行时没有额外的代码,NVRAM管理器虚拟地访问EEPROM抽象或直接的访问Flash仿真文件

MemIf.h:#include“Ea.h” /*forprovidingaccesstotheEEPROMabstraction*/…#defineMemIf_Write(DeviceIndex,BlockNumber,DataBufferPtr)\Ea_Write(BlockNumber,DataBufferPtr)

:不存在ECU抽象层-示例内存栈MEMORY文件MemIf.h:51ECU抽象层-示例内存栈MEMORY情形二:使用两个或多个不同类型的NV设备,这种情况下使用DeviceIndex来选择正确的NV设备。可以使用指向函数的指针数组很有效的实现设备的选择文件MemIf.h:ExternconstWriteFctPtrTypeWriteFctPtr[2];

#defineMemIf_Write(DeviceIndex,BlockNumber,DataBufferPtr)\WriteFctPtr[DeviceIndex](BlockNumber,DataBufferPtr)

文件

MemIf.c:#include“Ea.h” /*forgettingtheAPIfunctionaddresses*/#include“Fee.h” /*forgettingtheAPIfunctionaddresses*/#include“MemIf.h”/*forgettingtheWriteFctPtrType*/

ConstWriteFctPtrTypeWriteFctPtr[2]={Ea_Write,Fee_Write};ECU抽象层-示例内存栈MEMORY文件MemIf.h:52ECU抽象层-示例内存栈MEMORY情形二:结果:如果函数指针表在NVRAM管理器中,需要同样的代码和运行时间。内存抽象接口不会引起开销ECU抽象层-示例内存栈MEMORY53ECU抽象层-示例内存栈MEMORY结论能有效的实现抽象层抽象层是可升级的内存抽象接口使NVRAM管理器能方便的访问一个或多个EEPROM和Flash设备完成了体系目标和需求EEPROM抽象层中包含了一些可以很容易用宏来代替的功能,因此该层不可替代ECU抽象层-示例内存栈MEMORY54复杂驱动复杂驱动通过采用特定中断或者复杂的外设(e.g.,ETPU)的微控制器直接访问,实施复杂的传感器检测和执行单元控制满足特定的功能和时间需求例子:喷油控制电子阀门控制递增式位置检测复杂驱动复杂驱动55谢谢!谢谢!56汽车电子嵌入式驱动软件结构

汽车电子嵌入式驱动软件结构

57主要内容汽车电子软件体系结构软件模块类型介绍微控制器抽象层ECU抽象层及示例复杂驱动主要内容汽车电子软件体系结构58基础软件体系结构-基本层:汽车电子软件体系结构基础软件体系结构-基本层:汽车电子软件体系结构59基础软件体系结构-细化分层:汽车电子软件体系结构基础软件体系结构-细化分层:汽车电子软件体系结构60软件模块类型介绍驱动(Driver)功能:控制和访问内部或外部设备内部设备:设备位于微控制器内部,如:内部EEPROM、内部CAN控制器、内部ADC内部设备的驱动称为内部驱动,并且驱动位于微控制器驱动层外部设备:设备位于在ECU硬件的微控制器外部,如:外部EEPROM、外部Watchdog、外部Flash外部设备的驱动称为外部驱动,并且驱动位于在ECU抽象层,它通过微控制器驱动层访问外部设备,如:带SPI接口的外部EEPROM驱动通过SPIHanderDriver驱动访问外部EEPROM软件模块类型介绍驱动(Driver)61软件模块类型介绍接口(Interface)接口包含的功能是为上层抽象特定设备的硬件实现提供通用API访问设备特定类型,不考虑这种设备类型存在的数量和不同设备硬件实现接口不改变数据内容通常接口的位于ECU抽象层例如:一个CAN通讯系统接口提供通用API访问CAN通讯网络而不用管ECU上的CAN控制器的数量和硬件实现软件模块类型介绍接口(Interface)62软件模块类型介绍处理程序(Handler)处理程序是一个特殊接口,它控制一个或多个访问程序对一个或多种驱动程序的并发、多重和异步方式的访问,如:执行缓冲、队列、仲裁、多路传输处理程序不改变数据内容处理程序功能是提供合并的驱动或接口(e.g.,SPIHandlerDriver,ADCDriver)软件模块类型介绍处理程序(Handler)63微控制器抽象层微控制器抽象层的驱动基础软件中最底层的位置,向上层软件屏蔽微控制器和ECU硬件设备驱动的细节和差异,是降低汽车电子应用软件与硬件的相关性,提高汽车电子应用软件和功能组件可重用性和可移植性的重要技术手段直接访问uC内部外设和内存映射uC外部设备微控制器抽象层微控制器抽象层的驱动64微控制器抽象层微控制器抽象层的驱动包括:微控制器驱动、内存驱动、通讯驱动、I/O驱动微控制器抽象层微控制器抽象层的驱动65微控制器抽象层微控制器驱动包括:看门狗驱动WDG、通用定时器驱动GPT、微控制器单元驱动MCU内部外设的驱动(e.g.,Watchdog,通用时钟)直接uC可存取的功能(e.g.,Core测试)微控制器抽象层微控制器驱动66微控制器抽象层微控制器驱动-看门狗驱动设定片内看门狗模式以及触发看门狗设备,触发程序由上层系统服务层的看门狗管理器模块进行调用,内部看门狗驱动控制MCU的内部看门狗计时器,它提供触发器功能和模式选择服务微控制器抽象层微控制器驱动-看门狗驱动67微控制器抽象层微控制器驱动-通用定时器驱动GPT为定时服务程序提供定时中断GPT驱动允许产生单触发或持续的计时器通知,这个模块使用通用计时器的硬件计时通道,因此就为操作系统中或者其它基本软件模块(在这类模块中,OS警告服务有过多的开销)中的使用提供了精确的、短期的计时。GPT驱动提供了用于启动和停止硬件计时模块中的功能计时实例(通道)的服务。它能够产生单个超时周期以及重复超时周期。如果必须调用一个通知,那么当所请求的超时周期过期时,用户就能够对它进行配置。可以在运行时启用或禁用通知。微控制器抽象层微控制器驱动-通用定时器驱动GPT68微控制器抽象层微控制器驱动-通用定时器驱动GPT不管是从上一个通知发生以来的相对时间消耗,还是到下一个通知之间的剩余时间,都可以进行查询。注意,GPT驱动仅产生时间基础,而不服务于时间计数器。这个功能是由另一个模块(ICU驱动)提供的GPT驱动可以用来唤醒ECU,不管预定义的超时周期是否过期。模式转换服务将GPT驱动在普通操作和睡眠模式之间进行转换。该驱动不提供超时周期,这些超时周期超过了被时钟源、预定标器和计时寄存器所限制的最大值。用户必须对这个进行处理。微控制器抽象层微控制器驱动-通用定时器驱动GPT69微控制器抽象层微控制器驱动-微控制器单元驱动MCU负责微处理器的各项设定,包括复位,初始化,电源管理,唤醒,时钟设定等。MCU驱动提供用于基本微控制器的初始化,下电,复位和其它MCAL软件模块需要的微控制器特定功能的服务。初始化服务提供了灵活性,同时,除了启动代码之外,还提供了应用程序相关的MCU初始化。启动代码是完全特定于MCU的。MCU驱动直接访问微控制器硬件,它位于微控制器抽象层(MCAL)中微控制器抽象层微控制器驱动-微控制器单元驱动MCU70微控制器抽象层内存驱动包括:内部EEPROM、内部Flash、RAM测试片上内存设备的驱动(e.g.,内部Flash,内部EEPROM)微控制器抽象层内存驱动71微控制器抽象层内存驱动-EEPROM驱动提供读、写、擦除EEPROM的服务,提供用于比较EEPROM中数据块和内存中数据块的服务,这些服务是异步方式的微控制器抽象层内存驱动-EEPROM驱动72微控制器抽象层内存驱动-FLASH驱动提供读、写和擦除闪存的服务,以及设置写/擦除保护的配置接口提供了一个内置加载器,以加载闪存存取代码到RAM中,并在需要的时候执行写/擦除操作微控制器抽象层内存驱动-FLASH驱动73微控制器抽象层内存驱动-RAM测试负责RAM单元(包括用于寄存器的单元)的物理性诊断(非数据检测),不同的诊断方式需要预编译然后根据系统或用户需要实时运行微控制器抽象层内存驱动-RAM测试74微控制器抽象层通讯驱动包括:SPI驱动、LIN驱动、CAN驱动、FlexRay驱动ECU板级上的通信驱动(e.g.,SPI,I2C)车载通信驱动(e.g.,LIN,CAN,FlexRay网络)微控制器抽象层通讯驱动75微控制器抽象层通讯驱动-SPI驱动提供外设的SPI读写通信控制驱动允许多个客户端对一个或多个SPI总线的并发访问。为了抽象SPI的特征,SPIHandlerDriver要直接处理微控制器中的片选引脚。这就意味着这些引脚对DIO驱动无效SPI总线是一种主从多节点总线系统,主节点设置片选(CS)来选择一个从节点来进行数据通信。SPI有一个4线的同步串行接口。使用片选线来激活数据通信微控制器抽象层通讯驱动-SPI驱动76微控制器抽象层通讯驱动-SPI驱动SPI模块提供基于通道的对SPI总线上的不同设备的读、写和传输访问,SPI通道代表数据元素(8到16比特)。这些通道可能是顺序组合的,不能够被中断。通道有一个静态配置定义的波特率、片选等等。SPI设备通常由所使用的SPI硬件单元和相关的片选线来标识。这个模块能够作为SPI主节点来使用这个软件模块的功能范围应该是可静态配置的,以尽可能多的适应每个ECU的时间需要。那就是说,比如同步的、异步的、或者两者都有的SPI访问都可以存在于ECU。因此,两个SPI驱动可以存在,但仅有一个处理接口。微控制器抽象层通讯驱动-SPI驱动77微控制器抽象层通讯驱动-LIN驱动为上层的LIN接口模块提供硬件抽象接口,负责对LIN硬件进行控制,比如初始化。对于属于相同LIN硬件单元LIN驱动模块支持多路通道。只支持LIN2.0主节点LIN驱动是最底层的一部分,执行硬件访问和为上层提供硬件无关的API。上层唯一能够访问到LIN驱动的就是LIN接口一个LIN驱动能够支持一个以上的通道。LIN驱动能够处理一个或多个属于相同LIN硬件单元的LIN通道微控制器抽象层通讯驱动-LIN驱动78微控制器抽象层通讯驱动-CAN驱动为上层的CAN接口模块提供硬件抽象接口,负责对CAN硬件传输进行初始化,实现事件通知,控制属于相同CAN硬件单元的CAN控制器。CAN驱动尽可能合理地隐藏了相关CAN控制器的硬件专用性。CAN驱动是最底层的一部分,为上层执行对硬件的访问和提供硬件无关的API。上层中唯一能够访问CAN驱动的是CAN接口。如果几个CAN控制器属于相同的CAN硬件单元,那么它们能够由CAN驱动来控制一个CAN控制器总是与一个物理通道相关联。它被允许与总线上的物理通道相连接,不管CAN接口是否将相关的CAN控制器分别对待微控制器抽象层通讯驱动-CAN驱动79微控制器抽象层通讯驱动-FlexRay驱动为上层的FlexRay接口模块提供硬件抽象接口,负责对FlexRay硬件传输进行初始化,实现事件通知,控制属于相同FlexRay硬件单元的FlexRay控制器FlexRay驱动模块必须为FlexRay接口模块、API的使用者提供统一接口,以访问许多FlexRay通信控制器,这些控制器通常是相同类型的。FlexRay驱动是一个软件层,它将抽象功能请求映射到CC专用硬件的序列上。CC的硬件实现将从FlexRay接口隐藏微控制器抽象层通讯驱动-FlexRay驱动80微控制器抽象层I/O驱动ICU驱动、PWM驱动、ADC驱动、DIO驱动、PORT驱动模拟和数字I/O驱动(e.g.,模数转换器ADC,脉宽调制PWM,数字输入输出DIO)微控制器抽象层I/O驱动81微控制器抽象层I/O驱动-ICU驱动对周期性输入信号进行频率检测以及占空比测量,计算脉冲,解调脉宽调制信号,捕获非周期输入信号,产生相应的中断或唤醒中断微控制器抽象层I/O驱动-ICU驱动82微控制器抽象层I/O驱动-PWM驱动对微控制器内部PWM端口进行初始化和控制每个PWM通道都连接到一个属于微控制器的硬件PWM上。该驱动提供了初始化和控制微处理器内部的PWM的服务。PWM模块产生有不同宽度的脉冲微控制器抽象层I/O驱动-PWM驱动83微控制器抽象层I/O驱动-ADC驱动对微控制器内部ADC端口进行初始化和控制ADC驱动初始化并控制微控制器内部的模数转换单元。该驱动包含一系列的基本功能函数。为了能够在某些特殊的应用中进行信号的频率分析(例如,快速傅立叶变换),就需要加强流式存取的功能微控制器抽象层I/O驱动-ADC驱动84微控制器抽象层I/O驱动-DIO驱动DIO通道的管脚和组以及端口进行读写提供基于端口和通道的、对内部通用I/O断点的读和写访问。这里的读和写并不被缓冲。这个驱动的基本行为是同步的微控制器抽象层I/O驱动-DIO驱动85微控制器抽象层I/O驱动-PORT驱动微控制器所有端口的初始化微控制器抽象层I/O驱动-PORT驱动86ECU抽象层ECU抽象层微控制器硬件抽象层的接口驱动包含外部设备驱动提供API访问外设和设备并且不管它位置(uC内/外)和它连接到uC(端口管脚,接口类型)ECU抽象层ECU抽象层87ECU抽象层包括以下软件模块通讯硬件抽象、内存硬件抽象、板载设备抽象、I/O硬件抽象ECU抽象层包括以下软件模块88ECU抽象层通信硬件抽象层对于内部和ECU硬件架构上外部通信控制器的抽象对于所有的通信系统(LIN,CAN,FlexRay),都需要特定的通信硬件抽象:LIN接口CAN接口FlexRay接口如果MCU没有板载通信控制器,需要外部的ASICECU抽象层通信硬件抽象层89ECU抽象层通信硬件抽象层-LIN接口为上层LINSM模块和PDURouter模块提供驱动抽象接口,通过下层驱动模块对LIN硬件设备进行控制。功能主要包括:根据上层通信模块切换调度表,执行LIN数据帧的收发,控制设备的唤醒和睡眠,错误处理以及诊断服务LIN接口被设计成硬件无关的。到上层模块(PDU路由器)和下层模块(LIN驱动)的接口被很好地定义。LIN接口可以处理一个以上的LIN驱动。一个LIN驱动能够支持一个以上的通道。这指的是LIN驱动能够处理一个或多个LIN通道ECU抽象层通信硬件抽象层-LIN接口90ECU抽象层通信硬件抽象层-LIN接口LIN接口负责向上层提供LIN2.0主要功能有:每个与ECU连接的LIN总线执行当前选择的调度当上层请求到来时,切换调度表从上层接收帧的传送,并传送数据部分作为适当LIN帧中的响应当相应的响应在适当的帧中接收时,为上层提供帧接收通知睡眠和唤醒服务错误处理诊断传输层服务ECU抽象层通信硬件抽象层-LIN接口91ECU抽象层通信硬件抽象层-CAN接口为上层CANSM模块,CANNM模块,CANTP模块以及PDURouter模块和下层CAN控制驱动和CAN收发驱动提供接口。提供了唯一的接口来访问管理CAN硬件设备,为上层服务层抽象了CAN硬件设备的分布和数量CAN接口提供标准化的接口,通过ECU的CAN总线系统来支持通信。其API与专用CAN控制器及其通过CAN驱动层的访问无关。CAN接口能够通过统一的接口访问一个或多个CAN驱动CAN接口仅能用于CAN通信,并且是为操作一个或多个底层CAN驱动而专门设计。涵盖不同CAN硬件单元的几个CAN驱动模块由一个在CAN驱动规范中指定的通用接口来表示。CAN之外(也就是LIN)的其他协议不支持ECU抽象层通信硬件抽象层-CAN接口92ECU抽象层通信硬件抽象层-FlexRay接口为上层FlexRaySM模块,FlexRayNM模块,FlexRayTP模块以及PDURouter模块提供驱动抽象接口,通过下层驱动模块对FlexRay硬件设备进行控制。提供的功能包括:初始化,收发数据,设定FlexRay运行模式,状态信息捕获以及各种定时提供一种标准化的接口以访问FlexRay通信系统/硬件。FlexRay接口必须与所使用的专用FlexRayCC及其通过FlexRay驱动的访问无关。FlexRay接口提供通过统一接口的对一个或几个FlexRay驱动的访问ECU抽象层通信硬件抽象层-FlexRay接口93ECU抽象层通信硬件抽象层-FlexRay接口FlexRay接口的主要任务为上层提供到FlexRay通信系统的抽象接口FlexRay接口通过一个或多个硬件专用驱动模块来访问FlexRay硬件,而不是直接访问为了访问FlexRay通信控制器,FlexRay接口使用一个或多个FlexRay驱动模块为了访问FlexRay收发器,FlexRay接口使用一个或多个FlexRay收发器驱动模块FlexRay接口可执行代码与FlexRay通信控制器和FlexRay收发器完全不相关FlexRay接口允许代码模块的对象代码提交,遵循“one-fits-all”原则ECU抽象层通信硬件抽象层-FlexRay接口94ECU抽象层内存硬件抽象层提供对于内存外设和板级的内存设备抽象的一组模块供相等的机制访问内部(片上的)和外部(板上的)的存储设备以及各种存储硬件(EEPROM,Flash)具有板载Flash的Mcu,可以仿真EEPROM,因此,这一层只需要两个模块:FlashEEPROM仿真内存抽象接口ECU抽象层内存硬件抽象层95ECU抽象层内存硬件抽象层-内存抽象接口MEMIF对于不同内存设备提供抽象内存接口上层的NVRAM管理器模块可以通过抽象内存接口来访问不同的抽象内存模块甚至是供应商的特殊内存驱动(FEE或EA模块)内存抽象接口抽象于下层FEE和EA模块的数目,并向上层提供统一线性地址空间上的虚拟分段ECU抽象层内存硬件抽象层-内存抽象接口MEMIF96ECU抽象层内存硬件抽象层-EEPROM抽象EA扩展EEPROM驱动,提供片内EEPROM的访问接口,抽象了EEPROM的地址以及数量,向上层提供线性地址空间上的虚拟分段和“实际上无限制的”擦除/写循环。除此之外,它还应该提供与EEPROM驱动相同的功能ECU抽象层内存硬件抽象层-EEPROM抽象EA97ECU抽象层内存硬件抽象层-FlashEEPROM仿真FEE按照Flash技术仿真EEPROM抽象层的行为,利用Flash来仿真EEPROM的数据存储,为上层的内存抽象接口模块提供数据的虚拟寻址。所以它与EEPROM抽象层有相同的功能和API,并且给出基于下层闪存驱动和闪存设备的相似配置ECU抽象层内存硬件抽象层-FlashEEPROM仿真FE98ECU抽象层板载设备抽象包含包括除传感器/执行器外的ECU板上设备(如板上系统芯片、外部watchdog等)的驱动程序它通过微控制器抽象层实现对ECU板上设备的访问主要是看门狗接口WDGIFECU抽象层板载设备抽象99ECU抽象层板载设备抽象-看门狗接口针对微控制器的看门狗设备提供了相同的访问机制,抽象了看门狗设备的地址以及数量ECU抽象层板载设备抽象-看门狗接口100ECU抽象层I/O硬件抽象它是一个模块组,通过从外设I/O设备(片上/板载)位置的抽象,并且在ECU抽象层I/O硬件抽象不从传感器/执行器抽象不同I/O设备通过I/O信号接口访问ECU抽象层I/O硬件抽象101ECU抽象层I/O硬件抽象提供微控制器外设的硬件输入输出抽象接口,通过下层驱动模块对相应硬件外设进行控制,包括,微控制器通用I/O,ADC,PWM,ICU等上层的汽车电子应用和组件可以通过该模块提供的I/O信号访问接口实现不同I/O设备的访问ECU抽象层I/O硬件抽象102ECU抽象层-示例内存栈MEMORY该示例显示在NVM管理和WDG管理在假定硬件配置上驱动的相互影响:ECU硬件上包含一个外部EEPROM和外部看门狗通过相同的SPI与微控制器连接SPIHandlerDriver控制对SPI硬件的并发访问,并且必须使看门狗访问的优先级高于EEPROM访问假设微控制器还有个能和外部EEPROM并行使用的内部f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论