# Port 驱动需求(Requirements on Port Driver) > **AUTOSAR CP Release 4.4.0** ## 文档元信息 | 字段 | 内容 | |---|---| | **文档标题** | Port 驱动需求(Requirements on Port Driver) | | **文档所有者** | AUTOSAR | | **文档责任方** | AUTOSAR | | **文档标识号** | 196 | | **文档状态** | 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 | 细微修正 / 澄清 / 编辑性变更;详细信息请参考 ChangeDocumentation | | 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 编辑性变更 | | 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 编辑性变更 | | 2013-03-15 | 4.1.1 | AUTOSAR Administration | TPS_STDT_0078 格式化;BSWAndRTE_Features 的可追溯性 | | 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 已被拆分为 12 个独立文档,以发布 2.0;正式问题的细微变更 | | 2005-05-31 | 1.0 | AUTOSAR Administration | 作为 SRS SPAL V1.0.0 的一部分初始发布 | --- ## 目录(Table of Contents) 1. [文档范围(Scope of document)](#1-文档范围) 2. [如何阅读本文档(How to Read this Document)](#2-如何阅读本文档) - 2.1 [使用的约定(Conventions used)](#21-使用的约定) - 2.2 [需求结构(Requirements structure)](#22-需求结构) 3. [缩略语与缩写(Acronyms and abbreviations)](#3-缩略语与缩写) 4. [功能概述(Functional Overview)](#4-功能概述) 5. [需求规范(Requirement Specification)](#5-需求规范) - 5.1 [功能需求(Functional Requirements)](#51-功能需求) - 5.1.1 [配置(Configuration)](#511-配置) - 5.1.2 [正常运行(Normal Operation)](#512-正常运行) - 5.2 [非功能需求(Non-Functional Requirements)](#52-非功能需求) - 5.2.2 [过程需求(Process Requirements)](#522-过程需求) 6. [参考文献(References)](#6-参考文献) - 6.1 [AUTOSAR 交付物(Deliverables of AUTOSAR)](#61-autosar-交付物) --- ## 1 文档范围(Scope of document) 本文档规定了 PORT 驱动模块的需求。 ### 约束(Constraints) 基础软件模块需求规范的首要范围是非安全相关系统。因此,安全需求被分配到中等优先级。 --- ## 2 如何阅读本文档(How to Read this Document) 每个需求都有其唯一的标识符,以 "BSW"("Basic Software" 的缩写)前缀开头。对于任何审阅注释、评论或问题,请参考此唯一 ID 而不是章节或页码! ### 2.1 使用的约定(Conventions used) - AUTOSAR 文档中需求的表示遵循 [TPS_STDT_0078] 中指定的表。 - 在需求中,使用以下特定语义。 本文件中使用的关键字 "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",意味着某个项目是真正可选的。一个供应商可能选择包含该项目,因为特定市场需要它或因为供应商认为它增强了产品,而另一个供应商可能省略同一项目。不包含特定选项的实现必须准备好与包含该选项的另一个实现互操作,尽管可能具有降低的功能。同样,包含特定选项的实现必须准备好与不包含该选项的另一个实现互操作(当然,除了该选项提供的功能之外)。 ### 2.2 需求结构(Requirements structure) 每个模块特定章节包含基础软件模块的简短功能描述。同一类型的需求在每个章节内按以下标题分组(如果适用): **功能需求(Functional Requirements):** - 配置(Configuration) - 初始化(Initialisation) - 正常运行(Normal Operation) - 关闭操作(Shutdown Operation) - 故障操作(Fault Operation) - ... **非功能需求(Non-Functional Requirements):** - 时间需求(Timing Requirements) - 资源使用(Resource Usage) - 可用性(Usability) - 对其他 WP 的输出(例如描述模板、工具等) - ... --- ## 3 缩略语与缩写(Acronyms and abbreviations) 具有局部范围的缩略语和缩写不包含在 AUTOSAR 词汇表中。这些必须出现在局部词汇表中。 | 缩略语 | 描述 | |---|---| | ADC | 模数转换器(Analogue to Digital Converter) | | DIO | 数字输入输出(Digital Input Output) | | ICU | 输入捕获单元(Input Capture Unit) | | MCAL | 微控制器抽象层(Microcontroller Abstraction Layer) | | MCU | 微控制器单元(Microcontroller Unit) | | OS | 操作系统(Operating System) | | PWM | 脉宽调制(Pulse Width Modulation) | | SCI | 串行通信接口(Serial Communication Interface) | | SPAL | 此工作组名称(标准外设抽象层,Standard Peripheral Abstraction Layer) | | SPI | 串行外设接口(Serial Peripheral Interface) | | WP | 工作包(Work Package) | | 缩写 | 描述 | |---|---| | STD | 标准(Standard) | | REQ | 需求(Requirement) | | UNINIT | 未初始化(Uninitialized) | 由于这是面向专业人士的专业文档,其他所有术语均假定为已知。 --- ## 4 功能概述(Functional Overview) 本模块初始化微控制器的整个端口结构。许多端口和端口引脚可以分配给各种功能,例如: - 通用 I/O - ADC - SPI - SCI - PWM 因此,必须对此端口结构进行整体配置和初始化。这些端口引脚的配置和使用取决于微控制器和 ECU。 Port 驱动中使用以下表达式: | 表达式 | 解释 | |---|---| | 物理电平(输入):Physical Level (Input) | 两种可能状态:LOW/HIGH(低/高) | | 物理电平(输出):Physical Level (Output) | 三种可能状态:LOW/HIGH/高阻态 | | 逻辑电平:Logical Level | 软件中看到的电平:TRUE/FALSE(真/假) | --- ## 5 需求规范(Requirement Specification) ### 5.1 功能需求(Functional Requirements) #### 5.1.1 配置(Configuration) **5.1.1.1 [SRS_Port_12001] Port 驱动应允许对每个端口的以下选项进行静态配置** ⌈ | 字段 | 内容 | |---|---| | Type(类型) | Valid(有效) | | Description(描述) | Port 驱动应允许对每个端口的以下选项进行静态配置。配置的粒度(整个端口或单个端口引脚)取决于微控制器。
**强制参数:**
- 引脚用途(例如 DIO、ADC、SPI…)
- 引脚方向(输入、输出)
- 引脚电平初始化值
- 引脚方向是否可在运行时更改(是/否)

**可选参数(仅当硬件支持时):**
- 激活内部上拉/下拉
- 压摆率控制
- 输入阈值
- 引脚驱动模式(推挽/开漏)
- 其他微控制器特定属性

电平反相功能不应可配置,而应设置为默认值(未反相)。
电平反相是 I/O 硬件抽象的任务。 | | Rationale(原理) | 基本配置;运行时更改引脚方向:这是端口刷新和运行时方向更改所需的信息,请参见 [SRS_Port_12405] 设置端口引脚方向和 [SRS_Port_12406] 刷新端口方向。 | | Use Case(用例) | -- | | Dependencies(依赖) | -- | | Supporting Material(支持材料) | -- | ⌋(RS_BRF_01864) **5.1.1.2 [SRS_Port_12302] Port 驱动应允许对端口引脚名称进行静态配置** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | Port 驱动应允许对以下符号名称进行静态配置:
- 端口引脚名称 | | Rationale | 为微控制器端口和端口引脚提供人类可读的符号名称。 | | Use Case | 示例:
- PORT_A_PIN_0 | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01864) #### 5.1.2 正常运行(Normal Operation) **5.1.2.1 [SRS_Port_12405] Port 驱动应在运行时提供设置端口引脚方向的服务** ⌈ | 字段 | 内容 | |---|---| | Type | valid | | Description | Port 驱动应在运行时提供设置端口引脚方向的服务。
Port 驱动应仅允许更改那些被配置为可更改方向的端口引脚的方向。 | | Rationale | -- | | Use Case | 与 ASIC 的单线双向通信。 | | Dependencies | [SRS_Port_12001] 端口引脚属性配置 | | Supporting Material | -- | ⌋(RS_BRF_01056, RS_BRF_01864) **5.1.2.2 [SRS_Port_12406] Port 驱动应提供刷新所有已配置端口方向的服务** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | Port 驱动应提供将所有已配置端口的方向刷新为已配置方向的服务。
Port 驱动应从刷新中排除那些被配置为"运行时方向可更改"的端口引脚。 | | Rationale | 使系统对 EMC 和应用软件错误(端口数据方向寄存器损坏)更具鲁棒性。 | | Use Case | -- | | Dependencies | [SRS_Port_12001] 端口引脚属性配置 | | Supporting Material | -- | ⌋(RS_BRF_01056, RS_BRF_01864) ### 5.2 非功能需求(Non-Functional Requirements) **5.2.1.1 [SRS_Port_12423] Port 驱动的所有可重入函数应以原子方式执行端口寄存器访问操作** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | Port 驱动的所有可重入函数应以原子方式执行端口寄存器访问操作。 | | Rationale | 避免 Port 驱动 API 函数并发访问中的数据完整性问题。 | | Use Case | 特定微控制器(或特定编译器)不提供对单个端口引脚的原子访问。因此,实现必须对整个端口使用读-修改-写操作。如果不阻塞并发访问,则对同一端口的引脚的并发访问将导致数据完整性问题。 | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01864) #### 5.2.2 过程需求(Process Requirements) **5.2.2.1 [SRS_Port_12300] 未使用的端口和端口引脚应设置为已定义状态** ⌈ | 字段 | 内容 | |---|---| | Type | Valid | | Description | 未使用的端口和端口引脚(既不作为通用 I/O 也不作为专用 I/O)应由 Port 模块配置设置为已定义状态。 | | Rationale | 确保所有端口和端口引脚都处于已定义状态。 | | Use Case | -- | | Dependencies | -- | | Supporting Material | -- | ⌋(RS_BRF_01864) --- ## 6 参考文献(References) ### 6.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 版本 Port 驱动软件需求规范的中文翻译。保留了所有需求 ID(SRS_Port_xxxxx)、参考标识符及模块缩写。原始文档共 13 页,本翻译涵盖了全部章节内容。