当前位置:文档之家› 汽车电子嵌入式驱动软件结构

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


电子科技大学嵌入式软件工程中心
微控制器抽象层
微控制器抽象层的驱动 –基础软件中最底层的位置,向上层软件屏蔽微控制 器和ECU硬件设备驱动的细节和差异,是降低汽车 电子应用软件与硬件的相关性,提高汽车电子应用 软件和功能组件可重用性和可移植性的重要技术手 段 –直接访问uC内部外设和内存映射uC外部设备
电子科技大学嵌入式软件工程中心
微控制器抽象层
• 微控制器驱动-微控制器单元驱动MCU
– 负责微处理器的各项设定,包括复位,初始化,电源 管理,唤醒,时钟设定等。 – MCU驱动提供用于基本微控制器的初始化,下电,复 位和其它MCAL软件模块需要的微控制器特定功能的服 务。初始化服务提供了灵活性,同时,除了启动代码 之外,还提供了应用程序相关的MCU初始化。启动代 码是完全特定于MCU的。MCU驱动直接访问微控制器 硬件,它位于微控制器抽象层(MCAL)中
电子科技大学嵌入式软件工程中心
ECU 抽象层 通信硬件抽象层
–对于内部和ECU硬件架构上外部通信控制器的抽象 –对于所有的通信系统(LIN,CAN,FlexRay),都需 要特定的通信硬件抽象: • LIN接口 • CAN接口 • FlexRay接口 –如果MCU没有板载通信控制器,需要外部的ASIC
电子科技大学嵌入式软件工程中心
软件模块类型介绍
接口(Interface) –接口包含的功能是为上层抽象特定设备的硬件实现 –提供通用API访问设备特定类型,不考虑这种设备 类型存在的数量和不同设备硬件实现 –接口不改变数据内容 –通常接口的位于ECU抽象层 例如:一个CAN通讯系统接口提供通用API访问CAN通 讯网络而不用管ECU上的CAN控制器的数量和硬件实 现
电子科技大学嵌入式软件工程中心
微控制器抽象层
• I/O驱动
–ICU驱动、PWM驱动、ADC驱动、DIO驱动、PORT驱动 –模拟和数字I/O驱动(e.g.,模数转换器ADC,脉宽调制 PWM,数字输入输出DIO)
电子科技大学嵌入式软件工程中心
微控制器抽象层
• I/O驱动-ICU驱动
– 对周期性输入信号进行频率检测以及占空比测量,计 算脉冲,解调脉宽调制信号,捕获非周期输入信号, 产生相应的中断或唤醒中断
电子科技大学嵌入式软件工程中心
微控制器抽象层
• 内存驱动-FLASH驱动
–提供读、写和擦除闪存的服务,以及设置写/擦除保护 的配置接口 –提供了一个内置加载器,以加载闪存存取代码到RAM中, 并在需要的时候执行写/擦除操作
电子科技大学嵌入式软件工程中心
微控制器抽象层
• 内存驱动-RAM测试
–负责RAM单元(包括用于寄存器的单元)的物理性诊断 (非数据检测),不同的诊断方式需要预编译然后根 据系统或用户需要实时运行
电子科技大学嵌入式软件工程中心
ECU 抽象层 通信硬件抽象层-LIN接口
–为上层LIN SM模块和PDU Router模块提供驱动抽象 接口,通过下层驱动模块对LIN硬件设备进行控制。 功能主要包括:根据上层通信模块切换调度表,执 行LIN数据帧的收发,控制设备的唤醒和睡眠,错 误处理以及诊断服务 –LIN接口被设计成硬件无关的。到上层模块(PDU路 由器)和下层模块(LIN驱动)的接口被很好地定 义。 –LIN接口可以处理一个以上的LIN驱动。一个LIN驱 动能够支持一个以上的通道。这指的是LIN驱动能 够处理一个或多个LIN通道
– 为定时服务程序提供定时中断 – GPT驱动允许产生单触发或持续的计时器通知,这个 模块使用通用计时器的硬件计时通道,因此就为操作 系统中或者其它基本软件模块(在这类模块中,OS警 告服务有过多的开销)中的使用提供了精确的、短期 的计时。 – GPT驱动提供了用于启动和停止硬件计时模块中的功 能计时实例(通道)的服务。它能够产生单个超时周 期以及重复超时周期。如果必须调用一个通知,那么 当所请求的超时周期过期时,用户就能够对它进行配 置。可以在运行时启用或禁用通知。
电子科技大学嵌入式软件工程中心
微控制器抽象层
• 通讯驱动-CAN驱动
–为上层的CAN 接口模块提供硬件抽象接口,负责对CAN 硬件传输进行初始化,实现事件通知,控制属于相同 CAN硬件单元的CAN控制器。 –CAN驱动尽可能合理地隐藏了相关CAN控制器的硬件专 用性。 –CAN驱动是最底层的一部分,为上层执行对硬件的访问 和提供硬件无关的API。上层中唯一能够访问CAN驱动 的是CAN接口。 –如果几个CAN控制器属于相同的CAN硬件单元,那么它 们能够由CAN驱动来控制 –一个CAN控制器总是与一个物理通道相关联。它被允许 与总线上的物理通道相连接,不管CAN接口是否将相关 的CAN控制器分别对待
汽车电子嵌入式驱动软件结构
电子科技大学嵌入式软件工程中心
主要内容
• • • • • 汽车电子软件体系结构 软件模块类型介绍 微控制器抽象层 ECU抽象层及示例 复杂驱动
电子科技大学嵌入式软件工程中心
• 基础软件体系结构-基本层:
汽车电子软件体系结构
电子科技大学嵌入式软件工程中心
• 基础软件体系结构-细化分层:
• I/O驱动-DIO驱动
– DIO通道的管脚和组以及端口进行读写 – 提供基于端口和通道的、对内部通用I/O断点的读和写 访问。这里的读和写并不被缓冲。这个驱动的基本行 为是同步的
电子科技大学嵌入式软件工程中心
微控制器抽象层
• I/O驱动-PORT驱动
– 微控制器所有端口的初始化
电子科技大学嵌入式软件工程中心
电子科技大学嵌入式软件工程中心
微控制器抽象层
• 微控制器驱动-通用定时器驱动GPT
– 不管是从上一个通知发生以来的相对时间消耗,还是 到下一个通知之间的剩余时间,都可以进行查询。 – 注意,GPT驱动仅产生时间基础,而不服务于时间计 数器。这个功能是由另一个模块(ICU驱动)提供的 – GPT驱动可以用来唤醒ECU,不管预定义的超时周期 是否过期。模式转换服务将GPT驱动在普通操作和睡 眠模式之间进行转换。 – 该驱动不提供超时周期,这些超时周期超过了被时钟 源、预定标器和计时寄存器所限制的最大值。用户必 须对这个进行处理。
汽车电子软件体系结构
电子科技大学嵌入式软件工程中心
软件模块类型介绍
驱动(Driver)
功能:控制和访问内部或外部设备
– 内部设备: • 设备位于微控制器内部,如:内部EEPROM、内部 CAN控制器、内部ADC • 内部设备的驱动称为内部驱动,并且驱动位于 微控制器驱动层 – 外部设备: • 设备位于在ECU硬件的微控制器外部,如:外部 EEPROM、外部Watchdog、外部Flash • 外部设备的驱动称为外部驱动,并且驱动位于 在ECU抽象层,它通过微控制器驱动层访问外部 设备,如:带SPI接口的外部EEPROM驱动通过 SPIHanderDriver驱动访问外部EEPROM
–提供外设的SPI读写通信控制驱动 –允许多个客户端对一个或多个SPI总线的并发访问。为 了抽象SPI的特征,SPIHandlerDriver要直接处理微控 制器中的片选引脚。这就意味着这些引脚对DIO驱动无 效 –SPI总线是一种主从多节点总线系统,主节点设置片选 (CS)来选择一个从节点来进行数据通信。SPI有一个 4线的同步串行接口。使用片选线来激活数据通信
电子科技大学嵌入式软件工程中心
微控制器抽象层
• 通讯驱动
–包括:SPI驱动、LIN驱动、CAN驱动、FlexRay驱动 –ECU板级上的通信驱动(e.g.,SPI,I2C) –车载通信驱动(e.g.,LIN,CAN,FlexRay网络)
电子科技大学嵌入式软件工程中心
微控制器抽象层
• 通讯驱动-SPI驱动
电子科技大学嵌入式软件工程中心
微控制器抽象层
• 通讯驱动-FlexRay驱动
–为上层的FlexRay 接口模块提供硬件抽象接口,负责 对FlexRay 硬件传输进行初始化,实现事件通知,控 制属于相同FlexRay 硬件单元的FlexRay 控制器 –FlexRay驱动模块必须为FlexRay接口模块、API的使用 者提供统一接口,以访问许多FlexRay通信控制器,这 些控制器通常是相同类型的。FlexRay驱动是一个软件 层,它将抽象功能请求映射到CC专用硬件的序列上。 CC的硬件实现将从FlexRay接口隐藏
电子科技大学嵌入式软件工程中心
微控制器抽象层
• 通讯驱动-SPI驱动
– SPI模块提供基于通道的对SPI总线上的不同设备的读、 写和传输访问,SPI通道代表数据元素(8到16比特)。 这些通道可能是顺序组合的,不能够被中断。通道有 一个静态配置定义的波特率、片选等等。SPI设备通常 由所使用的SPI硬件单元和相关的片选线来标识。这个 模块能够作为SPI主节点来使用 – 这个软件模块的功能范围应该是可静态配置的,以尽 可能多的适应每个ECU的时间需要。那就是说,比如 同步的、异步的、或者两者都有的SPI访问都可以存在 于ECU。因此,两个SPI驱动可以存在,但仅有一个处 理接口。
• I/O驱动-ADC驱动
–对微控制器内部ADC端口进行初始化和控制 –ADC驱动初始化并控制微控制器内部的模数转换单元。 该驱动包含一系列的基本功能函数。为了能够在某些 特殊的应用中进行信号的频率分析(例如,快速傅立 叶变换),就需要加强流式存取的功能
电子科技大学嵌入式软件工程中心
微控制器抽象层
电子科技大学嵌入式软件工程中心
软件模块类型介绍
处理程序(Handler) –处理程序是一个特殊接口,它控制一个或多个访问 程序对一个或多种驱动程序的并发、多重和异步方 式的访问,如:执行缓冲、队列、仲裁、多路传输 –处理程序不改变数据内容 –处理程序功能是提供合并的驱动或接口(e.g., SPIHandlerDriver,ADC Driver)
电子科技大学嵌入式软件工程中心
相关主题