EcuM – ECU 的启动

EcuM – 此 AUTOSAR 模块执行 ECU 的启动:第 1 部分

汽车之星

ECU 的启动顺序由 ECU 管理器模块或 EcuM 处理。EcuM 负责整个 ECU 的初始化和取消初始化。在执行微控制器的启动文件后,这是在启动期间执行的第一个模块。

 

-根据 AUTOSAR 规范,ECU 包括 BSW Manager (BswM)、Autosar OS 和 Scheduler Manager (SchM) 模块。因此,EcuM 负责 BswM、SchM 和 Autosar OS 模块的初始化和去初始化,以及一些基本的软件驱动模块。 

 

– EcuM 负责唤醒和关闭 ECU。众所周知,ECU 需要各种电源管理模式。所有这些电源管理模式都通过 EcuM 处理。所以 EcuM 负责处理各种 ECU 状态,包括进一步的 SLEEP 和 SHUTDOWN 状态

 

– EcuM 处理 ECU 的所有唤醒事件,区分实际唤醒事件和不稳定唤醒事件。表示在接收到唤醒事件后进行验证。

 

-它与通信管理器(ComM)和NM模块配合以在需要时关闭ECU。

AUTOSAR ECU 管理有两种变体:

 

灵活的 EcuM——然而,灵活的 EcuM 更强大,允许设置不同的场景并在它们之间转换,以允许:

  • 部分或快速启动,即 ECU 以有限的一组功能启动,并继续进行后续的逐步启动。
  • ECU 最少启动,然后是 BSW 和 SW-C 的交错启动,从而交错 BSW 和应用程序启动
  • 多种操作状态
  • 多核 ECU,其中不同状态(例如 STARTUP、SHUTDOWN、SLEEP 和 WAKE UP)在 ECU 的所有不同内核上得到很好的协调。
 

Fixed EcuM – Fixed EcuM 是一个基本软件模块,用于确定 ECU 状态的 OFF、RUN 和 SLEEP 以及这些状态之间的转换,例如 STARTUP 和 SHUTDOWN。这对于没有部分或快速启动等特殊要求的传统ECU来说已经足够了。固定 EcuM 不支持多核 ECU

 

固定 EcuM 的状态

本节仅适用于固定 EcuM,其中预定义了一组固定的状态。但是对于灵活的 EcuM,没有标准的 ECU 模式或状态,ECU 的集成商决定需要哪些状态并进行相应配置。

 

启动状态

这种状态分为两部分,一是OS初始化前,一是OS初始化后。STARTUP State 的主要目标是初始化 BSW 模块

 

运行状态

基础软件的所有模块,包括OS和RTE,初始化后,固定的EcuM模块进入RUN状态。ECU 状态管理器固定模块。这向应用层中的 SWC 表明 RTE 和 BSW 已经初始化并且现在可以开始工作。

 

关机状态

它处理基本软件模块的受控关闭,并导致 ECU 的三个选定关闭目标之一,即睡眠、关闭或复位。此状态下的关键活动是将非易失性数据写回 NVRAM。

 

睡眠状态

这是一种不执行任何代码的省电情况,尽管仍有持续的电源供应以保持 ECU 运行。SLEEP 状态提供了一组称为关机目标的睡眠模式。它提供了功耗和重启 ECU 时间之间的权衡。

 

唤醒状态

由于唤醒,ECU退出SLEEP状态时进入WAKEUP状态。它还提供了一个协议来验证一个 WakeUp 事件是否有效,或者它是否是由某些不确定的情况引起的。只要在 ECU 中建立了 CAN 总线通信链接。它接收作为 ECU 唤醒源的消息。但是,某些干扰可能会导致 CAN 总线之间的电压差,这可能是由 CAN 总线错误引起的。这是 ECU 应该忽略的不确定情况之一。

 

关闭状态

关闭状态描述了其电源完全关闭的状态。

 

灵活 EcuM 的阶段

灵活的 ECU 状态管理器的功能分为从 STARTUP 阶段到 SHUTDOWN 阶段的不同阶段。下图显示了灵活 EcuM 模块所有阶段的概览。

 

灵活的ECU

 

启动阶段

STARTUP 阶段分为两部分,一部分在 OS 初始化之前,一部分在 OS 初始化之后。STARTUP 阶段的主要目标是初始化各种基本软件模块。由于本文的范围是 ECU 的启动顺序,我们将在下一篇文章中更详细地了解 STARTUP 阶段。

 

上升阶段

ECU启动OS并完成SchM和BswM的启动后,ECU进入UP阶段。UP 阶段在 BSW Scheduler 启动并调用 BswM_Init 时开始。此时,内存管理还没有初始化,通信栈不存在,还没有启动软件组件(SW-CS)。该阶段由积分器定义,ECU 根据积分器完成的配置从一种状态移动到另一种状态,从一种模式移动到另一种模式。

 

集成商必须首先执行 NVRAM 块恢复、NVM 初始化,然后调用 NVM_Readall。积分器调用的 NvM_Readall 结束后,触发 COM、DEM 和 FIM 模块的启动并通知 BswM。因此,它负责通过 BswM 模块初始化通信堆栈。初始化 NVRAM 和 Com 堆栈后,ECU 可以启动进一步的 RTE。一旦BSW和RTE的所有模块都启动了,应用层的SWC终于可以开始发挥作用了。这些 SWC 以任意顺序启动。最后,当 ECU 到达可以关闭的位置时,它会读取自身信息以进入 SHUTDOWN 阶段。模式切换会影响要关闭的 SWC,并且在取消初始化时执行 BSW 模块。因此,我们可以说,就ECU(EcuM)而言,

 

关断阶段

当 API 被调用 EcuM_GoDown() 时,关闭阶段开始。这将处理基本软件模块的关闭并导致关闭目标之一,RESET 或 OFF。此阶段要完成的关键任务是写回 NVRAM 块。

在关闭结束时,调用 ShutdownOS() API。

 

睡眠阶段

在此步骤中,尽管仍为 ECU 供电,但不应执行任何代码。它被认为是一种节能状态。根据配置,ECU 可能会在这种情况下启用。EcuM 模块提供睡眠模式,这是总功耗和 ECU 重启时间之间的权衡。ECU 会响应预期或非预期唤醒事件的到来而唤醒。EcuM 模块提供的协议会忽略不稳定的唤醒事件

 

关闭阶段

当 ECU 断电时,它进入 OFF 位置。在这种情况下,如果唤醒源具有集成的功率控制,它可能仍然能够唤醒。

 

在下一部分中,我们将深入讨论 EcuM 模块的启动过程,并将探讨其他 BSW 模块在启动过程中是如何初始化的。

EcuM – 此 AUTOSAR 模块执行 ECU 的启动:第 2 部分

汽车之星

一世在这篇文章中,我们将详细了解ECU的STARTUP阶段。下图显示了 ECU 的启动顺序。

 

电子控制单元

 

EcuM_Init 之前的活动

一旦 ECU 启动,第一步就是 MCU 初始化。微控制器单元一接通电源,就会跳转到复位向量以运行引导加载程序代码。引导加载程序是基本控制器被称为硬件初始化的地方,例如存储器、定时器等。接下来,所有的 C 代码初始化都发生了。设置堆栈内存并初始化所有 C 变量。然后调用 EcuM_Init () API 调用 ECU 状态管理器并完成其余的启动序列。

 

StartPreOS 序列中的活动

激活后,ECUM 将执行下图中所描述的 StartPreOS 序列的所有步骤。这样做是为了让 ECU 准备好启动操作系统。该序列应尽可能短。StartPreOS 序列初始化启动 OS 所需的所有基本软件模块。我们现在将按照调用它们的顺序研究每个步骤。

 

欧共体

 

A – EcuM_AL_DriverInitZero – EcuM 没有严格定义驱动程序和硬件抽象模块的初始化。但是,它提供了两个标注 EcuM_AL_DriverInitZero 和 EcuM_AL_DriverInitOne 来定义初始化块 0 和 1。除了驱动程序初始化之外,这些块还可能包含任何 preOS、低级初始化代码。

 

B – EcuM_DeterminePbConfiguration – 此标注返回一个指向完全初始化的 EcuM_ConfigType 结构的指针,该结构包含所有 BSW 模块构建后配置的构建后配置数据。

 

C – EcuM_AL_DriverInitOne – ECU 管理器模块在 preOS 序列中调用 EcuM_AL_DriverInitOne。除了驱动程序初始化之外,它还执行由 AUTOSAR MCU 驱动程序软件规范定义的初始化序列。

 

现在让我们看看 init 块 0 和 1 的可能活动序列。根据硬件和软件配置,其中一些 BSW 模块可能会被添加或删除,其他序列也可能是可能的。这一切都取决于集成商。

 

Init Block 0 内的初始化活动 (EcuM_AL_DriverInitZero)

  • 默认错误跟踪器 - DET 模块允许其他模块报告任何开发错误
  • 诊断事件管理器——DEM 模块提供诊断服务
  • 访问构建后配置数据的驱动程序——这些驱动程序不依赖于操作系统的构建后配置。
 

Init Block 1 (EcuM_AL_DriverInitOne) 内的初始化活动

 
  • MCU 驱动程序——MCU 驱动程序为微控制器单元的基本初始化提供服务,如启动代码,以及 MCU 的断电和复位功能。
  • 端口驱动程序——处理片上端口引脚。初始化MCU端口结构,根据需要为不同的端口分配不同的功能
  • DIO 驱动程序——它在 MCU I/O 引脚上提供通用输入/输出功能
  • 通用定时器 – GPT 驱动程序提供对 MCU 上硬件定时器的访问和控制。
  • 看门狗驱动程序——它提供初始化、改变操作模式和触发看门狗定时器的服务。
  • ADC 驱动程序——提供触发模数转换的服务。
  • ICU 驱动程序——ICU 驱动程序提供用于解调 PWM 信号、计数脉冲、测量频率和占空比、生成简单中断和唤醒中断的服务。
  • PWM 驱动器——根据设置的占空比和信号时间周期生成具有可变脉冲宽度的脉冲。
 

D – 获取重置原因– EcuM_GetValidatedWakeupEvents API 返回已验证的唤醒事件。

 

E – 选择默认关闭目标– 这些设置退出 UP 阶段后 ECU 将运行的关闭状态。可配置为OFF、SLEEP 和RESET 这三者之一。

 

F – 启动 OS – 这里 AUTOSAR OS 开始执行。

 

StartPostOS 序列中的活动

 

启动序列的第二部分,即 StartPostOS 序列在调用 EcuM_StartupTwo 后被激活。下图显示了 ECU 初始化中 postOS 启动后的顺序。

 

欧共体

 

启动 BSW 调度程序 (SchM) – SchM 代表 BSW 调度程序。该中央模块的工作是使用 AUTOSAR OS 提供的方法以定义明确且高效的方式组装和实施 BSW 模块。它使用 AutoSAR OS 中的“TASK”概念来触发 BSW 模块的关键处理。因此,由于它使用 AUTOSAR OS,因此在 PostOS 初始化序列中引入了它。

 

Init BSW Scheduler – SchM_Init () 是为 SchM 模块的初始化定义的函数。它用于分配和初始化 BSW Scheduler 模块使用的资源。如前所述,这个 AUTOSAR 可以调用操作系统服务来启动操作系统“工作”。

 

Init BSW Mode Manager (BswM) – BSWM 是 AUTOSAR 服务层中的一个模块,它与各种基础和应用软件模块交互。BSW 负责两个主要功能,模式仲裁和模式控制。它应用可配置的规则和操作列表来评估切换 ECU 模式的条件并实施所需的操作。BswM_Init () API 初始化 BSW 模式管理器模块。BswM_Init 需要在启动 OS 和 SchM 之前进行初始化。

 

结论

因此,我们遵循了电子控制单元的整个初始序列。为了初始化 MCU 硬件和外围驱动程序,ECU 状态管理器模块被初始化。此外,EcuM 首先执行明确定义的启动序列以初始化 BSW 调度程序,最后是 BSW 管理器模块 (BWSM) Autosar OS。一旦 SchM 和 BswM 启动并运行,我们最终可以启动 RTE 和其他 BSW 模块,然后是 COM 堆栈。最后,在此 ECU 上使用 SW-C 运行,现在已启动并运行,可以使用 AUTOSAR 架构的不同层和模块开始其操作。当一切都在 EcuM 上运行时,它会管理不同的模式开关以确保 ECU 正常运行,直到最终通过关闭 ECU 电源使其进入关闭状态。

  • 3
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值