# AUTOSAR MCU 驱动需求规范 > **Requirements on MCU Driver** > AUTOSAR CP Release 4.4.0 ## 元信息 - **文档类别**:SRS(Software Requirements Specification,软件需求规范) - **模块名称**:MCU Driver(Microcontroller Unit Driver,微控制器单元驱动) - **关联层级**:MCAL(Microcontroller Abstraction Layer,微控制器抽象层) - **AUTOSAR 版本**:Classic Platform 4.4.0 - **文档标识号**:195 ## 文档标识 | 项 | 值 | | --- | --- | | Document Title | Requirements on MCU Driver | | Document Owner | AUTOSAR | | Document Responsibility | AUTOSAR | | Document Identification No | 195 | | Document Status | Final | | Part of AUTOSAR Standard | Classic Platform | | Part of Standard Release | 4.4.0 | ## 文档变更历史 | 日期 | 版本 | 变更方 | 变更说明 | | --- | --- | --- | --- | | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 编辑性修订 | | 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 删除对 HIS 的引用;编辑性修订 | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 新增"第 5 章 - 需求追溯",追溯至 AUTOSAR 特性;编辑性修订 | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 编辑性修订 | | 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 编辑性修订 | | 2013-03-15 | 4.1.1 | AUTOSAR Administration | 将需求与 BSW Feature 文档相关联;按照 TPS_StandardizationTemplate 更新需求格式 | | 2010-09-30 | 3.1.5 | AUTOSAR Administration | 重新表述大量需求以使其原子化;插入 Debugging Concept;插入新的服务(API)以在复位后读取状态(同样影响 SRS R4.0);插入新的配置参数以使能/禁用 PLL API;引入新容器以发布 MCU 支持的所有不同 reset;修订法律免责声明 | | 2008-08-13 | 3.1.1 | AUTOSAR Administration | 修订法律免责声明 | | 2007-12-21 | 3.0.1 | AUTOSAR Administration | 扩展文档元信息;微调版面 | | 2007-01-24 | 2.1.15 | AUTOSAR Administration | 修订"用户须知";新增"修订信息" | | 2006-11-28 | 2.1 | AUTOSAR Administration | 修订法律免责声明 | | 2006-05-16 | 2.0 | AUTOSAR Administration | 作为独立文档发布。SRS SPAL V1.0.0 在 Release 2.0 时被拆分为 12 份独立文档 | | 2005-05-31 | 1.0 | AUTOSAR Administration | 1.0.0 首次发布 | ## 免责声明 > 本节为版权与法律声明,以英文形式发布,翻译时予以保留原文。详情请参考英文原版。 --- ## 目录 1. [文档范围](#1-文档范围) 2. [如何阅读本文档](#2-如何阅读本文档) - 2.1 [使用的约定](#21-使用的约定) - 2.2 [需求结构](#22-需求结构) 3. [缩略语与缩写](#3-缩略语与缩写) 4. [功能概述](#4-功能概述) 5. [需求追溯](#5-需求追溯) 6. [需求规范](#6-需求规范) - 6.1 [功能性需求](#61-功能性需求) - 6.1.1 [配置与初始化](#611-配置与初始化) - 6.1.2 [正常操作](#612-正常操作) - 6.1.3 [故障操作](#613-故障操作) - 6.1.4 [关机操作](#614-关机操作) - 6.2 [备注](#62-备注) 7. [参考文献](#7-参考文献) --- ## 1 文档范围 本文档规定了 MCU Driver 模块的需求。 ### 约束 基础软件模块需求规范的首要范围是不涉及安全相关的系统。因此,安全需求被赋予中等优先级。 --- ## 2 如何阅读本文档 每个需求都有以前缀 "BSW"(代表"Basic Software")开头的唯一标识符。任何评审注释、备注或问题请引用此唯一 ID,而非章节或页码! ### 2.1 使用的约定 - AUTOSAR 文档中需求的表示形式遵循 [TPS_STDT_00078] 中规定的表格。 - 在需求中,使用以下特定语义。 本文档中的关键词 "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY" 和 "OPTIONAL" 应按相应规范进行解释。注意,使用这些词的文档的需求级别会修改这些词的强度。 - **MUST**:此词或"REQUIRED"或"SHALL"表示该定义是规范的绝对要求。 - **MUST NOT**:此短语或"SHALL NOT"表示该定义是规范的绝对禁止。 - **SHOULD**:此词或形容词"RECOMMENDED"表示在特定情况下可能存在有效理由忽略某一项,但在选择不同方案前必须充分理解并仔细权衡其影响。 - **SHOULD NOT**:此短语或"NOT RECOMMENDED"表示在特定情况下可能存在有效理由认为特定行为是可接受的甚至是有用的,但在实施被此标签描述的行为之前应充分理解并仔细权衡其影响。 - **MAY**:此词或形容词"OPTIONAL"表示某项确实是可选的。一个供应商可以选择包含该项,因为特定市场需求或供应商认为它能够提升产品,而另一供应商可以省略相同的项。不包含特定可选项的实现 MUST 准备好与包含该选项的实现互操作(可能功能有所缩减)。同理,包含特定选项的实现 MUST 准备好与不包含该选项的实现互操作(当然,除了该选项所提供的特性之外)。 ### 2.2 需求结构 每个模块特定章节包含基础软件模块的简短功能描述。每章中同类型需求按以下标题分组(如适用): **功能性需求**: - 配置(模块中哪些元素需要可配置) - 初始化 - 正常操作 - 关机操作 - 故障操作 - ... **非功能性需求**: - 时序需求 - 资源使用 - 易用性 - 给其他工作包的输出(例如 Description Templates、Tooling 等) - ... --- ## 3 缩略语与缩写 具有局部范围的缩略语和缩写不包含在 AUTOSAR 术语表中。它们必须出现在本地术语表中。 | 缩写 | 描述 | | --- | --- | | CS | Chip select(片选) | | DIO | Digital Input Output(数字输入输出) | | ECU | Electric Control Unit(电子控制单元) | | EOL | End Of Line(产线终点),常用于"EOL Programming"或"EOL Configuration" | | ICU | Interrupt Capture Unit(中断捕获单元) | | MAL | 微控制器抽象层的旧称(已被 MCAL 取代,因为'MAL'在法语中意为'坏的') | | MCAL | Microcontroller Abstraction Layer(微控制器抽象层) | | MCU | Microcontroller Unit(微控制器单元) | | MMU | Memory Management Unit(内存管理单元) | | Master | 控制其他设备(从设备,见下文)的设备 | | Slave | 完全由主设备控制的设备 | | NMI | Non maskable interrupt(不可屏蔽中断) | | OS | Operating System(操作系统) | | PLL | Phase Locked Loop(锁相环) | | PWM | Pulse Width Modulation(脉冲宽度调制) | | RX | Reception(总线通信场景下的接收) | | SPAL | Standard Peripheral Abstraction Layer(本工作组名称) | | SFR | Special Function Register(专用功能寄存器) | | RTE | Runtime environment(运行时环境) | | WP | Work Package(工作包) | | STD | Standard(标准) | | REQ | Requirement(需求) | | UNINIT | Uninitialized(未初始化) | 由于本文档是面向专业人员的专业文档,其余术语默认读者已知。 --- ## 4 功能概述 MCU 驱动 [Microcontroller Unit] 提供基本微控制器初始化、断电功能、复位以及其他 MCAL 软件模块所需的微控制器特定功能服务。除了启动代码之外,初始化服务允许灵活、面向应用的 MCU 初始化(见下图)。启动代码非常 MCU 特定。本文档中提供的启动代码描述仅供参考,意味着在标准化 MCU 初始化能够启动之前必须考虑的功能。 ``` Reset Not in scope of AUTOSAR STARTUP Code Bootloader Not Bootloader Needed Needed BOOTLOADER Standardized in MCU driver AUTOSAR additional initialization services power down service reset service ``` MCU 驱动直接访问微控制器硬件,位于 Microcontroller Abstraction Layer (MCAL) 中。 **MCU 驱动特性**: - 描述当前未被其他 MCAL 模块涵盖的功能配置所需的设置,例如全局时钟设置 - 设置 PLL 和 MCU 时钟分配 - RAM 区段初始化服务 - 设置通用 SPAL 需求未涵盖的 MCU 相关配置控制位 - 激活 µC 降功耗模式 - 执行 µC 复位 - 从硬件获取复位原因 --- ## 5 需求追溯 | 上层需求 | 描述 | 由以下需求满足 | | --- | --- | --- | | RS_BRF_00129 | AUTOSAR 应支持数据损坏检测与保护 | SRS_Mcu_13701 | | RS_BRF_01064 | AUTOSAR BSW 应提供回调函数以访问上层模块 | SRS_Mcu_12394 | | RS_BRF_01096 | AUTOSAR 应支持 ECU 启动与关机 | SRS_Mcu_12331, SRS_Mcu_12350 | | RS_BRF_01184 | AUTOSAR 应支持不同的降级方法 | SRS_Mcu_12268, SRS_Mcu_12421 | | RS_BRF_01856 | AUTOSAR 微控制器抽象应提供对内部 MCU 配置的访问 | SRS_Mcu_12000, SRS_Mcu_12207, SRS_Mcu_12208, SRS_Mcu_12215, SRS_Mcu_12277, SRS_Mcu_12336, SRS_Mcu_12392 | | RS_BRF_02168 | AUTOSAR 诊断应提供异常运行状况的集中分类与处理 | SRS_Mcu_12394 | --- ## 6 需求规范 ### 6.1 功能性需求 #### 6.1.1 配置与初始化 ##### 6.1.1.1 [SRS_Mcu_12421] 低功耗模式配置 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | 低功耗模式的配置设置完全是微控制器特定的。应可配置硬件支持且应用需要的不同模式。 | | Rationale | 根据应用需求降低 MCU 功耗 | | Use Case | -- | | Dependencies | [SRS_Mcu_12268] MCU 电源管理控制 | | Supporting Material | -- | ⌋(RS_BRF_01184) ##### 6.1.1.2 [SRS_Mcu_12350] MCU 驱动应允许对启动期间需要初始化的 RAM 段进行静态配置 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | MCU 驱动应允许对启动期间需要初始化的 RAM 段进行静态配置。 | | Rationale | 允许定义哪些 RAM 段被初始化(清零),哪些不初始化。 | | Use Case | 允许在复位后保留特定 RAM 段中的数据。 | | Dependencies | [SRS_Mcu_12331] RAM 初始化 | | Supporting Material | -- | ⌋(RS_BRF_01096) ##### 6.1.1.3 [SRS_Mcu_12331] MCU 驱动应提供初始化已配置 RAM 段内容的服务 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | MCU 驱动应提供初始化已配置 RAM 段内容的服务。未配置为初始化的 RAM 段不应被触及。 | | Rationale | 在 ECU 启动后获得已定义的 RAM 内容。 | | Use Case | 用于以已定义内容灵活初始化 RAM 段。ECU 状态管理器可在 ECU 启动期间决定是否需要某些 RAM 段的初始化(例如取决于 Reset reason)。 | | Dependencies | [SRS_Mcu_12350] RAM 段配置 | | Supporting Material | -- | ⌋(RS_BRF_01096) ##### 6.1.1.4 [SRS_Mcu_12392] MCU 驱动应提供独立查询微控制器中所有 PLL 锁定状态的服务 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | MCU 驱动应提供独立查询微控制器中所有 PLL 锁定状态的服务。

该服务应返回:
- Locked(已锁定)
- Un-Locked(未锁定)
- Unsupported(不支持) | | Rationale | -- | | Use Case | 了解微控制器中任一 PLL 的状态。 | | Dependencies | [SRS_Mcu_12208] MCU 时钟的初始化 | | Supporting Material | -- | ⌋(RS_BRF_01856) ##### 6.1.1.5 [SRS_Mcu_12336] MCU 驱动应提供激活 PLL 时钟向整个 MCU 分配的服务 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | MCU 驱动应提供激活 PLL 时钟向整个 MCU 分配的服务。如果 MCU 中的 PLL 模块提供独立的使能位以释放 PLL 时钟,则需要该服务。该服务应仅在相应 PLL 已锁定后执行。在支持的情况下,该服务应针对微控制器中所有 PLL 独立提供。 | | Rationale | 某些微控制器具有多个 PLL。 | | Use Case | 在 MCU 中使已锁定的 PLL 时钟生效。 | | Dependencies | [SRS_Mcu_12208], [SRS_Mcu_12392] | | Supporting Material | -- | ⌋(RS_BRF_01856) ##### 6.1.1.6 [SRS_Mcu_12207] MCU 驱动应配置时钟安全特性 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | 如果硬件支持,MCU 驱动应配置时钟安全特性,例如:
- 晶体丢失检测使能/禁用
- 晶体时钟源丢失(limp home 模式)使能/禁用
- 错误检测时的通知使能/禁用 | | Rationale | 一个例子是 limp 模式,在该模式下,晶体丢失会启用备用时钟源,以提供一种安全系统关闭机制。 | | Use Case | 晶体丢失恢复和有序关闭 | | Dependencies | [SRS_Mcu_12208] | | Supporting Material | -- | ⌋(RS_BRF_01856) ##### 6.1.1.7 [SRS_Mcu_12208] MCU 驱动应提供初始化 MCU 时钟系统的服务 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | MCU 驱动应提供初始化 MCU 时钟系统的服务。这包括 PLL 因子的初始化、启动 PLL 锁定过程(如果选定)以及影响多个驱动的其他 MCU 特定时钟选项,例如时钟预分频器。
等待 PLL 锁定不是强制性的。 | | Rationale | -- | | Use Case | 例如,从 MCU 降功耗模式唤醒后,为 MCU 子系统设置适当的时钟速度。 | | Dependencies | [SRS_Mcu_12392] 提供 PLL 的锁定状态 | | Supporting Material | -- | ⌋(RS_BRF_01856) #### 6.1.2 正常操作 ##### 6.1.2.1 [SRS_Mcu_12000] MCU 驱动应提供查询标准化复位原因的服务 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | MCU 驱动应提供查询复位原因的服务。应区分以下标准化的复位原因(如果硬件支持):
- Power On Reset(默认返回值)
- External Hard Reset
- Internal Watchdog Timer Reset
- Other reset reasons | | Rationale | 不同的复位原因可能在初始化阶段需要不同的动作。 | | Use Case | 为 ECU 状态管理器提供信息(例如决定选择哪种启动序列)。 | | Dependencies | -- | | Supporting Material | 注:上述复位原因不要求在每个微控制器设备中都实现。如果微控制器无法区分多种复位原因,默认值应为 "Power On Reset"。 | ⌋(RS_BRF_01856) ##### 6.1.2.2 [SRS_Mcu_12215] MCU 驱动应提供查询原始复位状态的服务 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | MCU 驱动应提供查询复位原因的服务。该服务应返回完整、原始的 µC 特定复位信息。 | | Rationale | ECU 完全启动后,可查询原始复位状态并作为复位信息存储到诊断错误存储器中。 | | Use Case | 该信息应仅用于将复位信息存储到诊断错误存储器中。

Reset Types 示例:
- Power On Reset
- External Hard Reset
- Soft Reset
- Internal Watchdog Timer Reset
- Debug System Reset
- Reset caused by exception
- ... | | Dependencies | -- | | Supporting Material | 如果微控制器不提供复位状态寄存器,该服务应返回 0(零)。 | ⌋(RS_BRF_01856) ##### 6.1.2.3 [SRS_Mcu_12277] MCU 驱动应提供复位触发函数 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | MCU 驱动应使用微控制器硬件的特性提供复位触发函数。由于 MCU 提供不同类型的复位变体,复位触发的配置应在 MCU 驱动的配置结构中定义。
如果微控制器不支持通过软件触发复位的方法,则不应使用该函数。在这种情况下,上层负责使用其他应用特定的方法,例如切换 I/O 引脚以触发外部复位电路。 | | Rationale | 在软件检测到特定未知系统状态时,强制微控制器硬件进行受控初始化。 | | Use Case | 可在出现致命错误时触发,例如:
- 出现不可恢复的 µC 陷阱(例如总线错误陷阱)
- 软件状态机突然遇到未定义状态(例如由于 RAM 中的位错误)且无其他可能反应 | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01856) ##### 6.1.2.4 [SRS_Mcu_13701] MCU 驱动应提供查询 RAM 状态的服务 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | MCU 驱动应提供查询 RAM 状态的服务。
应区分以下标准化的 RAM 状态(如果硬件支持):
- RAM state invalid [default]
- RAM state valid
如果硬件不支持此特性,则该函数应被禁用。 | | Rationale | 不同的 RAM 状态可能在初始化阶段需要不同的动作。 | | Use Case | ECU 状态管理器可使用该信息在复位后重新加载 RAM 内容。 | | Dependencies | -- | | Supporting Material | 注:上述 RAM 状态不要求在每个微控制器设备中都实现。如果微控制器无法区分多种 RAM 状态,默认值应为 "RAM invalid"。 | ⌋(RS_BRF_00129) #### 6.1.3 故障操作 ##### 6.1.3.1 [SRS_Mcu_12394] MCU 驱动应提供时钟源故障的通知 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | MCU 驱动应提供通知,以便在 MCU 中时钟生成发生故障时报告时钟源的故障情况。如果 MCU 能够检测到此类故障,应提供该通知。由于 Diagnostic Event Manager 将对接该函数,因此该通知不应在启动阶段被调用。 | | Rationale | 一旦检测到故障,可能希望选择恢复方式。 | | Use Case | 晶体丢失恢复和有序关闭 | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01064, RS_BRF_02168) #### 6.1.4 关机操作 ##### 6.1.4.1 [SRS_Mcu_12268] MCU 驱动应提供激活 µC MCU 节能模式的服务 ⌈ | 项 | 值 | | --- | --- | | Type | Valid | | Description | MCU 驱动应提供激活 µC MCU 节能模式的服务。 | | Rationale | -- | | Use Case | 上层意图进入 ECU 降功耗模式。上层调用 MCU 驱动以激活适当的 MCU 设置。 | | Dependencies | [SRS_Mcu_12421] 低功耗模式配置 | | Supporting Material | 注:Low Power Modes 的 MCU 模式不要求在每个微控制器设备中都实现。 | ⌋(RS_BRF_01184) ### 6.2 备注 本章节[MCU 驱动]汇集了多种功能,以解决在从 MCU 节能模式或复位恢复后正确初始化的问题。 配置工具对于该功能的正确实现非常重要,并且可能需要成为最终解决方案的一部分。 --- ## 7 参考文献 ### 7.1 AUTOSAR 交付物 - [DOC_LAYERED_ARCH] Layered Software Architecture, AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf - [AUTOSAR_GLOSSARY] Glossary, AUTOSAR_TR_Glossary.pdf - [SRS_BSW_GENERAL] General Requirements on Basic Software Modules, AUTOSAR_SRS_BSWGeneral.pdf - [SRS_BSW_SPAL] General Requirements on SPAL, AUTOSAR_SRS_SPALGeneral.pdf - [TPS_STDT_0078] Software Standardization Template, AUTOSAR_TPS_StandardizationTemplate.pdf ### 7.2 相关标准与规范 无。 --- ## 翻译说明 - 本文档由 AUTOSAR CP 4.4.0 英文原文翻译。 - 模块缩写(MCU、MCAL、PLL、ECU、SPAL、DIO、PORT、ADC、PWM、ICU、SPI 等)保留原文。 - API 标识符、需求 ID(SRS_Mcu_xxxxx、RS_BRF_xxxxx)保留原文。 - AUTOSAR 方括号符 `⌈ ⌋` 保留原貌,以保持需求结构的可追溯性。 - 版权声明保持英文原文。 - 跨文档引用以英文文件名形式保留。 - Reset Types(如 Power On Reset、External Hard Reset 等)保留英文以保持与 API 定义的一致性。