# OCU 驱动需求(Requirements on OCU Driver) > **AUTOSAR CP Release 4.4.0** ## 文档元信息 | 字段 | 内容 | |---|---| | **文档标题** | OCU 驱动需求(Requirements on OCU Driver) | | **文档所有者** | AUTOSAR | | **文档责任方** | AUTOSAR | | **文档标识号** | 614 | | **文档状态** | Final(最终版) | | **所属 AUTOSAR 标准** | Classic Platform(经典平台) | | **所属标准版本** | 4.4.0 | ## 文档变更历史(Document Change History) | 日期 | 版本 | 变更人 | 变更描述 | |---|---|---|---| | 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 编辑性变更 | | 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 编辑性变更 | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 新增第 3 章:需求追踪 | | 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 编辑性变更 | | 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 | 初始发布 | --- ## 文档范围(Scope of this document) 本文档规定了 OCU 驱动模块的需求。 ### 约束(Constraints) 基础软件模块需求规范的首要范围是非安全相关系统。因此,安全需求被分配到中等优先级。 --- ## 目录(Table of Contents) 1. [如何阅读本文档(How to read this document)](#1-如何阅读本文档) - 1.1 [使用的约定(Conventions used)](#11-使用的约定) - 1.2 [需求结构(Requirements structure)](#12-需求结构) 2. [缩略语与缩写(Acronyms and abbreviations)](#2-缩略语与缩写) 3. [需求追踪(Requirements Tracing)](#3-需求追踪) 4. [需求规范(Requirement Specification)](#4-需求规范) - 4.1 [OCU 驱动](#41-ocu-驱动) - 4.1.1 [功能概述(Functional Overview)](#411-功能概述) - 4.1.2 [功能需求(Functional Requirements)](#412-功能需求) - 4.1.2.1 [配置(Configuration)](#4121-配置) - 4.1.2.2 [初始化(Initialization)](#4122-初始化) - 4.1.2.3 [正常运行(Normal Operation)](#4123-正常运行) - 4.1.2.4 [关闭操作(Shutdown Operation)](#4124-关闭操作) 5. [相关文档(Related Documentation)](#5-相关文档) - 5.1 [AUTOSAR 交付物(AUTOSAR deliverables)](#51-autosar-交付物) --- ## 1 如何阅读本文档(How to read this document) 每个需求都有其唯一的标识符,以 "BSW"("Basic Software" 的缩写)前缀开头。对于任何审阅注释、评论或问题,请参考此唯一 ID 而不是章节或页码! ### 1.1 使用的约定(Conventions used) - AUTOSAR 文档中需求的表示遵循 [6] 中指定的表。 - 在需求中,使用以下特定语义。 本文件中使用的关键字 "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY" 和 "OPTIONAL" 应按照所示进行解释。请注意,它们所使用文档的需求级别会修改这些词的强制力。 - **MUST**:这个词,或术语 "REQUIRED" 或 "SHALL",意味着该定义是规范的绝对要求。 - **MUST NOT**:这个词组,或词组 "SHALL NOT",意味着该定义是规范的绝对禁止。 - **SHOULD**:意味着在特定情况下可能存在忽略特定条目的有效理由。 - **SHOULD NOT**:意味着在特定情况下特定行为可能是可接受的甚至是有用的。 - **MAY**:这个词,或形容词 "OPTIONAL",意味着某个项目是真正可选的。 ### 1.2 需求结构(Requirements structure) 每个模块特定章节包含基础软件模块的简短功能描述。同一类型的需求在每个章节内按以下标题分组(如果适用): **功能需求(Functional Requirements):** - 配置(Configuration) - 初始化(Initialization) - 正常运行(Normal Operation) - 关闭操作(Shutdown Operation) - 故障操作(Fault Operation) - ... **非功能需求(Non-Functional Requirements):** - 时间需求(Timing Requirements) - 资源使用(Resource Usage) - 可用性(Usability) - 对其他 WP 的输出 - ... --- ## 2 缩略语与缩写(Acronyms and abbreviations) | 缩略语 | 描述 | |---|---| | OCU | 输出比较单元(Output Compare Unit) | | OCU channel | 表示由自由运行计数器、比较阈值以及比较过程结果所执行的动作组成的逻辑实体 | | Compare threshold(比较阈值) | 每次计数器增加一个单位时与计数器内容进行比较的目标值 | | Free running counter(自由运行计数器) | 从最小值运行到最大值的计数器,并在达到最大值后自动重新启动到最小值 | | DMA | 直接内存访问(Direct Memory Access) | | MCAL | 微控制器抽象层(Microcontroller Abstraction Layer) | | MCU | 微控制器单元(Microcontroller Unit) | | SPAL | 标准外设抽象层(Standard Peripheral Abstraction Layer) | | 缩写 | 描述 | |---|---| | STD | 标准(Standard) | | UNINIT | 未初始化(Uninitialized) | 由于这是面向专业人士的专业文档,其他所有术语均假定为已知。 --- ## 3 需求追踪(Requirements Tracing) | 需求 | 描述 | 由...满足 | |---|---|---| | RS_BRF_01056 | AUTOSAR BSW 模块应提供标准化接口 | SRS_Ocu_00005, SRS_Ocu_00006, SRS_Ocu_00007, SRS_Ocu_00008, SRS_Ocu_00009, SRS_Ocu_00010, SRS_Ocu_00011, SRS_Ocu_00012 | | RS_BRF_01064 | AUTOSAR BSW 应提供回调函数以访问上层模块 | SRS_Ocu_00006 | | RS_BRF_01096 | AUTOSAR 应支持 ECU 的启动和关闭 | SRS_Ocu_00004, SRS_Ocu_00005, SRS_Ocu_00008, SRS_Ocu_00011 | | RS_BRF_01136 | AUTOSAR 应支持在系统启动后解析已配置 BSW 数据的变体 | SRS_Ocu_00002, SRS_Ocu_00008 | | RS_BRF_01152 | AUTOSAR 应支持有限的动态重新配置 | SRS_Ocu_00007, SRS_Ocu_00010, SRS_Ocu_00011, SRS_Ocu_00012 | | RS_BRF_01632 | AUTOSAR 通信应支持信号组的数据一致性 | SRS_Ocu_00013 | | RS_BRF_01888 | AUTOSAR 微控制器抽象应提供 I/O 信号到输出比较单元的映射 | SRS_Ocu_00002, SRS_Ocu_00011, SRS_Ocu_00012 | | RS_BRF_01904 | AUTOSAR 微控制器抽象应提供对硬件定时器的访问 | SRS_Ocu_00002, SRS_Ocu_00006, SRS_Ocu_00007, SRS_Ocu_00009, SRS_Ocu_00010, SRS_Ocu_00013, SRS_Ocu_00014 | | RS_BRF_01968 | AUTOSAR IO 硬件抽象应支持边沿触发的 I/O 信号 | SRS_Ocu_00006 | | RS_BRF_02040 | AUTOSAR BSW 和 RTE 应确保数据一致性 | SRS_Ocu_00014 | --- ## 4 需求规范(Requirement Specification) ### 4.1 OCU 驱动 #### 4.1.1 功能概述(Functional Overview) 该驱动提供了一种比较两个值并在比较匹配时自动执行操作的方法,从而可以加快软件进程。 本规范规定了 AUTOSAR 基础软件模块输出比较驱动(OCU)的功能、API 和配置。 每个 OCU 通道链接到属于微控制器的硬件 OCU。该驱动提供用于初始化和控制微控制器内部 OCU 外设的服务。OCU 模块可以生成 HW 信号以驱动外部设备。 下图显示了 OCU 通道的典型表示: ``` Free running counter(自由运行计数器) OUTPUT Comparison threshold(比较阈值) ``` **图 1:输出比较通道** "output" 是比较匹配时实际执行的动作。根据配置,可以执行软件动作和/或硬件动作。 #### 4.1.2 功能需求(Functional Requirements) ##### 4.1.2.1 配置(Configuration) **4.1.2.1.1 [SRS_Ocu_00002] OCU 驱动应支持每个通道的以下基本静态配置** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | OCU 驱动应支持每个通道的以下基本静态配置:
**强制参数:**
- 通道/通道 ID 的符号名称
- 计数器的最大值
- 计数分辨率/频率
- 通知函数
- 阈值的默认值
- 已分配的硬件通道

**可选参数:**
- 计数方向
- 输出信号(内部信号或端口引脚,如果由硬件提供)。应提供默认输出电平(复位后的值):
- OCU_LOW/OCU_HIGH
- 由通道触发的硬件事件(如果硬件支持):
- 硬件资源 ID(例如 OCU_ADC、OCU_DMA)
- 每个硬件资源的适当编号(例如 ADC_chn1)
- 可选的时钟设置(如果硬件支持)

此外,如果硬件支持,OCU 驱动应允许配置 OCU-外设的特定设置。 | | Rationale | 允许每个通道的不同用法 | | Use Case | | | Dependencies | -- | | Supporting Material | | ⌋(RS_BRF_01888, RS_BRF_01904, RS_BRF_01136) ##### 4.1.2.2 初始化(Initialization) **4.1.2.2.1 [SRS_Ocu_00004] 在初始化 OCU 驱动后,所有通知都应被禁用** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | 在初始化 OCU 驱动后,所有通知都应被禁用。所有通道都应停止(无计数运行)。
如果通道有相关的输出引脚,则此引脚应设置为通道配置中定义的默认值。 | | Rationale | 防止初始化后出现不期望的事件。 | | Use Case | -- | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01096) **4.1.2.2.2 [SRS_Ocu_00005] OCU 驱动应提供反初始化 OCU 驱动的功能** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | OCU 驱动应提供反初始化 OCU 驱动的功能。 | | Rationale | 在可以进行有效初始化之前,有必要重置驱动特定资源(SFR、变量等)。 | | Use Case | 在 ECU 运行时使用有效配置(post-build)重新初始化之前需要进行反初始化。 | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01096, RS_BRF_01056) ##### 4.1.2.3 正常运行(Normal Operation) **4.1.2.3.1 [SRS_Ocu_00006] OCU 驱动应在计数器的当前值与阈值匹配时为 OCU 通道提供通知** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | OCU 驱动应在计数器的当前值与阈值匹配时为 OCU 通道提供通知。通知应在以下条件下触发:
- 通知函数配置为非空指针
- 并且仅当通知被启用时 | | Rationale | 通道上的比较匹配时,必须执行某个动作。将执行该动作的模块需要被通知。 | | Use Case | 上层执行与参考同步的动作,该参考由阈值的当前值表示。 | | Dependencies | -- | | Supporting Material | | ⌋(RS_BRF_01064, RS_BRF_01968, RS_BRF_01056, RS_BRF_01904) **4.1.2.3.2 [SRS_Ocu_00007] OCU 驱动应允许在运行时启用/禁用 OCU 通道的通知** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | OCU 驱动应允许在运行时启用/禁用 OCU 通道的通知。
对于每个选定通道,应提供以下选项:
- 禁用通知
- 在比较匹配时启用通知(计数器的当前值等于阈值) | | Rationale | 防止调用不期望的通知(中断),并允许选择软件执行流中可能出现第一次或下一次通知的确切点。 | | Use Case | 当通道计数器匹配定义的阈值时,上层被通知以执行任务并可以更改阈值的当前值 | | Dependencies | -- | | Supporting Material | | ⌋(RS_BRF_01056, RS_BRF_01152, RS_BRF_01904) **4.1.2.3.3 [SRS_Ocu_00008] OCU 驱动应提供启动和停止通道的服务** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | OCU 驱动应提供启动和停止通道的服务。停止通道意味着不应再触发任何动作。启动通道意味着允许执行已配置的动作。 | | Rationale | 允许软件单独控制每个通道的操作。 | | Use Case | H 桥连接到通道的引脚。引脚必须仅当桥准备好操作时才开始驱动桥。 | | Dependencies | -- | | Supporting Material | | ⌋(RS_BRF_01056, RS_BRF_01096, RS_BRF_01136) **4.1.2.3.4 [SRS_Ocu_00009] OCU 驱动应提供读取计数器值的同步服务** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | OCU 驱动应提供读取计数器值的同步服务。 | | Rationale | 通道的计数器值对应于物理信息(时间、压力、角度位置等),上层将其用于各种目的。 | | Use Case | 上层读取计数器的当前值并计算相应的物理值。 | | Dependencies | -- | | Supporting Material | | ⌋(RS_BRF_01056, RS_BRF_01904) **4.1.2.3.5 [SRS_Ocu_00010] OCU 驱动应提供修改通道阈值的服务** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | OCU 驱动应提供修改通道阈值的服务。此服务应允许为阈值写入:
- 绝对值
- 或相对值:相对于当前计数器值
- 或相对值:相对于当前阈值值(相对值设置需要硬件支持) | | Rationale | 为上层提供一种动态更改通道比较阈值以适应运行中软件的方法。 | | Use Case | 当计数器回绕时,使用相对值更新下一个比较阈值。 | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01056, RS_BRF_01152, RS_BRF_01904) **4.1.2.3.6 [SRS_Ocu_00011] OCU 驱动应提供同步服务以设置附加到通道的输出引脚的状态** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | OCU 驱动应提供同步服务以设置附加到通道的输出引脚的状态。 | | Rationale | 根据系统的不同阶段(SHUTDOWN、IDLE 等),输出引脚必须具有已知状态(LOW 或 HIGH) | | Use Case | 将与通道关联的引脚初始化为相关电平。 | | Dependencies | -- | | Supporting Material | | ⌋(RS_BRF_01056, RS_BRF_01152, RS_BRF_01096, RS_BRF_01888) **4.1.2.3.7 [SRS_Ocu_00012] OCU 驱动应提供服务以设置附加到通道的引脚在比较匹配时将执行的动作** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | OCU 驱动应提供服务以预设置附加到通道的引脚在比较匹配时将执行的动作(如果硬件支持)。此服务应将以下内容作为参数:
- OCU 通道
- 比较时的引脚动作(如果硬件支持)

引脚动作的可能值应为 OCU_HIGH、OCU_LOW、OCU_TOGGLE、OCU_DISABLE。 | | Rationale | 通道的输出引脚必须根据系统需要表现。 | | Use Case | 在通道的输出引脚处生成脉冲。 | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01056, RS_BRF_01152, RS_BRF_01888) **4.1.2.3.8 [SRS_Ocu_00013] OCU 驱动应允许将相同的计数器基准和时序配置为多个通道使用** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | OCU 驱动应允许将相同的计数器基准和时序配置为多个通道使用(如果此功能由硬件支持)。这将允许在组中使用多个通道。
配置应提供以下参数:
- 要分组的 OCU 通道 | | Rationale | 允许同步具有相同参考的不同动作。 | | Use Case | 同步驱动属于 H 桥的一对开关。 | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01632, RS_BRF_01904) **4.1.2.3.9 [SRS_Ocu_00014] OCU 驱动的 API 服务内使用的所有单位应为 ticks 单位** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | OCU 驱动的 API 服务内使用的所有单位应为 ticks 单位。 | | Rationale | 物理单位(阈值和计数器的)与 ticks 之间的转换应为 ECU 抽象层的一部分。 | | Use Case | -- | | Dependencies | -- | | Supporting Material | | ⌋(RS_BRF_02040, RS_BRF_01904) ##### 4.1.2.4 关闭操作(Shutdown Operation) 无。 --- ## 5 相关文档(Related Documentation) ### 5.1 AUTOSAR 交付物(AUTOSAR deliverables) - **[1]** 词汇表,AUTOSAR_TR_Glossary.pdf - **[2]** 分层软件架构,AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf - **[3]** 基础软件的一般需求,AUTOSAR_SRS_BSWGeneral.pdf - **[4]** SPAL 的一般需求,AUTOSAR_SRS_SPALGeneral.pdf - **[5]** 基础软件模块列表,AUTOSAR_BasicSoftwareModuleList.pdf - **[6]** 软件标准化模板,AUTOSAR_TPS_StandardizationTemplate.pdf --- ## 翻译说明 本文档为 AUTOSAR 4.4.0 版本 OCU 驱动软件需求规范的中文翻译。保留了所有需求 ID(SRS_Ocu_xxxxx)、参考标识符及模块缩写。原始文档共 16 页,本翻译涵盖了全部章节内容。