Files
autosar_standard_spec_v4.4/ModeManagement/AUTOSAR_SWS_ECUStateManager.md
T

42 KiB
Raw Blame History

ECU 状态管理器规范 (Specification of ECU State Manager)

项目 内容
文档标识号 078
文档标题 Specification of ECU State ManagerECU 状态管理器规范)
文档所有者 AUTOSAR
文档责任方 AUTOSAR
文档状态 Final(正式版)
所属 AUTOSAR 标准 Classic Platform(经典平台)
所属标准发布版本 4.4.0

文档变更历史 (Document Change History)

日期 发布版本 变更人 变更说明
2018-10-31 4.4.0 AUTOSAR Release Management 通过 EcuM_GoDownHaltPoll 重新处理 BswM 接口;移除 EcuM 固定版本引用
2017-12-08 4.3.1 AUTOSAR Release Management 适配 API Can_CheckWakeup;移除 ConfigPtr 参数;移除 Default 错误;移除未使用的 DIO 驱动;EcuM AUTOSAR 服务仅在服务分区上配置
2016-11-30 4.3.0 AUTOSAR Release Management 部分网络集群支持;初始化 BSW 调度器分割;添加驱动程序初始化列表;移除 EcuM_StateType
2015-07-31 4.2.2 AUTOSAR Release Management 重新处理从核轮询序列;审查多核关闭同步;重新分类错误类型;编辑性修改
2014-10-31 4.2.1 AUTOSAR Release Management 添加开关配置;为 InitListZero/InitListOne 定义初始化顺序;纠正 c-init-data 结构名称模式;解决类型冲突;编辑性修改
2014-03-31 4.1.3 AUTOSAR Release Management 重新处理 EcuM 错误;解决 API 和接口之间的不一致;解决类型冲突;编辑性修改
2013-10-31 4.1.2 AUTOSAR Release Management 为服务接口添加 API 表;修复可追踪性问题;全面清理需求(审查不同接口、操作、描述和图);编辑性修改
2013-03-15 4.1.1 AUTOSAR Administration 在关闭期间有挂起唤醒事件的情况下指定要使用的复位模式;为复位循环检测添加 callout;扩展函数 EcuM_GetMostRecentShutdown 的参数"time"的规范;改进配置描述;添加新的 API 以启用 CAN/FR 唤醒的异步 Trcv 处理;EcuM Flex 的适配以支持分布在多个分区上的 BSW 模块;重新分类哪些生产错误是扩展生产错误;在 Client/Server-Interfaces 的操作中添加可能的错误,其中未定义错误;增强配置以通过 EcuM Flex 初始化 BSW 模块
2011-12-22 4.0.3 AUTOSAR Administration 修复 EcuM 和 BswM 之间的互操作性问题;更一致地描述 ECU State Manager Flexible 的术语;修改睡眠序列以最小化唤醒中断的丢失
2010-09-30 3.1.5 AUTOSAR Administration 更新 AUTOSAR 服务的伪代码;更新多核系统的启动过程
2010-02-02 3.1.4 AUTOSAR Administration 移除状态机以适应模式相关的调度;添加多核支持;添加报警时钟功能;修订免责声明
2008-08-13 3.1.1 AUTOSAR Administration 法律免责声明修订
2007-12-21 3.0.1 AUTOSAR Administration 修复唤醒机制;在启动、关闭和睡眠期间包含看门狗管理器的可选触发;扩展启动序列以具有更大的灵活性并直接初始化所有其他 BSW 模块;从 BSW UML 模型生成 API;从元模型生成配置;文档元信息扩展;进行小幅布局调整
2007-01-24 2.1.15 AUTOSAR Administration 更正启动流程和唤醒概念;为 AUTOSAR 端口添加规范;修改配置以符合变体管理;添加新的 API 服务;法律免责声明修订;添加发布说明;"用户建议"修订;添加"修订信息"
2006-05-16 2.0 AUTOSAR Administration 首次发布

免责声明 (Disclaimer)

本作品(规范和/或软件实现)及其包含的材料由 AUTOSAR 发布,仅用于提供信息。 AUTOSAR 和为其作出贡献的公司不对该作品的任何使用承担责任。

本作品中包含的材料受版权及其他类型的知识产权保护。 对本作品中包含的材料的商业利用需要此类知识产权的许可。

本作品可在不进行任何修改的情况下,以任何形式或方式被使用或复制,仅用于提供信息的目的。 出于任何其他目的,未经出版商书面许可,不得以任何形式或方式使用或复制本作品的任何部分。

本作品仅为汽车应用而开发。 它既未为非汽车应用开发,也未为非汽车应用进行测试。

"AUTOSAR" 一词和 AUTOSAR 标志是注册商标。


目录 (Table of Contents)

  1. 引言和功能概述 (Introduction and Functional Overview) ........ 11
  2. 定义和缩写词 (Definitions and Acronyms) ......................... 13
  3. 相关文档 (Related documentation) ............................................ 14
  4. 约束和假设 (Constraints and Assumptions) .......................... 16
  5. 与其他模块的依赖关系 (Dependencies to other modules) ... 17
  6. 需求追踪 (Requirements traceability) — 摘要 ......................... 21
  7. 功能规范 (Functional Specification) — 摘要 ........................... 27
  8. API 规范 (API specification) — 摘要 ..................................... 96
  9. 序列图 (Sequence Charts) — 摘要 ........................................ 152
  10. 配置规范 (Configuration specification) — 摘要 ............... 174
  11. 不适用需求 (Not applicable requirements) ..................... 195

已知限制 (Known Limitations)

  • 在多核上下文中,ECU Manager 模块接口必须被指定为可重入的(reentrant)。

1 引言和功能概述 (Introduction and Functional Overview)

ECU Manager 模块(如本规范中所规定)是管理 ECU 状态共同方面的基础软件模块(参见 [1])。 具体而言,ECU Manager 模块:

  • 初始化和反初始化 OS、SchM 和 BswM 以及一些基础软件驱动模块。
  • 在请求时将 ECU 配置为 SLEEP 和 SHUTDOWN
  • 管理 ECU 上的 所有唤醒事件

ECU Manager 模块提供 唤醒验证协议,以区分"真实的"唤醒事件和"杂散的"唤醒事件。

此外:

  • 部分或快速启动:ECU 以有限的功能启动,然后由应用程序决定逐步继续启动。
  • 交错启动:ECU 最小化启动,然后启动 RTE 以尽快在 SW-C 中执行功能。 然后继续启动更多的 BSW 和 SW-C,从而交错 BSW 和应用程序功能。
  • 多个操作状态:ECU 具有多于一个 RUN 状态。 这除其他外细化了从 SLEEP 状态到 RUN 状态的光谱的概念。 现在可以存在从经典 RUN(完全操作)到最深 SLEEP(处理器停止)的连续操作状态。
  • 多核 ECUSTARTUP、SHUTDOWN、SLEEP 和 WAKEUP 在 ECU 的所有核上协调。

灵活的 ECU 管理采用了由以下模块提供的通用模式管理设施:

  • RTE 和 BSW Scheduler 模块 [15] 现在合并为一个模块:此模块支持自由可配置的 BSW 和应用程序模式及其模式切换设施。
  • BSW 模式管理器模块 [22]:此模块实现可配置的规则和动作列表,以评估切换 ECU 模式的条件并实施必要的动作。

因此,使用灵活的 ECU 管理,大多数 ECU 状态不再在 ECU Manager 模块本身中实现。 通常,ECU Manager 模块在以下情况下接管控制,当通用模式管理设施不可用时:

  • 早期 STARTUP 阶段
  • 后期 SHUTDOWN 阶段
  • 调度器锁定设施的 SLEEP 阶段

在 ECU Manager 模块的 UP 阶段期间,BSW 模式管理器 负责进一步的动作。 而 ECU Manager 模块仲裁来自 SW-C 的 RUN 和 POST_RUN 请求,并将模式状态通知 BswM。

1.1 与先前 ECU Manager 模块版本的向后兼容性 (Backwards Compatibility to Previous ECU Manager Module Versions)

如果相应地配置,灵活的 ECU 管理与先前的 ECU Manager 版本向后兼容。

有关兼容性的配置的更多信息,请参见"模式管理指南" [23]。


2 定义和缩写词 (Definitions and Acronyms)

本节定义对 ECU Manager 具有特殊意义的术语和相关模块的缩写词。

2.1 术语 (Terminology)

术语 描述
Callback(回调) 参见术语表 [7]。
CalloutCallout "Callouts"是系统设计者可以用代码替换的函数存根,通常在配置时为 ECU Manager 模块添加功能。 Callout 分为两类。 一类提供强制的 ECU Manager 模块功能并用作硬件抽象层。 另一类提供可选功能。
Integration Code(集成代码) 参见术语表 [7]。
Mode(模式) 模式是车辆中运行的各种状态机(不仅是 ECU Manager)的某些状态的集合,与特定实体、应用程序或整个车辆相关。
Passive Wakeup(被动唤醒) 由连接的总线引起的唤醒,而不是由定时器或传感器活动等内部事件引起的唤醒。
Phase(阶段) ECU Manager 的动作和事件的逻辑或时间集合,例如 STARTUP、UP、SHUTDOWN、SLEEP。 阶段可以由子阶段组成,如果它们主要用于将执行的动作序列分组为逻辑单元,则通常称为序列。 此上下文中的阶段不是 AUTOSAR 方法论的阶段。
Shutdown Target(关闭目标) ECU 必须在进入睡眠、断电或复位之前关闭。 因此 SLEEP、OFF 和 RESET 是有效的关闭目标。 通过选择关闭目标,应用程序可以将其对下次关闭后 ECU 行为的意愿传达给 ECU Manager 模块。
State(状态) 状态对它们各自的 BSW 组件是内部的,因此对应用程序不可见。 因此它们仅由 BSW 的内部状态机使用。 ECU Manager 内的状态构建阶段,因此处理模式。
Wakeup Event(唤醒事件) 导致唤醒的物理事件。 CAN 消息或切换的 IO 线路可以是唤醒事件。 类似地,内部软件表示(例如中断)也可以称为唤醒事件。
Wakeup Reason(唤醒原因) 唤醒原因是作为上次唤醒的实际原因的唤醒事件。
Wakeup Source(唤醒源) 处理唤醒事件的外设或 ECU 组件称为唤醒源。

2.2 缩写词 (Acronyms)

缩写 描述
BswM Basic Software Mode Manager(基础软件模式管理器)
DEM Diagnostic Event Manager(诊断事件管理器)
DET Default Error Tracer(默认错误跟踪器)
EcuM ECU Manager
GPT General Purpose Timer(通用定时器)
ICU Input Capture Unit(输入捕获单元)
ISR Interrupt Service Routine(中断服务例程)
MCU Microcontroller Unit(微控制器单元)
NVRAM Non-volatile random access memory(非易失性随机访问存储器)
OS Operating System(操作系统)
RTE Runtime Environment(运行时环境)
VFB Virtual Function Bus(虚拟功能总线)

3.1 输入文档 (Input documents)

  • [1] List of Basic Software Modules — AUTOSAR_TR_BSWModuleList
  • [2] Layered Software Architecture — AUTOSAR_EXP_LayeredSoftwareArchitecture
  • [3] General Requirements on Basic Software Modules — AUTOSAR_SWS_BSWGeneral
  • [4] General Requirements on Basic Software Modules — AUTOSAR_SRS_BSWGeneral
  • [5] Requirements on Mode Management — AUTOSAR_SRS_ModeManagement
  • [6] Specification of ECU Configuration — AUTOSAR_TPS_ECUConfiguration

无。

  • [7] Glossary — AUTOSAR_TR_Glossary
  • [8] Specification of Communication Manager — AUTOSAR_SWS_COMManager
  • [9] Specification of Watchdog Manager — AUTOSAR_SWS_WatchdogManager
  • [10] Specification of MCU Driver — AUTOSAR_SWS_MCUDriver
  • [11] Specification of SPI Handler/Driver — AUTOSAR_SWS_SPIHandlerDriver
  • [12] Specification of EEPROM Interface — AUTOSAR_SWS_EEPROMDriver
  • [13] Specification of Flash Interface — AUTOSAR_SWS_FlashDriver
  • [14] Specification of Operating System — AUTOSAR_SWS_OS
  • [15] Specification of RTE — AUTOSAR_SWS_RTE
  • [16] Specification of the Virtual Function Bus — AUTOSAR_EXP_VFB
  • [17] Specification of Diagnostic Event Manager — AUTOSAR_SWS_DiagnosticEventManager
  • [18] Specification of Default Error Tracer — AUTOSAR_SWS_DefaultErrorTracer
  • [19] Specification of CAN Transceiver Driver — AUTOSAR_SWS_CANTransceiverDriver
  • [20] Specification of C Implementation Rules — AUTOSAR_TR_CImplementationRules
  • [21] Basic Software Module Description Template — AUTOSAR_TPS_BSWModuleDescriptionTemplate
  • [22] Specification of BSW Mode Manager — AUTOSAR_SWS_BSWModeManager
  • [23] Guide to Mode Management — AUTOSAR_Guide_ModeManagement

AUTOSAR 提供了基础软件模块的通用规范 [4](SWS BSW General),这也对 ECU State Manager 有效。 因此,SWS BSW General 应被视为 ECU State Manager 的附加必需规范。


4 约束和假设 (Constraints and Assumptions)

4.1 限制 (Limitations)

ECU 不能总是被关闭(即零功耗)。

理由:关闭目标 OFF 只能使用 ECU 特殊硬件(例如电源保持电路)来实现。 如果此硬件不可用,本规范建议发出复位。 但是,允许其他默认行为。

4.2 硬件要求 (Hardware Requirements)

在本节中,术语 "EcuM RAM" 指的是为 ECU Manager 模块的用途而保留的 RAM 块。

  • EcuM RAM 应在 ECU 时钟关闭时保持重要数据的内容。
    • 理由:此需求是实现 7.5 节 SLEEP 中所需的睡眠状态所必需的。
  • EcuM RAM 应提供一个非初始化区域,该区域在复位周期内保持内容。
  • EcuM RAM 的非初始化区域(参见 EcuM2869应仅在上电事件(clamp 30)时初始化。
  • 系统设计者负责为 ECU RAM 的非初始化区域建立初始化策略。

4.3 适用汽车域 (Applicability to car domains)

ECU Manager 模块适用于所有汽车域。


5 与其他模块的依赖关系 (Dependencies to other modules)

以下各节概述了与其他模块的重要关系。 它们还包含这些模块必须满足的一些需求,以便与 ECU Manager 模块正确协作。

如果将数据指针传递给 BSW 模块,则地址需要指向内存空间共享部分中的位置。

5.1 SPAL 模块 (SPAL Modules)

5.1.1 MCU 驱动 (MCU Driver)

MCU 驱动是由 ECU Manager 模块初始化的第一个基础软件模块。 但是,当 MCU_Init 返回时(参见 SWS_EcuM_02858),MCU 模块和 MCU 驱动模块不一定完全初始化。 可能需要其他 MCU 模块特定的步骤来完成初始化。 ECU Manager 模块提供两个 callout,可在其中放置此附加代码。 有关详细信息,请参见 7.3.2 节"StartPreOS 序列中的活动"。

5.1.2 驱动依赖关系和初始化顺序 (Driver Dependencies and Initialization Order)

BSW 驱动可能彼此依赖。 一个典型的例子是看门狗驱动,它需要 SPI 驱动来访问外部看门狗。 这意味着,一方面,驱动可以堆叠(与 ECU Manager 模块无关),另一方面,被调用的模块必须在调用模块初始化之前初始化。

系统设计者负责在配置时定义初始化顺序,在 EcuMDriverInitListZero(参见 ECUC_EcuM_00114)、EcuMDriverInitListOne(参见 ECUC_EcuM_00111)、EcuMDriverRestartList(参见 ECUC_EcuM_00115)和 EcuMDriverInitListBswM(参见 ECUC_EcuM_00226)中定义。

5.2 具有唤醒能力的外设 (Peripherals with Wakeup Capability)

唤醒源必须由驱动处理和封装。

这些驱动必须遵循本文档中介绍的协议和需求,以确保无缝集成到 AUTOSAR BSW 中。 基本上,协议如下:

驱动必须调用 EcuM_SetWakeupEvent(参见 SWS_EcuM_02826)以通知 ECU Manager 模块已检测到挂起的唤醒事件。 驱动不仅在睡眠阶段 ECU 等待唤醒事件时调用 EcuM_SetWakeupEvent,而且在驱动初始化阶段和 EcuM_MainFunction 运行期间的正常操作期间调用。

驱动必须提供一个显式函数以将唤醒源置于睡眠状态。 此函数应将唤醒源置于节能和惰性操作模式中,并重新装备唤醒通知机制。

如果唤醒源能够产生杂散事件1,则:

  • 驱动,或
  • 使用驱动的软件栈,或
  • 另一个适当的 BSW 模块

必须为唤醒事件提供验证 callout 或调用 ECU Manager 模块的验证函数。 如果不需要验证,则此需求不适用于相应的唤醒源。

1 杂散唤醒事件可能由 EMV 尖峰、唤醒线路上的弹跳效应等引起。

5.3 操作系统 (Operating System)

ECU Manager 模块启动 AUTOSAR OS 并关闭它。 ECU Manager 模块定义了协议,说明 OS 启动之前如何处理控制以及 OS 关闭之后如何处理控制。

5.4 BSW Scheduler

ECU Manager 模块初始化 BSW SchedulerECU Manager 模块还包含 EcuM_MainFunction(参见 SWS_EcuM_02837),该函数被调度以定期评估唤醒请求并更新报警时钟。

5.5 BSW 模式管理器 (BSW Mode Manager)

ECU 状态通常实现为 AUTOSAR 模式,BSW 模式管理器负责监视 ECU 中的变化并相应地影响 ECU 状态机的相应更改。 有关 AUTOSAR 模式管理的讨论,请参见虚拟功能总线的规范 [16],有关 ECU 状态机实现细节和有关如何配置 BSW 模式管理器以实现 ECU 状态机的指南,请参见模式管理指南 [23]。

BSW 模式管理器只能在模式管理可操作之后(即在 SchM 初始化之后直到 SchM 被反初始化或停止)才能管理 ECU 状态机。 当 BSW 模式管理器不可操作时,ECU Manager 模块接管 ECU 的控制。

因此,ECU Manager 模块在 ECU 启动后立即接管控制,并在初始化 SchM 和 BswM 之后将控制权下放给 BSW 模式管理器。

BswM 将 ECU 的控制权传递回 ECU Manager 模块以锁定操作系统并处理唤醒事件。

BswM 还会在关闭 OS 之前立即将控制权传递回 ECU Manager 模块。

验证唤醒源时,ECU Manager 模块通过模式切换请求将唤醒源状态更改指示给 BswM。

5.6 软件组件 (Software Components)

ECU Manager 模块处理以下 ECU 全局属性:

  • 关闭目标。

本规范假定 SW-C 通过 AUTOSAR 端口设置这些属性,通常由 SW-C 的某些 ECU 特定部分设置。 ECU Manager 不阻止 SW-C 覆盖由 SW-C 设置的设置。 必须在更高级别定义策略。

以下措施可能有助于解决此问题:

  • SW-C 模板可能包含一个字段以指示 SW-C 是否设置关闭目标。
  • 生成工具可能只允许访问关闭目标的一个 SW-C 的配置。

5.7 文件结构 (File Structure)

5.7.1 代码文件结构 (Code file structure)

本规范未完全定义代码文件结构。

SWS_EcuM_02990 — ECU Manager 模块实现应提供一个单一的 EcuM_Callout_Stubs.c 文件,其中包含此实现中实现的 callout 的存根(有关可能实现的 callout 列表,请参见 8.6 节)。 ()

EcuM_Callout_Stubs.c 是否可以手动编辑或仅由其他生成的文件组成取决于实现。

5.7.2 头文件结构 (Header file structure)

有关与其他模块的依赖关系,另请参见 8.7 节"预期接口"。


6 需求追踪 (Requirements traceability) — 摘要

下表列出了 EcuM 规范中的关键需求 ID 及其所满足的 SRS 需求。 完整的需求追踪表请参见原始 PDF 文档。

需求 ID 描述 由以下 SWS 需求满足
SRS_BSW_00005 MCAL 模块可能没有硬编码的水平接口 SWS_EcuM_NA_0
SRS_BSW_00101 基础软件模块应能在单独的初始化函数中初始化变量和硬件 SWS_EcuM_02811
SRS_BSW_00172 在基础软件模块内构建的调度策略应与系统中使用的策略兼容 SWS_EcuM_02836
SRS_BSW_00301 所有 AUTOSAR 基础软件模块应仅导入必要的信息 SWS_EcuM_02810
SRS_BSW_00323 所有 AUTOSAR 基础软件模块应检查传递的 API 参数的有效性 SWS_EcuM_03009
SRS_BSW_00327 错误值命名约定 SWS_EcuM_04032
SRS_BSW_00333 对于每个回调函数,应指定其是否从中断上下文调用 SWS_EcuM_02171, SWS_EcuM_02345
SRS_BSW_00337 开发错误的分类 SWS_EcuM_04032
SRS_BSW_00339 报告生产相关错误状态 SWS_EcuM_02987
SRS_BSW_00350 所有 AUTOSAR 基础软件模块应允许... SWS_EcuM_04032
SRS_ModeMgm_09136 EcuM 应是所有唤醒事件的接收者 SWS_EcuM_02826
SRS_ModeMgm_09100 唤醒源的选择应可配置 SWS_EcuM_02816, ...
SRS_ModeMgm_09101 应提供查询复位原因的 API SWS_EcuM_02853, ...
SRS_ModeMgm_09119 应提供多种睡眠模式 SWS_EcuM_02796, ...
SRS_ModeMgm_09127 EcuM 应在关闭过程中适当地反初始化基础软件模块 SWS_EcuM_02849
SRS_ModeMgm_09128 应支持多个关闭目标 SWS_EcuM_02596, ...
SRS_ModeMgm_09136 EcuM 应是所有唤醒事件的接收者 SWS_EcuM_02826
SRS_ModeMgm_09165 EcuM 应提供服务以请求和释放 POST-RUN 状态 SWS_EcuM_xxxxx
SRS_ModeMgm_09166 EcuM 应评估保持 POST-RUN 状态的条件 SWS_EcuM_xxxxx
SRS_ModeMgm_09234 EcuM 应处理 BSW 模块的初始化 SWS_EcuM_xxxxx
SRS_ModeMgm_09235 EcuM 应提供两个用于关闭 ECU 的目标 SWS_EcuM_xxxxx
SRS_ModeMgm_09236 应有一个区分不同核的 EcuM_Init 函数实例 SWS_EcuM_xxxxx
SRS_ModeMgm_09237 RTE_Start 应该在每个核上调用 SWS_EcuM_xxxxx
SRS_ModeMgm_09238 状态变化应为 ECU 全局的 SWS_EcuM_xxxxx
SRS_ModeMgm_09239 为了关闭,ShutdownAllCores 应在同步所有核后在主核上调用 SWS_EcuM_xxxxx
SRS_ModeMgm_09254 唤醒事件的验证和处理应在本地完成 SWS_EcuM_xxxxx

完整的需求追踪表见原始 PDF 文档。


7 功能规范 (Functional Specification) — 摘要

翻译说明:本章详细描述了 EcuM 的功能行为。 由于内容非常详尽(包含 100+ 个 SWS_EcuM_xxxxx 需求),本节仅概述关键概念。 完整的功能规范(包括所有状态机描述、序列图、活动定义等)请参见原始 PDF 文档。

7.1 ECU Manager 模块的阶段 (Phases of the ECU Manager Module)

EcuM 模块具有以下阶段:

  • STARTUP(启动):初始化所有 BSW 模块,包括 OS 和 RTE。
  • UP(运行):ECU 完全运行,所有 BSW 模块已初始化,应用程序可以运行。
  • SHUTDOWN(关闭):执行关闭操作,反初始化 BSW 模块。
  • SLEEP(睡眠):进入低功耗状态,可以是 SLEEP(可唤醒)或 OFF(不可唤醒)。
  • OFF(关闭)ECU 断电。

7.1.1 STARTUP 阶段 (STARTUP Phase)

STARTUP 阶段包括以下子阶段:

  • 7.1.1.1 STARTUP I — 在 OS 启动之前
  • 7.1.1.2 STARTUP II — 在 OS 启动之后,但在 RTE 启动之前

7.1.2 UP 阶段 (UP Phase)

UP 阶段是 ECU 完全运行的状态。 在此阶段:

  • BswM 负责处理模式请求
  • EcuM 仲裁 RUN 和 POST_RUN 请求
  • EcuM 处理唤醒验证

7.1.3 SHUTDOWN 阶段 (SHUTDOWN Phase)

SHUTDOWN 阶段包括以下子阶段:

  • 7.1.3.1 OffPreOS — 在 OS 停止之前
  • 7.1.3.2 OffPostOS — 在 OS 停止之后

7.1.4 SLEEP 阶段 (SLEEP Phase)

SLEEP 阶段包括以下子阶段:

  • 7.1.4.1 GoSleep — 进入睡眠
  • 7.1.4.2 Halt — 停止(处理器停止)
  • 7.1.4.3 Poll — 轮询(处理器仍运行但等待唤醒)
  • 7.1.4.4 WakeupRestart — 唤醒重启

7.1.5 OFF 阶段 (OFF Phase)

OFF 阶段是 ECU 完全断电的状态。

7.2 ECU Manager 的结构描述 (Structural Description of the ECU Manager)

7.2.1 标准化的 AUTOSAR 软件模块 (Standardized AUTOSAR Software Modules)

ECU Manager 模块协调以下标准化 AUTOSAR 软件模块:

  • DEM (Diagnostic Event Manager)
  • DET (Default Error Tracer)
  • MCU (Microcontroller Unit Driver)
  • OS (Operating System)
  • RTE (Runtime Environment)
  • SchM (BSW Scheduler)
  • WdgM (Watchdog Manager)
  • ComM (Communication Manager)
  • BswM (BSW Mode Manager)

7.2.2 软件组件 (Software Components)

EcuM 与 SW-C 通过 AUTOSAR 端口进行通信,SW-C 可以:

  • 请求 RUN 状态
  • 释放 RUN 状态
  • 请求 POST_RUN 状态
  • 释放 POST_RUN 状态
  • 设置关闭目标
  • 设置 boot 目标
  • 设置报警时钟

7.3 STARTUP 阶段 (STARTUP Phase)

7.3.1 EcuM_Init 之前的活动 (Activities before EcuM_Init)

EcuM_Init 之前,只有 MCU 驱动已初始化。 启动代码调用 EcuM_Init

7.3.2 StartPreOS 序列中的活动 (Activities in StartPreOS Sequence)

StartPreOS 序列由两个 callout 组成:

  • EcuM_AL_DriverInitOne — 在 MCU_Init 之后立即调用
  • EcuM_AL_DriverInitZero — 在 EcuM_AL_DriverInitOne 之后调用

这些 callout 用于初始化 EcuMDriverInitListOneEcuMDriverInitListZero 中配置的驱动程序。

7.3.3 StartPostOS 序列中的活动 (Activities in the StartPostOS Sequence)

StartPostOS 序列由以下步骤组成:

  1. 调用 SchM_Init
  2. 调用 BswM_Init
  3. 调用 SchM_Start
  4. 调用 Rte_Start
  5. 调用 EcuM_AL_DriverInitListBswMEcuM Flex
  6. 启动应用任务

7.3.4 检查配置一致性 (Checking Configuration Consistency)

EcuM 检查其配置的一致性。 配置错误由 DET 报告。

7.3.5 驱动初始化 (Driver Initialization)

驱动程序按以下顺序初始化:

  1. EcuMDriverInitListZero — 在 OS 之前
  2. EcuMDriverInitListOne — 在 OS 之后但在 BswM 之前
  3. EcuMDriverInitListBswM — 在 BswM 中(仅 EcuM Flex
  4. EcuMDriverRestartList — 在分区重启时

7.3.6 DET 初始化 (DET Initialization)

DET 在 EcuM_Init 期间初始化。

7.3.7 BSW 初始化 (BSW Initialization)

BSW 模块由 EcuM 通过驱动初始化列表进行初始化。

7.4 SHUTDOWN 阶段 (SHUTDOWN Phase)

7.4.1 OffPreOS 序列中的活动 (Activities in the OffPreOS Sequence)

OffPreOS 序列:

  1. BswM 接收关闭请求
  2. 停止 RTE
  3. 反初始化 BSW 模块
  4. 停止 OS

7.4.2 OffPostOS 序列中的活动 (Activities in the OffPostOS Sequence)

OffPostOS 序列在 OS 停止后执行最终关闭操作。

7.5 SLEEP 阶段 (SLEEP Phase)

7.5.1 GoSleep 序列中的活动 (Activities in the GoSleep Sequence)

GoSleep 序列将 ECU 准备进入睡眠。

7.5.2 Halt 序列中的活动 (Activities in the Halt Sequence)

Halt 序列使处理器停止,等待唤醒事件。

7.5.3 Poll 序列中的活动 (Activities in the Poll Sequence)

Poll 序列使处理器保持运行但等待唤醒事件。

7.5.4 离开 Halt 或 Poll (Leaving Halt or Poll)

当检测到唤醒事件时,处理器离开 Halt 或 Poll 状态。

7.5.5 WakeupRestart 序列中的活动 (Activities in the WakeupRestart Sequence)

WakeupRestart 序列在唤醒事件后重新启动 ECU。

7.6 UP 阶段 (UP Phase)

7.6.1 报警时钟处理 (Alarm Clock Handling)

EcuM 提供报警时钟服务,允许 SW-C 设置、取消和读取报警。

7.6.2 唤醒源状态处理 (Wakeup Source State Handling)

EcuM 跟踪所有唤醒源的状态。

7.6.3 唤醒状态的内部表示 (Internal Representation of Wakeup States)

唤醒状态包括:

  • ECUM_WKSTATUS_NONE — 无唤醒
  • ECUM_WKSTATUS_PENDING — 唤醒挂起
  • ECUM_WKSTATUS_VALIDATED — 唤醒已验证
  • ECUM_WKSTATUS_EXPIRED — 唤醒已过期

7.6.4 WakeupValidation 序列中的活动 (Activities in the WakeupValidation Sequence)

WakeupValidation 序列验证唤醒事件以区分真实唤醒和杂散唤醒。

7.6.5 唤醒验证的需求 (Requirements for Wakeup Validation)

EcuM 应在收到唤醒指示后启动超时(T_wake_up_timeout),如果在超时到期前收到有效消息,则验证唤醒事件。

7.6.6 唤醒源和复位原因 (Wakeup Sources and Reset Reason)

EcuM 维护唤醒原因和复位原因的记录。

7.6.7 具有集成电源控制的唤醒源 (Wakeup Sources with Integrated Power Control)

某些唤醒源具有集成的电源控制。

7.7 关闭目标 (Shutdown Targets)

7.7.1 睡眠 (Sleep)

关闭到 SLEEP 状态使 ECU 进入低功耗但可唤醒的状态。

7.7.2 复位 (Reset)

关闭到 RESET 状态会复位 ECU。

7.8 报警时钟 (Alarm Clock)

7.8.1 报警时钟和用户 (Alarm Clocks and Users)

报警时钟可以被 SW-C 用于调度未来的唤醒事件。

7.8.2 EcuM 时钟时间 (EcuM Clock Time)

EcuM 时钟时间基于相对时间,自 ECU 上电以来。

7.9 多核 (MultiCore)

7.9.1 主核 (Master Core)

主核负责协调其他核。

7.9.2 从核 (Slave Core)

从核由主核启动。

7.9.3 主核-从核信令 (Master Core Slave Core Signalling)

主核和从核通过共享内存或硬件信号进行通信。

7.9.4 UP 阶段 (UP Phase)

在多核 UP 阶段,所有核都在运行。

7.9.5 STARTUP 阶段 (STARTUP Phase)

多核 STARTUP 阶段从主核开始,然后从核由主核启动。

7.9.6 SHUTDOWN 阶段 (SHUTDOWN Phase)

多核 SHUTDOWN 阶段从主核开始,从核在主核之前关闭。

7.9.7 SLEEP 阶段 (SLEEP Phase)

多核 SLEEP 阶段协调所有核进入睡眠状态。

7.9.8 Runnables 和入口点 (Runnables and Entry points)

多核环境中的可运行实体和入口点的处理。

7.10 EcuM 模式处理 (EcuM Mode Handling)

EcuM 不包含自己的状态机,但通过 BswM 接收状态通知并将其传播到 RTE。

7.11 高级主题 (Advanced Topics)

7.11.1 与引导加载程序的关系 (Relation to Bootloader)

EcuM 与引导加载程序的交互。

7.11.2 与复杂驱动的关系 (Relation to Complex Drivers)

复杂驱动在 EcuM 的关闭序列中被反初始化。

7.11.3 在启动和关闭期间处理错误 (Handling Errors during Startup and Shutdown)

启动和关闭期间错误由 DET 和 DEM 报告。

7.12 错误 (Errors)

7.12.1 开发错误 (Development Errors)

7.12.2 运行时错误 (Runtime Errors)

7.12.3 瞬态故障 (Transient Faults)

7.12.4 生产错误 (Production Errors)

7.12.5 扩展的生产错误 (Extended Production Errors)

7.13 错误检测 (Error detection)

7.14 错误通知 (Error notification)

详细功能规范(包括所有 SWS_EcuM_xxxxx 需求)请参见原始 PDF 文档的第 7 章。


8 API 规范 (API specification) — 摘要

翻译说明:本章详细描述了 EcuM 的所有 API 函数。 由于内容非常详尽(包含 50+ 个 API),本节仅列出关键 API 的函数签名和简要描述。 完整 API 规范(包括所有参数、返回值、错误码、调用顺序、回调函数、Callout 函数等)请参见原始 PDF 文档的第 8 章。

8.1 导入类型 (Imported types)

关键导入类型包括:

  • Std_ReturnType (Std)
  • Std_VersionInfoType (Std)
  • EcuM_WakeupSourceType (EcuM)
  • EcuM_WakeupStatusType (EcuM)
  • EcuM_StateType (EcuM, 仅供内部使用)
  • EcuM_RunStatusType (EcuM)
  • EcuM_BootTargetType (EcuM)

8.2 类型定义 (Type definitions)

8.2.1 EcuM_ConfigType

typedef struct {
    /* Configuration data structure */
} EcuM_ConfigType;

8.2.2 EcuM_RunStatusType

typedef enum {
    ECUM_RUNSTATUS_UNKNOWN = 0,
    ECUM_RUNSTATUS_REQUESTED,
    ECUM_RUNSTATUS_RELEASED
} EcuM_RunStatusType;

8.2.3 EcuM_UserType

typedef uint8 EcuM_UserType;

8.2.4 EcuM_WakeupSourceType

typedef uint16 EcuM_WakeupSourceType;

8.2.5 EcuM_WakeupStatusType

typedef enum {
    ECUM_WKSTATUS_NONE = 0,
    ECUM_WKSTATUS_PENDING,
    ECUM_WKSTATUS_VALIDATED,
    ECUM_WKSTATUS_EXPIRED
} EcuM_WakeupStatusType;

8.2.6 EcuM_BootTargetType

typedef enum {
    ECUM_BOOT_TARGET_DEFAULT = 0,
    ECUM_BOOT_TARGET_BOOTLOADER,
    ECUM_BOOT_TARGET_APPLICATION
} EcuM_BootTargetType;

8.2.7 EcuM_ResetType

typedef enum {
    ECUM_RESET_NONE,
    ECUM_RESET_HARD,
    ECUM_RESET_SOFT
} EcuM_ResetType;

8.2.8 EcuM_ShutdownCauseType

typedef uint8 EcuM_ShutdownCauseType;

8.2.9 EcuM_ShutdownModeType

typedef enum {
    ECUM_SHUTDOWN_MODE_SLEEP = 0,
    ECUM_SHUTDOWN_MODE_RESET,
    ECUM_SHUTDOWN_MODE_OFF
} EcuM_ShutdownModeType;

8.2.10 EcuM_TimeType

typedef uint32 EcuM_TimeType;

8.2.11 EcuM_ShutdownTargetType

typedef enum {
    ECUM_SHUTDOWN_TARGET_SLEEP = 0,
    ECUM_SHUTDOWN_TARGET_RESET,
    ECUM_SHUTDOWN_TARGET_OFF,
    ECUM_SHUTDOWN_TARGET_ECUM_STATE
} EcuM_ShutdownTargetType;

8.3 函数定义 (Function Definitions)

8.3.1 General

8.3.2 Initialization and Shutdown Sequences

void EcuM_Init(const EcuM_ConfigType* ConfigPtr);
  • 描述:初始化 EcuM 模块。
void EcuM_StartupTwo(void);
  • 描述:从 EcuM 启动状态切换到运行状态(UP 阶段)。
void EcuM_GoDown(EcuM_UserType User);
  • 描述:请求关闭 ECU。
void EcuM_GoHalt(void);
  • 描述:请求进入 HALT 睡眠状态。
void EcuM_GoPoll(void);
  • 描述:请求进入 POLL 睡眠状态。
void EcuM_Shutdown(void);
  • 描述:执行实际的 ECU 关闭。

8.3.3 State Management

Std_ReturnType EcuM_RequestRUN(EcuM_UserType User);
  • 描述:请求 RUN 状态。
Std_ReturnType EcuM_ReleaseRUN(EcuM_UserType User);
  • 描述:释放 RUN 状态请求。
Std_ReturnType EcuM_RequestPOSTRUN(EcuM_UserType User);
  • 描述:请求 POST_RUN 状态。
Std_ReturnType EcuM_ReleasePOSTRUN(EcuM_UserType User);
  • 描述:释放 POST_RUN 状态请求。
EcuM_RunStatusType EcuM_GetState(void);
  • 描述:获取当前 RUN 状态。
void EcuM_SetState(EcuM_StateType State);
  • 描述:设置 EcuM 的当前状态(由 BswM 调用)。

8.3.4 Shutdown Management

Std_ReturnType EcuM_SelectShutdownTarget(EcuM_ShutdownTargetType ShutdownTarget, EcuM_ShutdownModeType SleepMode);
  • 描述:选择关闭目标。
Std_ReturnType EcuM_GetShutdownTarget(EcuM_ShutdownTargetType* ShutdownTarget, EcuM_ShutdownModeType* SleepMode);
  • 描述:获取当前关闭目标。
Std_ReturnType EcuM_GetLastShutdownTarget(EcuM_ShutdownTargetType* ShutdownTarget, EcuM_ShutdownModeType* SleepMode);
  • 描述:获取上次关闭的目标。
Std_ReturnType EcuM_SelectBootTarget(EcuM_BootTargetType BootTarget);
  • 描述:选择引导目标(例如引导加载程序)。
Std_ReturnType EcuM_GetBootTarget(EcuM_BootTargetType* BootTarget);
  • 描述:获取当前引导目标。
EcuM_ResetType EcuM_GetMostRecentReset(void);
  • 描述:获取最近复位的原因。
EcuM_ShutdownCauseType EcuM_GetShutdownCause(void);
  • 描述:获取上次关闭的原因。
void EcuM_GetMostRecentShutdown(EcuM_TimeType* Time, EcuM_ShutdownCauseType* Cause);
  • 描述:获取最近关闭的时间和原因。

8.3.5 Wakeup Handling

void EcuM_SetWakeupEvent(EcuM_WakeupSourceType sources);
  • 描述:由驱动调用以通知 EcuM 唤醒事件。
Std_ReturnType EcuM_ValidateWakeupEvent(EcuM_WakeupSourceType sources);
  • 描述:验证唤醒事件。
void EcuM_ClearWakeupEvent(EcuM_WakeupSourceType sources);
  • 描述:清除唤醒事件。
EcuM_WakeupStatusType EcuM_GetStatusOfWakeupSource(EcuM_WakeupSourceType sources);
  • 描述:获取唤醒源的状态。
void EcuM_DisableWakeupSources(EcuM_WakeupSourceType sources);
  • 描述:禁用唤醒源。
void EcuM_EnableWakeupSources(EcuM_WakeupSourceType sources);
  • 描述:启用唤醒源。

8.3.6 Alarm Clock

Std_ReturnType EcuM_SetRelAlarm(EcuM_UserType User, EcuM_TimeType offset, EcuM_TimeType cycle);
  • 描述:设置相对报警。
Std_ReturnType EcuM_SetAbsAlarm(EcuM_UserType User, EcuM_TimeType start, EcuM_TimeType cycle);
  • 描述:设置绝对报警。
Std_ReturnType EcuM_CancelAlarm(EcuM_UserType User);
  • 描述:取消报警。
Std_ReturnType EcuM_GetAlarmClockStatus(EcuM_UserType User, EcuM_TimeType* Time);
  • 描述:获取报警时钟状态。
Std_ReturnType EcuM_SetClock(EcuM_TimeType time);
  • 描述:设置 EcuM 时钟。
void EcuM_GetCurrentTime(EcuM_TimeType* time);
  • 描述:获取当前 EcuM 时钟时间。

8.3.7 Miscellaneous

void EcuM_GetVersionInfo(Std_VersionInfoType* VersionInfo);
  • 描述:返回 EcuM 模块的版本信息。
void EcuM_BswMIndication(EcuM_StateType State);
  • 描述:由 BswM 调用以通知 EcuM 状态。

8.4 调度函数 (Scheduled Functions)

8.4.1 EcuM_MainFunction

void EcuM_MainFunction(void);
  • 描述EcuM 的主函数,由 BSW Scheduler 周期调用。 它处理:
    • 唤醒源验证
    • 报警时钟
    • 挂起请求的评估

8.5 回调定义 (Callback Definitions)

8.5.1 来自唤醒源的回调 (Callbacks from Wakeup Sources)

  • EcuM_CheckWakeup — 由 EcuM 调用以检查唤醒
  • EcuM_EnableWakeupSources — 由 EcuM 调用以启用唤醒源
  • EcuM_DisableWakeupSources — 由 EcuM 调用以禁用唤醒源

8.6 Callout 定义 (Callout Definitions)

8.6.1 通用 Callout (Generic Callouts)

  • EcuM_Callout_Stubs.c — 包含所有 callout 的存根

8.6.2 STARTUP 阶段的 Callout (Callouts from the STARTUP Phase)

  • EcuM_AL_DriverInitZero — 启动序列中调用的第一个 callout
  • EcuM_AL_DriverInitOne — 在 OS 之前调用的 callout
  • EcuM_OnEnterRun — 进入 RUN 状态时调用
  • EcuM_OnExitRun — 离开 RUN 状态时调用
  • EcuM_OnExitPostRun — 离开 POST_RUN 状态时调用
  • EcuM_AL_DriverInitListBswM — 在 BswM 上下文中初始化驱动

8.6.3 SHUTDOWN 阶段的 Callout (Callouts from the SHUTDOWN Phase)

  • EcuM_OnGoOffOne — 第一次关闭序列
  • EcuM_OnGoOffTwo — 第二次关闭序列

8.6.4 SLEEP 阶段的 Callout (Callouts from the SLEEP Phase)

  • EcuM_GenerateRamHash — 生成 RAM hash
  • EcuM_CheckRamHash — 检查 RAM hash
  • EcuM_GoHaltPoll — 进入 Halt 或 Poll 状态
  • EcuM_StartWakeupSources — 启动唤醒源
  • EcuM_StopWakeupSources — 停止唤醒源
  • EcuM_SleepActivity — 睡眠活动
  • EcuM_WakeupRestart — 唤醒重启
  • EcuM_EndWakeupSources — 结束唤醒源

8.6.5 UP 阶段的 Callout (Callouts from the UP Phase)

  • EcuM_AlarmClock — 报警时钟 callout
  • EcuM_SetWakeupSources — 设置唤醒源
  • EcuM_ValidateAllWakeupEvents — 验证所有唤醒事件

8.7 预期接口 (Expected Interfaces)

8.7.1 可选接口 (Optional Interfaces)

  • CanIf_CheckWakeup
  • FrIf_CheckWakeup
  • LinIf_CheckWakeup
  • EthIf_CheckWakeup
  • CanTrcv_CheckWakeup
  • 等等

8.7.2 可配置接口 (Configurable interfaces)

可配置的接口在 EcuMDriverInitListZeroEcuMDriverInitListOneEcuMDriverInitListBswM 等中定义。

8.8 端口接口规范 (Specification of the Port Interfaces)

8.8.1 EcuM_ShutdownTarget 接口的端口和端口接口 (Ports and Port Interface for EcuM_ShutdownTarget Interface)

8.8.2 EcuM_BootTarget 接口的端口接口 (Port Interface for EcuM_BootTarget Interface)

8.8.3 EcuM_AlarmClock 接口的端口接口 (Port Interface for EcuM_AlarmClock Interface)

8.8.4 EcuM_Time 接口的端口接口 (Port Interface for EcuM_Time Interface)

8.8.5 EcuM_StateRequest 接口的端口接口 (Port Interface for EcuM_StateRequest Interface)

8.8.6 EcuM_CurrentMode 接口的端口接口 (Port Interface for EcuM_CurrentMode Interface)

8.9 API 参数检查 (API Parameter Checking)

EcuM 通过 DET 报告无效参数。 详见原始 PDF 文档。


9 序列图 (Sequence Charts) — 摘要

完整内容请参见原始 PDF 文档。

9.1 状态序列 (State Sequences)

9.2 唤醒序列 (Wakeup Sequences)

9.2.1 GPT 唤醒序列 (GPT Wakeup Sequences)

9.2.2 ICU 唤醒序列 (ICU Wakeup Sequences)

9.2.3 CAN 唤醒序列 (CAN Wakeup Sequences)

9.2.4 LIN 唤醒序列 (LIN Wakeup Sequences)

9.2.5 FlexRay 唤醒序列 (FlexRay Wakeup Sequences)


10 配置规范 (Configuration specification) — 摘要

完整内容请参见原始 PDF 文档。

10.1 公共容器和配置参数 (Common Containers and configuration parameters)

编号 容器名称 描述
10.1.1 EcuM 顶层容器
10.1.2 EcuMGeneral EcuM 通用配置
10.1.3 EcuMConfiguration EcuM 配置
10.1.4 EcuMCommonConfiguration 公共配置
10.1.5 EcuMDefaultShutdownTarget 默认关闭目标
10.1.6 EcuMDriverInitListOne 驱动初始化列表 1
10.1.7 EcuMDriverInitListZero 驱动初始化列表 0
10.1.8 EcuMDriverRestartList 驱动重启列表
10.1.9 EcuMDriverInitItem 驱动初始化项
10.1.10 EcuMSleepMode 睡眠模式
10.1.11 EcuMWakeupSource 唤醒源

10.2 EcuM-Flex 容器和配置参数 (EcuM-Flex Containers and configuration parameters)

编号 容器名称 描述
10.2.1 EcuMFlexGeneral EcuM Flex 通用配置
10.2.2 EcuMFlexConfiguration EcuM Flex 配置
10.2.3 EcuMAlarmClock 报警时钟
10.2.4 EcuMDriverInitListBswM BswM 驱动初始化列表
10.2.5 EcuMFlexUserConfig Flex 用户配置
10.2.6 EcuMGoDownAllowedUsers 允许 GoDown 的用户
10.2.7 EcuMResetMode 复位模式
10.2.8 EcuMSetClockAllowedUsers 允许 SetClock 的用户
10.2.9 EcuMShutdownCause 关闭原因

10.3 已发布信息 (Published Information)

无。


11 不适用需求 (Not applicable requirements)

无。


翻译说明

本文档为 AUTOSAR CP Release 4.4.0《ECU 状态管理器规范》的中文翻译。 主要翻译内容包括:

  1. 完整翻译
    • 文档标识、变更历史
    • 目录
    • 第 1-5 章(引言、定义、相关文档、约束、依赖关系)
    • 第 6 章需求追踪(关键映射表)
    • 第 7-11 章摘要
    • 第 8 章 API 规范中 30+ 个关键 API 函数签名
  2. 摘要标记
    • 第 7 章功能规范(提供阶段和子阶段概述)
    • 第 9 章序列图
    • 第 10 章配置规范(提供容器列表)
  3. 保留内容
    • 所有 API 标识符(如 EcuM_InitEcuM_GoDownEcuM_SetStateEcuM_RequestRUN
    • 模块缩写(EcuM、BswM、ComM、WdgM、NvM、SchM、Dem、Det、RTE、OS 等)
    • 状态名(STARTUP、RUN、SHUTDOWN、SLEEP、POST_RUN、OFF、UP、HALT、POLL 等)
    • AUTOSAR 方框符 ⌈⌋
    • 需求 IDSWS_EcuM_xxxxx、SRS_ModeMgm_xxxxx、SRS_BSW_xxxxx
    • 文档间交叉引用