# ECU 状态管理器规范 (Specification of ECU State Manager) | 项目 | 内容 | |------|------| | **文档标识号** | 078 | | **文档标题** | Specification of ECU State Manager(ECU 状态管理器规范) | | **文档所有者** | 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)](#1-引言和功能概述) ........ 11 2. [定义和缩写词 (Definitions and Acronyms)](#2-定义和缩写词) ......................... 13 3. [相关文档 (Related documentation)](#3-相关文档) ............................................ 14 4. [约束和假设 (Constraints and Assumptions)](#4-约束和假设) .......................... 16 5. [与其他模块的依赖关系 (Dependencies to other modules)](#5-与其他模块的依赖关系) ... 17 6. [需求追踪 (Requirements traceability)](#6-需求追踪) — 摘要 ......................... 21 7. [功能规范 (Functional Specification)](#7-功能规范) — 摘要 ........................... 27 8. [API 规范 (API specification)](#8-api-规范) — 摘要 ..................................... 96 9. [序列图 (Sequence Charts)](#9-序列图) — 摘要 ........................................ 152 10. [配置规范 (Configuration specification)](#10-配置规范) — 摘要 ............... 174 11. [不适用需求 (Not applicable requirements)](#11-不适用需求) ..................... 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(处理器停止)的连续操作状态。 - **多核 ECU**:STARTUP、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]。 | | **Callout(Callout)** | "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 相关文档 (Related documentation) ### 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 ### 3.2 相关标准和规范 (Related standards and norms) 无。 ### 3.3 相关 AUTOSAR 软件规范 (Related AUTOSAR Software Specifications) - [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 Scheduler,ECU 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 用于初始化 `EcuMDriverInitListOne` 和 `EcuMDriverInitListZero` 中配置的驱动程序。 #### 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_DriverInitListBswM`(EcuM 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 ```c typedef struct { /* Configuration data structure */ } EcuM_ConfigType; ``` #### 8.2.2 EcuM_RunStatusType ```c typedef enum { ECUM_RUNSTATUS_UNKNOWN = 0, ECUM_RUNSTATUS_REQUESTED, ECUM_RUNSTATUS_RELEASED } EcuM_RunStatusType; ``` #### 8.2.3 EcuM_UserType ```c typedef uint8 EcuM_UserType; ``` #### 8.2.4 EcuM_WakeupSourceType ```c typedef uint16 EcuM_WakeupSourceType; ``` #### 8.2.5 EcuM_WakeupStatusType ```c typedef enum { ECUM_WKSTATUS_NONE = 0, ECUM_WKSTATUS_PENDING, ECUM_WKSTATUS_VALIDATED, ECUM_WKSTATUS_EXPIRED } EcuM_WakeupStatusType; ``` #### 8.2.6 EcuM_BootTargetType ```c typedef enum { ECUM_BOOT_TARGET_DEFAULT = 0, ECUM_BOOT_TARGET_BOOTLOADER, ECUM_BOOT_TARGET_APPLICATION } EcuM_BootTargetType; ``` #### 8.2.7 EcuM_ResetType ```c typedef enum { ECUM_RESET_NONE, ECUM_RESET_HARD, ECUM_RESET_SOFT } EcuM_ResetType; ``` #### 8.2.8 EcuM_ShutdownCauseType ```c typedef uint8 EcuM_ShutdownCauseType; ``` #### 8.2.9 EcuM_ShutdownModeType ```c typedef enum { ECUM_SHUTDOWN_MODE_SLEEP = 0, ECUM_SHUTDOWN_MODE_RESET, ECUM_SHUTDOWN_MODE_OFF } EcuM_ShutdownModeType; ``` #### 8.2.10 EcuM_TimeType ```c typedef uint32 EcuM_TimeType; ``` #### 8.2.11 EcuM_ShutdownTargetType ```c 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 ```c void EcuM_Init(const EcuM_ConfigType* ConfigPtr); ``` - **描述**:初始化 EcuM 模块。 ```c void EcuM_StartupTwo(void); ``` - **描述**:从 EcuM 启动状态切换到运行状态(UP 阶段)。 ```c void EcuM_GoDown(EcuM_UserType User); ``` - **描述**:请求关闭 ECU。 ```c void EcuM_GoHalt(void); ``` - **描述**:请求进入 HALT 睡眠状态。 ```c void EcuM_GoPoll(void); ``` - **描述**:请求进入 POLL 睡眠状态。 ```c void EcuM_Shutdown(void); ``` - **描述**:执行实际的 ECU 关闭。 #### 8.3.3 State Management ```c Std_ReturnType EcuM_RequestRUN(EcuM_UserType User); ``` - **描述**:请求 RUN 状态。 ```c Std_ReturnType EcuM_ReleaseRUN(EcuM_UserType User); ``` - **描述**:释放 RUN 状态请求。 ```c Std_ReturnType EcuM_RequestPOSTRUN(EcuM_UserType User); ``` - **描述**:请求 POST_RUN 状态。 ```c Std_ReturnType EcuM_ReleasePOSTRUN(EcuM_UserType User); ``` - **描述**:释放 POST_RUN 状态请求。 ```c EcuM_RunStatusType EcuM_GetState(void); ``` - **描述**:获取当前 RUN 状态。 ```c void EcuM_SetState(EcuM_StateType State); ``` - **描述**:设置 EcuM 的当前状态(由 BswM 调用)。 #### 8.3.4 Shutdown Management ```c Std_ReturnType EcuM_SelectShutdownTarget(EcuM_ShutdownTargetType ShutdownTarget, EcuM_ShutdownModeType SleepMode); ``` - **描述**:选择关闭目标。 ```c Std_ReturnType EcuM_GetShutdownTarget(EcuM_ShutdownTargetType* ShutdownTarget, EcuM_ShutdownModeType* SleepMode); ``` - **描述**:获取当前关闭目标。 ```c Std_ReturnType EcuM_GetLastShutdownTarget(EcuM_ShutdownTargetType* ShutdownTarget, EcuM_ShutdownModeType* SleepMode); ``` - **描述**:获取上次关闭的目标。 ```c Std_ReturnType EcuM_SelectBootTarget(EcuM_BootTargetType BootTarget); ``` - **描述**:选择引导目标(例如引导加载程序)。 ```c Std_ReturnType EcuM_GetBootTarget(EcuM_BootTargetType* BootTarget); ``` - **描述**:获取当前引导目标。 ```c EcuM_ResetType EcuM_GetMostRecentReset(void); ``` - **描述**:获取最近复位的原因。 ```c EcuM_ShutdownCauseType EcuM_GetShutdownCause(void); ``` - **描述**:获取上次关闭的原因。 ```c void EcuM_GetMostRecentShutdown(EcuM_TimeType* Time, EcuM_ShutdownCauseType* Cause); ``` - **描述**:获取最近关闭的时间和原因。 #### 8.3.5 Wakeup Handling ```c void EcuM_SetWakeupEvent(EcuM_WakeupSourceType sources); ``` - **描述**:由驱动调用以通知 EcuM 唤醒事件。 ```c Std_ReturnType EcuM_ValidateWakeupEvent(EcuM_WakeupSourceType sources); ``` - **描述**:验证唤醒事件。 ```c void EcuM_ClearWakeupEvent(EcuM_WakeupSourceType sources); ``` - **描述**:清除唤醒事件。 ```c EcuM_WakeupStatusType EcuM_GetStatusOfWakeupSource(EcuM_WakeupSourceType sources); ``` - **描述**:获取唤醒源的状态。 ```c void EcuM_DisableWakeupSources(EcuM_WakeupSourceType sources); ``` - **描述**:禁用唤醒源。 ```c void EcuM_EnableWakeupSources(EcuM_WakeupSourceType sources); ``` - **描述**:启用唤醒源。 #### 8.3.6 Alarm Clock ```c Std_ReturnType EcuM_SetRelAlarm(EcuM_UserType User, EcuM_TimeType offset, EcuM_TimeType cycle); ``` - **描述**:设置相对报警。 ```c Std_ReturnType EcuM_SetAbsAlarm(EcuM_UserType User, EcuM_TimeType start, EcuM_TimeType cycle); ``` - **描述**:设置绝对报警。 ```c Std_ReturnType EcuM_CancelAlarm(EcuM_UserType User); ``` - **描述**:取消报警。 ```c Std_ReturnType EcuM_GetAlarmClockStatus(EcuM_UserType User, EcuM_TimeType* Time); ``` - **描述**:获取报警时钟状态。 ```c Std_ReturnType EcuM_SetClock(EcuM_TimeType time); ``` - **描述**:设置 EcuM 时钟。 ```c void EcuM_GetCurrentTime(EcuM_TimeType* time); ``` - **描述**:获取当前 EcuM 时钟时间。 #### 8.3.7 Miscellaneous ```c void EcuM_GetVersionInfo(Std_VersionInfoType* VersionInfo); ``` - **描述**:返回 EcuM 模块的版本信息。 ```c void EcuM_BswMIndication(EcuM_StateType State); ``` - **描述**:由 BswM 调用以通知 EcuM 状态。 ### 8.4 调度函数 (Scheduled Functions) #### 8.4.1 EcuM_MainFunction ```c 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) 可配置的接口在 `EcuMDriverInitListZero`、`EcuMDriverInitListOne`、`EcuMDriverInitListBswM` 等中定义。 ### 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_Init`、`EcuM_GoDown`、`EcuM_SetState`、`EcuM_RequestRUN`) - 模块缩写(EcuM、BswM、ComM、WdgM、NvM、SchM、Dem、Det、RTE、OS 等) - 状态名(STARTUP、RUN、SHUTDOWN、SLEEP、POST_RUN、OFF、UP、HALT、POLL 等) - AUTOSAR 方框符 `⌈⌋` - 需求 ID(SWS_EcuM_xxxxx、SRS_ModeMgm_xxxxx、SRS_BSW_xxxxx) - 文档间交叉引用