# DIO 驱动需求(Requirements on DIO Driver) > **AUTOSAR CP Release 4.4.0** ## 文档元信息 | 字段 | 内容 | |---|---| | **文档标题** | DIO 驱动需求(Requirements on DIO Driver) | | **文档所有者** | AUTOSAR | | **文档责任方** | AUTOSAR | | **文档标识号** | 191 | | **文档状态** | 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 | 移除对 BMW 和 HIS 文档的引用;编辑性变更 | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 新增第 5 章:需求追踪 | | 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 编辑性变更 | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 编辑性变更 | | 2013-03-15 | 4.1.1 | AUTOSAR Administration | 需求 ID 变更;更新以实现需求可追溯性 | | 2011-12-22 | 4.0.3 | AUTOSAR Administration | 新增 SRS_Dio_12900 | | 2010-09-30 | 3.1.5 | AUTOSAR Administration | 法律声明修订 | | 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 已被拆分为 15 个独立文档,以发布 2.0 | | 2005-05-31 | 1.0 | AUTOSAR Administration | 作为 SRS SPAL V1.0.0 的一部分初始发布 | --- ## 目录(Table of Contents) 1. [文档范围(Scope of document)](#1-文档范围) - 1.1 [约束(Constraints)](#11-约束) 2. [如何阅读本文档(How to read this document)](#2-如何阅读本文档) - 2.1 [使用的约定(Conventions used)](#21-使用的约定) - 2.2 [需求结构(Requirement structure)](#22-需求结构) 3. [缩略语与缩写(Acronyms and abbreviations)](#3-缩略语与缩写) 4. [功能概述(Functional Overview)](#4-功能概述) - 4.1 [DIO 驱动(DIO Driver)](#41-dio-驱动) 5. [需求追踪(Requirements Tracing)](#5-需求追踪) 6. [需求规范(Requirement Specification)](#6-需求规范) - 6.1 [功能需求(Functional Requirements)](#61-功能需求) - 6.1.1 [DIO 驱动](#611-dio-驱动) - 6.2 [非功能需求(Non-Functional Requirements)](#62-非功能需求) - 6.2.1 [DIO 驱动](#621-dio-驱动) 7. [参考文献(References)](#7-参考文献) - 7.1 [AUTOSAR 交付物(Deliverables of AUTOSAR)](#71-autosar-交付物) --- ## 1 文档范围(Scope of document) 本文档规定了 DIO 驱动模块的需求。 ### 1.1 约束(Constraints) 基础软件模块需求规范的首要范围是非安全相关系统。因此,安全需求被分配到中等优先级。 --- ## 2 如何阅读本文档(How to read this document) 每个需求都有其唯一的标识符,以 "BSW"("Basic Software" 的缩写)前缀开头。对于任何审阅注释、评论或问题,请参考此唯一 ID 而不是章节或页码! ### 2.1 使用的约定(Conventions used) - AUTOSAR 文档中需求的表示遵循 [TPS_STDT_00078] 中指定的表。 - 在需求中,使用以下特定语义(取自互联网工程任务组 IETF 的征求意见稿 RFC 2119)。 本文件中使用的关键字 "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY" 和 "OPTIONAL" 应按照 RFC 2119 中的描述进行解释。请注意,它们所使用文档的需求级别会修改这些词的强制力。 - **MUST**:这个词,或术语 "REQUIRED" 或 "SHALL",意味着该定义是规范的绝对要求。 - **MUST NOT**:这个词组,或词组 "SHALL NOT",意味着该定义是规范的绝对禁止。 - **SHOULD**:这个词,或形容词 "RECOMMENDED",意味着在特定情况下可能存在忽略特定条目的有效理由,但在选择不同方案之前必须充分理解并仔细权衡其全部含义。 - **SHOULD NOT**:这个词组,或词组 "NOT RECOMMENDED",意味着在特定情况下特定行为可能是可接受的甚至是有用的,但在实现任何带有此标签描述的行为之前,应理解其全部含义并仔细权衡该情况。 - **MAY**:这个词,或形容词 "OPTIONAL",意味着某个项目是真正可选的。 ### 2.2 需求结构(Requirement structure) 每个模块特定章节包含基础软件模块的简短功能描述。同一类型的需求在每个章节内按以下标题分组(如果适用): **功能需求(Functional Requirements):** - 配置(Configuration) - 初始化(Initialisation) - 正常运行(Normal Operation) - 关闭操作(Shutdown Operation) - 故障操作(Fault Operation) - ... **非功能需求(Non-Functional Requirements):** - 时间需求(Timing Requirements) - 资源使用(Resource Usage) - 可用性(Usability) - 对其他 WP 的输出 - ... --- ## 3 缩略语与缩写(Acronyms and abbreviations) | 缩略语 | 描述 | |---|---| | CS | 片选(Chip select) | | DIO | 数字输入输出(Digital Input Output) | | ECU | 电控单元(Electric Control Unit) | | EOL | 终端产线(End Of Line),常用于 "EOL 编程" 或 "EOL 配置" | | ICU | 中断捕获单元(Interrupt Capture Unit) | | MAL | 微控制器抽象层的旧名称(已被 MCAL 取代,因为 'MAL' 在法语中意为 'bad') | | 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 | 此工作组名称 | | SFR | 特殊功能寄存器(Special Function Register) | | RTE | 运行时环境(Runtime environment) | | WP | 工作包(Work Package) | | 缩写 | 描述 | |---|---| | STD | 标准(Standard) | | REQ | 需求(Requirement) | | UNINIT | 未初始化(Uninitialized) | 由于这是面向专业人士的专业文档,其他所有术语均假定为已知。 --- ## 4 功能概述(Functional Overview) ### 4.1 DIO 驱动(DIO Driver) DIO 驱动提供基于端口和通道的读写访问,以访问内部通用 I/O 端口。读写行为是无缓冲的。此驱动的基本行为是同步的。 DIO 驱动中使用以下表达式: | 表达式 | 解释 | |---|---| | DIO 通道(DIO channel) | 表示单个通用数字输入/输出引脚 | | DIO 端口(DIO port) | 表示由硬件分组的多个 DIO 通道,可同步访问(通常由一个硬件寄存器控制)。例如:Freescale HC08 的 Port A(8 位) | | DIO 通道组(DIO channel group) | 表示由逻辑组表示的多个相邻 DIO 通道。DIO 通道组是 DIO 端口的一个子集,可同步访问。例如:8 位端口的端口引脚 2..6 | --- ## 5 需求追踪(Requirements Tracing) | 需求 | 描述 | 由...满足 | |---|---|---| | RS_BRF_01024 | AUTOSAR 应提供公共符号的命名规则 | SRS_Dio_12355 | | RS_BRF_01864 | AUTOSAR 微控制器抽象应提供 I/O 信号到数字 I/O 端口的映射 | SRS_Dio_12003, SRS_Dio_12004, SRS_Dio_12005, SRS_Dio_12006, SRS_Dio_12007, SRS_Dio_12008, SRS_Dio_12352, SRS_Dio_12424, SRS_Dio_12900 | --- ## 6 需求规范(Requirement Specification) ### 6.1 功能需求(Functional Requirements) #### 6.1.1 DIO 驱动 ##### 6.1.1.1 配置与初始化(Configuration and Initialization) 端口结构的配置和初始化不属于 DIO 驱动的范畴。这由 Port 驱动完成(请参见 [SRS_Port_12001] 端口引脚属性配置)。 **6.1.1.1.1 [SRS_Dio_12355] 应配置符号名称** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | DIO 驱动应允许对以下符号名称进行静态配置:
- DIO 通道名称
- DIO 通道组名称
- DIO 端口名称 | | Rationale | 为 DIO 通道提供人类可读的符号名称。 | | Use Case | -- | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01024) ##### 6.1.1.2 正常运行(Normal Operation) **6.1.1.2.1 [SRS_Dio_12003] DIO 驱动应提供将数据字写入已分配 DIO 端口的服务** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | DIO 驱动应提供将数据字写入已分配 DIO 端口的服务。
该操作应为无缓冲的。
对端口的输入功能不应有影响。 | | Rationale | 基本功能 | | Use Case | 对整个 DIO 端口的写访问。 | | Dependencies | [SRS_Dio_12352] 一般读/写行为 | | Supporting Material | -- | ⌋(RS_BRF_01864) **6.1.1.2.2 [SRS_Dio_12004] DIO 驱动应提供将可选数量的相邻位写入 DIO 端口已分配部分的服务** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | DIO 驱动应提供将可选数量的相邻位写入 DIO 端口已分配部分的服务。该操作应为无缓冲的。 | | Rationale | 允许同时设置具有多个外部分配的 DIO 端口的一组 DIO 通道。 | | Use Case | 对具有多个分配的 DIO 端口的写访问。 | | Dependencies | [SRS_Dio_12352] 一般读/写行为 | | Supporting Material | -- | ⌋(RS_BRF_01864) **6.1.1.2.3 [SRS_Dio_12005] DIO 驱动应提供对单个 DIO 通道的写访问服务** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | DIO 驱动应提供对单个 DIO 通道(特定端口引脚)的写访问服务。 | | Rationale | 高效处理单个 DIO 通道。 | | Use Case | 对特定 DIO 通道(端口引脚)的写访问。 | | Dependencies | [SRS_Dio_12352] 一般读/写行为 | | Supporting Material | -- | ⌋(RS_BRF_01864) **6.1.1.2.4 [SRS_Dio_12006] DIO 驱动应提供从已分配 DIO 端口读取数据字的服务** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | DIO 驱动应提供从已分配 DIO 端口读取数据字的服务。该操作应为无缓冲的。对端口的输出功能不应有影响。 | | Rationale | 基本功能 | | Use Case | 对整个 DIO 端口的读访问。 | | Dependencies | [SRS_Dio_12352] 一般读/写行为 | | Supporting Material | -- | ⌋(RS_BRF_01864) **6.1.1.2.5 [SRS_Dio_12007] DIO 驱动应提供从 DIO 端口已分配部分读取可选数量相邻位的服务** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | DIO 驱动应提供从 DIO 端口已分配部分读取可选数量相邻位的服务。该操作应为无缓冲的。 | | Rationale | 基本功能 | | Use Case | 对具有多个分配的 DIO 端口的读访问。 | | Dependencies | [SRS_Dio_12352] 一般读/写行为 | | Supporting Material | -- | ⌋(RS_BRF_01864) **6.1.1.2.6 [SRS_Dio_12008] DIO 驱动应提供读取已分配 DIO 通道一个位的服务** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | DIO 驱动应提供读取已分配 DIO 通道(特定端口引脚)一个位的服务。该操作应为无缓冲的。 | | Rationale | 高效处理单个 DIO 通道。 | | Use Case | 对特定 DIO 通道的读访问。 | | Dependencies | [SRS_Dio_12352] 一般读/写行为 | | Supporting Material | -- | ⌋(RS_BRF_01864) **6.1.1.2.7 [SRS_Dio_12900] DIO 驱动应提供翻转服务** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | DIO 驱动应提供翻转服务(将已分配 DIO 通道(特定端口引脚)的一个位从 1 翻转为 0 或从 0 翻转为 1)并在翻转后返回该通道的电平。该操作应为无缓冲的。 | | Rationale | 高效处理单个 DIO 通道。 | | Use Case | 对特定 DIO 通道进行翻转电平的读和写访问。 | | Dependencies | [SRS_Dio_12352] 一般读/写行为 | | Supporting Material | -- | ⌋(RS_BRF_01864) **6.1.1.2.8 [SRS_Dio_12352] DIO 驱动应允许对 DIO 端口、通道组和通道进行读写** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | DIO 驱动应允许对 DIO 端口、通道组和通道进行读写,而不考虑其方向配置。

如果对配置为输入的通道进行写入,则该值应写入输出寄存器,但不会出现在物理端口引脚上。

如果读取配置为输出的通道,则在硬件支持的情况下读取真实引脚电平的值。否则,读取端口输出寄存器的值。 | | Rationale | 简化所有 DIO 读写服务的实现。允许输出引脚的回读。允许在将端口引脚切换到输出方向之前预设输出值。 | | Use Case | 请参见原理。 | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01864) ### 6.2 非功能需求(Non-Functional Requirements) #### 6.2.1 DIO 驱动 **6.2.1.1 [SRS_Dio_12424] 提供 DIO 访问的原子性** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | DIO 驱动的所有可重入函数应以原子方式执行以下访问操作:
- DIO 端口
- DIO 通道
- DIO 通道组 | | Rationale | 避免 DIO 驱动 API 函数并发访问中的数据完整性问题。 | | Use Case | 特定微控制器(或特定编译器)不提供对单个端口引脚的原子访问。因此,实现必须对整个端口使用读-修改-写操作。如果不阻塞并发访问,则对同一端口的引脚的并发访问将导致数据完整性问题。 | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01864) --- ## 7 参考文献(References) ### 7.1 AUTOSAR 交付物(Deliverables of AUTOSAR) - **[DOC_LAYERED_ARCH]** 分层软件架构,AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf - **[AUTOSAR_GLOSSARY]** 词汇表,AUTOSAR_TR_Glossary.pdf - **[SRS_BSW_GENERAL]** 基础软件模块的一般需求,AUTOSAR_SRS_BSWGeneral.pdf - **[SRS_BSW_SPAL]** SPAL 的一般需求,AUTOSAR_SRS_SPALGeneral.pdf - **[TPS_STDT_0078]** 软件标准化模板,AUTOSAR_TPS_StandardizationTemplate.pdf --- ## 翻译说明 本文档为 AUTOSAR 4.4.0 版本 DIO 驱动软件需求规范的中文翻译。保留了所有需求 ID(SRS_Dio_xxxxx)、参考标识符及模块缩写。原始文档共 15 页,本翻译涵盖了全部章节内容。