52 KiB
Specification of Port Driver(Port 驱动规范)
AUTOSAR CP Release 4.4.0
文档元信息
| 项目 | 内容 |
|---|---|
| Document Title(文档标题) | Specification of Port Driver(Port 驱动规范) |
| Document Owner(文档所有者) | AUTOSAR |
| Document Responsibility(文档责任方) | AUTOSAR |
| Document Identification No(文档标识号) | 040 |
| Document Status(文档状态) | Final(最终版) |
| Part of AUTOSAR Standard(所属 AUTOSAR 标准) | Classic Platform(经典平台) |
| Part of Standard Release(所属标准发布版本) | 4.4.0 |
文档变更历史(Document Change History)
| Date(日期) | Release(版本) | Changed by(修改人) | Change Description(变更描述) |
|---|---|---|---|
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | MCAL Multicore Distribution (Draft)(MCAL 多核分布(草案)) |
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | 较小的修正/澄清/编辑性变更;详情请参考 ChangeDocumentation |
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 移除对 DEM 的剩余引用;移除"Variants"章节 |
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 重新措辞 SWS_Port_00077、SWS_Port_00087、SWS_Port_00223;第 7 章的编辑性变更;移除 SWS_Port_0105;将 PORT_E_PARAM_CONFIG 替换为 PORT_E_INIT_FAILED |
| 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 | 从 Port_GetVersionInfo API 中移除 PORT_E_UNINIT;头文件结构:MemMap.h 更改为 Port_MemMap.h,移除 EcuM.h;将配置参数的作用域从"module"更改为"local";移除由新 SWS BSW General 覆盖的规范项;形式重做 |
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | 移除 Port132 并更新图 1;重新措辞 SWS_Port_00114 和 SWS_Port_00075;移除 Port210;新增第 12 章 |
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 许多需求已更改为原子化或更清晰。无技术内容变更;完整列表请参见第 14 章;插入调试概念;插入新的配置参数以在运行时启用或禁用端口引脚模式;检查 Port_GetVersionInfo;修订法律免责声明 |
| 2009-02-04 | 3.1.2 | AUTOSAR CM | 更新文档以使用新的 SWS 宏并更新到生成内容的链接 |
| 2009-07-24 | 3.1.3 | AUTOSAR Administration | 修订法律免责声明 |
| 2008-08-13 | 3.1.1 | AUTOSAR Administration | 表格格式已更正 |
| 2008-02-01 | 3.0.2 | AUTOSAR Administration | 更新第 10 章配置;包含 Port Container;包含新的 SRS 总体需求;移除冗余函数:Dem_ReportErrorEvent();添加开发错误和错误代码;重新措辞需求(SWS 改进的一部分);配置参数重命名(PORT_PIN_DIRECTION_CHANGES_ALLOWED -> PORT_SEP_PIN_DIRECTION_API);技术办公室改进:措辞改进、API 描述对齐;扩展文档元信息;进行小的布局调整 |
| 2007-01-24 | 2.1.15 | AUTOSAR Administration | 引入新 API:Port_SetPinMode();新模块类型定义:Port_PinModeType;更新到 5.1.2 节:包含新的文件结构信息;包含新的预处理器开关 PortSetPinModeApi;引入新的可配置参数:PortPinInitialMode;重新措辞需求 SWS_Port_00105;移除需求矩阵中的冗余需求 PORT119 和 PORT026;修订法律免责声明;添加发布说明;修订"Advice for users";添加"Revision Information" |
| 2006-05-16 | 2.0 | AUTOSAR Administration | 文档结构适应公共 Release 2.0 SWS 模板;第 10 章的重大变更;部分文档结构变更;其他变更参见第 11 章 |
| 2005-05-31 | 1.0 | AUTOSAR Administration | 初始发布 |
免责声明(Disclaimer)
本文档(规范和/或软件实现)及其包含的材料由 AUTOSAR 发布,仅用于信息目的。AUTOSAR 和为其做出贡献的公司不对作品的任何使用承担责任。
本作品中包含的材料受版权和其他类型知识产权的保护。商业利用本作品中包含的材料需要此类知识产权的许可。
本作品可在不进行任何修改的情况下、以任何形式或任何方式用于信息目的。对于任何其他目的,未经出版商的书面许可,作品的任何部分不得以任何形式或任何方式被利用或复制。
本作品专为汽车应用而开发。它既未开发也未针对非汽车应用进行测试。
AUTOSAR 字样和 AUTOSAR 徽标是注册商标。
目录(Table of Contents)
- 1 引言与功能概述(Introduction and functional overview)
- 2 缩略语与缩写(Acronyms and abbreviations)
- 3 相关文档(Related documentation)
- 3.1 输入文档
- 3.2 相关标准与规范
- 3.3 相关规范
- 4 约束与假设(Constraints and assumptions)
- 4.1 限制
- 4.2 对汽车领域的适用性
- 5 对其他模块的依赖(Dependencies to other modules)
- 5.1 文件结构
- 5.1.1 代码文件结构
- 5.1 文件结构
- 6 需求可追溯性(Requirements traceability)
- 7 功能规范(Functional specification)
- 7.1 通用行为
- 7.1.1 背景与原理
- 7.1.2 需求
- 7.1.3 版本检查
- 7.2 错误分类
- 7.2.1 开发错误
- 7.2.2 运行时错误
- 7.2.3 瞬态故障
- 7.2.4 生产错误
- 7.3 错误检测
- 7.4 错误通知
- 7.5 API 参数检查
- 7.1 通用行为
- 8 API 规范(API specification)
- 8.1 导入的类型
- 8.2 类型定义
- 8.2.1 Port_ConfigType
- 8.2.2 Port_PinType
- 8.2.3 Port_PinDirectionType
- 8.2.4 Port_PinModeType
- 8.3 函数定义
- 8.3.1 Port_Init
- 8.3.2 Port_SetPinDirection
- 8.3.3 Port_RefreshPortDirection
- 8.3.4 Port_GetVersionInfo
- 8.3.5 Port_SetPinMode
- 8.4 回调通知
- 8.5 调度函数
- 8.6 预期接口
- 8.6.1 强制接口
- 8.6.2 可选接口
- 8.6.3 可配置接口
- 9 时序图(Sequence diagrams)
- 9.1 端口的整体配置
- 9.2 设置 Port 引脚的方向
- 9.3 刷新所有 Port 引脚的方向
- 9.4 更改 Port 引脚的模式
- 10 配置规范(Configuration specification)
- 10.1 如何阅读本章
- 10.2 容器和配置参数
- 10.2.1 Port
- 10.2.2 PortContainer
- 10.2.3 PortGeneral
- 10.2.4 PortPin
- 10.2.5 PortConfigSet
- 10.3 约束
- 10.4 发布信息
- 11 不适用的需求(Not applicable requirements)
1 引言与功能概述
本规范规定了 AUTOSAR 基本软件模块 PORT 驱动的功能、API 和配置。
本驱动规范适用于片上端口(on-chip ports)和端口引脚(port pins)。
本模块应提供服务以初始化微控制器的整个 PORT 结构。许多端口和端口引脚可以分配给各种功能,例如:
- 通用 I/O
- ADC
- SPI
- SCI
- PWM
- CAN
- LIN
- 等等
因此,应当对此端口结构进行整体配置和初始化。这些端口引脚的配置和模式依赖于微控制器和 ECU。
Port 初始化数据应以尽可能高效的方式写入每个端口。
本 PORT 驱动模块应完成端口结构的整体配置和初始化,该结构由 DIO 驱动模块使用。因此,DIO 驱动作用于由 PORT 驱动配置的引脚和端口上。
PORT 驱动应在使用 DIO 功能之前进行初始化。否则 DIO 功能将表现出未定义的行为。
下图标识了 PORT 驱动函数,以及 PORT 驱动和 DIO 驱动在 MCAL 软件层中的结构。
| Driver(驱动) | Name for a Port Pin(端口引脚的名称) | Name for Subset of Adjacent pins on one port(一个端口上相邻引脚子集的名称) | Name for a whole port(整个端口的名称) |
|---|---|---|---|
| DIO Driver | Channel(通道) | Channel Group(通道组) | Port(端口) |
| PORT Driver | Port pin(端口引脚) | -- | Port(端口) |
IO HW Abstraction Software I/O HW Abstraction Driver Functions
──────────────────────────────────────────────────────────────────────────
│ Inside this dotted line is PORT Driver specific
│
MCAL Software
────────────── │ DIO_WriteChannel
PORT_Init │
│ DIO_ReadPort
PORT Driver ────────► PORT_Config │
│ DIO_WriteGroup
Other PORT Driver │
Functions │ Other DIO Driver Functions
│
│
─────────────────────────────────────────────
Port Function Port Data Read
On-Chip Registers
────────────────── Port Data Write
On-Chip Hardware
──────────────────
PIN0 PIN1 PIN2 PIN3 PIN... PINn
PORT
2 缩略语与缩写
下表总结了 PORT 驱动中使用的表达。
| 缩写 / 缩略语 | 描述 |
|---|---|
| DEM | Diagnostic Event Manager(诊断事件管理器) |
| DET | Default Error Tracer(默认错误跟踪器) |
| MCU | MicroController Unit(微控制器单元) |
| Port Pin(端口引脚) | 代表 MCU 设备上单个可配置的输入或输出引脚。 |
| Port(端口) | 代表 MCU 设备上整个可配置的端口。 |
| Physical Level (Input)(物理电平-输入) | 两种可能状态:LOW/HIGH(低/高) |
| Physical Level (Output)(物理电平-输出) | 两种可能状态:LOW/HIGH(低/高) |
3 相关文档
3.1 输入文档
- [1] List of Basic Software Modules, AUTOSAR_TR_BSWModuleList.pdf
- [2] Layered Software Architecture, AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
- [3] General Requirements on Basic Software Modules, AUTOSAR_SRS_BSWGeneral.pdf
- [4] Specification of Default Error Tracer, AUTOSAR_SWS_DefaultErrorTracer.pdf
- [5] Specification of ECU Configuration, AUTOSAR_TPS_ECUConfiguration.pdf
- [6] Specification of Diagnostic Event Manager, AUTOSAR_SWS_DiagnosticEventManager.pdf
- [7] Specification of ECU State Manager, AUTOSAR_SWS_ECUStateManager.pdf
- [8] General Requirements on SPAL, AUTOSAR_SRS_SPALGeneral.pdf
- [9] Requirements on PORT driver, AUTOSAR_SRS_PORTDriver.pdf
- [10] Specification of Standard Types, AUTOSAR_SWS_StandardTypes.pdf
- [11] Basic Software Module Description Template, AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
- [12] General Specification of Basic Software Modules, AUTOSAR_SWS_BSWGeneral.pdf
3.2 相关标准与规范
- [13] EC 7498-1 The Basic Model, IEC Norm, 1994
3.3 相关规范
AUTOSAR 提供了关于基本软件模块的通用规范 [12](SWS BSW General),该规范对 Port 驱动同样有效。
因此,规范 SWS BSW General 应被视为 Port 驱动的附加且必需的规范。
4 约束与假设
4.1 限制
PORT 驱动的限制规定如下:
- 由用户负责确保同一 Port/Port 引脚不被同一系统中的不同实体并行访问,例如由两个任务配置同一个端口、两个任务配置同一个引脚,或两个任务配置同一端口上的不同引脚。
4.2 对汽车领域的适用性
无限制。
5 对其他模块的依赖
其他驱动模块可能依赖于 PORT 驱动,这取决于 MCU 上各个端口引脚的可用功能。例如,MCU 引脚可配置为 DIO 或 SPI 引脚。因此,DIO 和/或 SPI 驱动模块可能依赖于 PORT 模块,以将引脚配置为所需的功能。
5.1 文件结构
5.1.1 代码文件结构
有关详细信息,请参阅 SWS_BSWGeneral 中的章节 5.1.6"代码文件结构"。
6 需求可追溯性
本章引用 SRS 文档(软件需求规范)中适用于本软件模块的输入需求。
下表列出了满足输入需求的 PORT 驱动 SWS 文档的规范项。仅引用功能需求。
说明:本表较大,此处保留前 10 行作为示例。完整表见原文 PDF(AUTOSAR_SWS_PortDriver.pdf 第 12-17 页)。
| 需求 | 描述 | 由以下满足 |
|---|---|---|
| SRS_BSW_00005 | µC 抽象层(MCAL)的模块不得具有硬编码的水平接口 | SWS_Port_00227 |
| SRS_BSW_00006 | µC 抽象层(MCAL)以上的软件模块源代码不得依赖于处理器和编译器 | SWS_Port_00227 |
| SRS_BSW_00007 | 用 C 语言编写的所有基本软件模块应符合 MISRA C 2012 标准 | SWS_Port_00227 |
| SRS_BSW_00010 | 所有基本软件模块的内存消耗应为所有支持的平台的定义配置记录 | SWS_Port_00227 |
| SRS_BSW_00101 | 基本软件模块应能在单独的初始化函数中初始化变量和硬件 | SWS_Port_00001, SWS_Port_00002, SWS_Port_00041, SWS_Port_00042 |
| SRS_BSW_00159 | AUTOSAR 基本软件的所有模块应支持基于工具的配置 | SWS_Port_00004 |
| SRS_BSW_00160 | AUTOSAR 基本软件模块的配置文件应对人类可读 | SWS_Port_00227 |
| SRS_BSW_00161 | AUTOSAR 基本软件应提供微控制器抽象层,为更高的软件层提供标准化接口 | SWS_Port_00227 |
| SRS_BSW_00162 | AUTOSAR 基本软件应提供硬件抽象层 | SWS_Port_00227 |
| SRS_BSW_00164 | 中断服务程序的实现应由操作系统、复杂驱动程序或模块完成 | SWS_Port_00227 |
| SRS_Port_12001 | Port 驱动应允许每个端口的以下选项的静态配置 | SWS_Port_00004, SWS_Port_00072, SWS_Port_00079 |
| SRS_Port_12300 | 未使用的端口和端口引脚应设置为已定义状态 | SWS_Port_00005 |
| SRS_Port_12302 | Port 驱动应允许端口引脚名称的静态配置 | SWS_Port_00006 |
| SRS_Port_12405 | Port 驱动应在运行时提供设置端口引脚方向的服务 | SWS_Port_00063, SWS_Port_00086, SWS_Port_00138 |
| SRS_Port_12406 | Port 驱动应提供刷新所有已配置端口方向的服务 | SWS_Port_00060, SWS_Port_00061 |
(完整表包含约 80 个 SRS_BSW 和 SRS_SPAL 需求项的映射。)
7 功能规范
7.1 通用行为
7.1.1 背景与原理
[SWS_Port_00001] ⌈PORT 驱动模块应初始化微控制器的整个端口结构。⌋ (SRS_BSW_00101)
注:定义端口和端口引脚配置的顺序是配置工具的任务。
7.1.2 需求
7.1.2.1 Port 引脚属性的配置
[SWS_Port_00004] ⌈PORT 驱动模块应允许为每个端口和端口引脚配置不同的功能,例如 ADC、SPI、DIO 等。⌋ (SRS_BSW_00159, SRS_Port_12001)
端口(即整个端口或单个端口引脚)的配置依赖于微控制器。
[SWS_Port_00079] ⌈PORT 驱动模块应为 MCU 端口/端口引脚提供附加配置:
- 引脚方向(输入/输出)
- 引脚电平初始值
- 运行时是否可更改引脚方向(是/否)
- 运行时是否可更改端口模式。⌋ (SRS_Port_12001)
[SWS_Port_00081] ⌈PORT 驱动模块应为 MCU 端口和端口引脚提供一些可选配置(如果硬件支持):
- 压摆率控制
- 激活内部上拉
- 输入阈值
- 引脚驱动模式(推挽/开漏)
- 回读支持类型(引脚电平、输出寄存器值)。⌋ ( )
[SWS_Port_00082] ⌈PORT 驱动模块不应提供配置引脚电平反转的功能。应设置为默认值(即未反转)。⌋ ( )
注:电平反转应由 IO 硬件抽象层执行。
7.1.2.2 切换端口引脚方向
[SWS_Port_00137] ⌈对于使用配置工具配置为可更改的端口引脚,PORT 驱动应允许用户在运行时更改端口引脚的方向。⌋ ( )
[SWS_Port_00138] ⌈如果 MCU 端口控制硬件提供用于设置端口引脚输出电平的输出锁存器,则切换端口引脚方向不应更改此输出锁存器中设置的电平。⌋ (SRS_Port_12405)
7.1.2.3 刷新端口方向
[SWS_Port_00066] ⌈为了在微控制器上刷新端口,PORT 驱动应允许用户刷新方向由配置设置且无法动态更改的端口引脚的方向。⌋ ( )
7.1.2.4 未使用的端口和端口引脚的配置
[SWS_Port_00005] ⌈PORT 驱动模块应将所有未使用的端口和端口引脚(既不用作 GPIO 也不用作特殊用途 IO)配置为由 PORT 驱动模块配置设置为已定义状态。⌋ (SRS_Port_12300)
7.1.2.5 符号名称的配置
[SWS_Port_00006] ⌈PORT 驱动模块的用户应配置 MCU 端口引脚的符号名称。⌋ (SRS_Port_12302)
[SWS_Port_00207] ⌈各个端口引脚的这些符号名称(例如 PORT_A_PIN_0)应在配置工具中定义。⌋ ( )
[SWS_Port_00208] ⌈PORT 驱动模块的实现者应通过文件 Port.h 发布符号名称。⌋ ( )
7.1.2.6 端口访问的原子性
[SWS_Port_00075] ⌈PORT 驱动模块应提供对所有端口和端口引脚的原子访问。⌋ ()
注:原子访问是通过使用原子指令或使用由基本软件调度器模块提供的独占区域(例如禁用中断)对微控制器寄存器的不可中断访问。
7.1.3 版本检查
7.1.3.1 背景与原理
应避免不兼容文件的集成。最低实现是 .c 文件内头文件的版本检查(.c 和 .h 文件的版本号应相同)。
7.1.3.2 需求
Port 模块应通过以下预处理器检查避免不兼容文件的集成:
有关详细信息,请参阅 SWS_BSWGeneral 中的章节 5.1.8"Version Check"。
7.2 错误分类
7.2.1 开发错误
[SWS_Port_00051] ⌈PORT 驱动应根据其构建版本(开发/生产)检测以下错误和异常。
| 错误类型 | 相关错误代码 | 值 [hex] |
|---|---|---|
| 请求了无效的 Port 引脚 ID | PORT_E_PARAM_PIN | 0x0A |
| Port 引脚未配置为可更改 | PORT_E_DIRECTION_UNCHANGEABLE | 0x0B |
| API Port_Init 服务使用错误参数调用 | PORT_E_INIT_FAILED | 0x0C |
| 当模式不可更改时调用 API Port_SetPinMode 服务 | PORT_E_PARAM_INVALID_MODE | 0x0D |
| 当模式不可更改时调用 API Port_SetPinMode 服务 | PORT_E_MODE_UNCHANGEABLE | 0x0E |
| 模块初始化之前调用 API 服务 | PORT_E_UNINIT | 0x0F |
| 使用空指针调用 API | PORT_E_PARAM_POINTER | 0x10 |
⌋ (SRS_BSW_00327, SRS_BSW_00337, SRS_BSW_00385, SRS_BSW_00406)
7.2.2 运行时错误
无运行时错误。
7.2.3 瞬态故障
无瞬态故障。
7.2.4 生产错误
无生产错误。
7.3 错误检测
有关详细信息,请参阅 SWS_BSWGeneral 中的章节 7.3"Error Detection"。
7.4 错误通知
有关详细信息,请参阅 SWS_BSWGeneral 中的章节 7.4"Error notification"。
7.5 API 参数检查
[SWS_Port_00077] ⌈如果启用了开发错误检测,则 Port 驱动模块应按照传递参数的顺序检查函数参数,如果一个检查失败,则跳过进一步的参数检查。
示例:对于函数 Port_SetPinDirection,要传递的第一个参数是引脚 ID。该参数应标识 MCU 端口的相关端口引脚。传递的第二个参数对应于要在端口引脚上更改的方向。⌋ (SRS_SPAL_12448)
[SWS_Port_00087] ⌈如果启用了开发错误检测且 Port 驱动模块检测到错误,则应跳过所需功能,并且请求的服务应在不执行任何操作的情况下返回。⌋ (SRS_BSW_00323, SRS_BSW_00406)
有关每个函数报告的 Det 错误的列表,请参见下表。
| 函数 | 错误条件 | 相关错误值 |
|---|---|---|
| Port_SetPinDirection | 传递了不正确的 Port 引脚 ID | PORT_E_PARAM_PIN |
| Port_SetPinDirection | Port 引脚未配置为可更改 | PORT_E_DIRECTION_UNCHANGEABLE |
| Port_Init | Port_Init 服务使用错误参数调用 | PORT_E_INIT_FAILED |
| Port_SetPinMode | 传递了不正确的 Port 引脚 ID | PORT_E_PARAM_PIN |
| Port_SetPinMode | 传递的 Port 引脚模式无效 | PORT_E_PARAM_INVALID_MODE |
| Port_SetPinMode | 当模式不可更改时调用 Port_SetPinMode 服务 | PORT_E_MODE_UNCHANGEABLE |
| Port_SetPinDirection, Port_SetPinMode, Port_RefreshPortDirection | 在模块初始化之前调用 API 服务 | PORT_E_UNINIT |
| Port_GetVersionInfo | 使用 NULL 指针参数调用 API | PORT_E_PARAM_POINTER |
8 API 规范
8.1 导入的类型
本章列出了从以下模块包含的所有类型:
[SWS_Port_00129] ⌈
| 模块 | 头文件 | 导入的类型 |
|---|---|---|
| Std_Types | StandardTypes.h | Std_ReturnType |
| StandardTypes.h | Std_VersionInfoType |
⌋ ()
8.2 类型定义
8.2.1 Port_ConfigType
[SWS_Port_00228] ⌈
| 项目 | 内容 |
|---|---|
| Name(名称) | Port_ConfigType |
| Type(类型) | Structure(结构体) |
| Range(范围) | Hardware Dependent Structure(硬件相关结构)— 初始化数据结构的内容是特定于微控制器的。 |
| Description(描述) | 包含此模块初始化数据的外部数据结构类型。 |
| Available via(可用位置) | Port.h |
⌋ ()
[SWS_Port_00073] ⌈类型 Port_ConfigType 是用于包含 PORT 驱动初始化数据的外部数据结构的类型。⌋ ( )
注:用户应使用配置工具中定义的符号名称。
注:每个端口引脚的配置是 MCU 特定的。因此,不可能在本规范中包含不同配置的完整列表。
[SWS_Port_00072] ⌈Port_ConfigType 结构的可能端口配置列表如下:
- 引脚模式(例如 DIO、ADC、SPI …)— 此端口引脚配置是强制性的,除非端口引脚配置为 DIO。
- 引脚方向(输入、输出)— 当端口引脚用于 DIO 时,此端口引脚配置是强制性的。
- 引脚电平初始值(参见 SWS_Port_00055)— 当端口引脚用于 DIO 时,此端口引脚配置是强制性的。
- 运行时引脚方向是否可更改(STD_ON/STD_OFF)— 此端口引脚配置依赖于 MCU。
- 运行时引脚模式是否可更改(STD_ON/STD_OFF)— 配置依赖于 MCU。
可选参数(如果硬件支持):
- 压摆率控制
- 激活内部上拉
- 微控制器特定的端口引脚属性。⌋ (SRS_Port_12001)
8.2.2 Port_PinType
[SWS_Port_00229] ⌈
| 项目 | 内容 |
|---|---|
| Name(名称) | Port_PinType |
| Type(类型) | uint |
| Range(范围) | 0 - <端口引脚数:> — 应涵盖所有可用的端口引脚。应针对特定 MCU 平台选择类型(最佳性能)。 |
| Description(描述) | 端口引脚符号名称的数据类型。 |
| Available via(可用位置) | Port.h |
⌋ ()
[SWS_Port_00013] ⌈类型 Port_PinType 应用于 Port 引脚的符号名称。⌋ ( )
[SWS_Port_00219] ⌈类型 Port_PinType 应为 uint8、uint16 或 uint32,具体取决于特定 MCU 平台。⌋ ( )
注:用户应使用配置工具提供的符号名称。
8.2.3 Port_PinDirectionType
[SWS_Port_00230] ⌈
| 项目 | 内容 |
|---|---|
| Name(名称) | Port_PinDirectionType |
| Type(类型) | Enumeration(枚举) |
| Range(范围) | PORT_PIN_IN — 将端口引脚设置为输入;PORT_PIN_OUT — 将端口引脚设置为输出。 |
| Description(描述) | 端口引脚的可能方向。 |
| Available via(可用位置) | Port.h |
⌋ ()
[SWS_Port_00046] ⌈类型 Port_PinDirectionType 是用于定义 Port 引脚方向的类型。⌋ ( )
[SWS_Port_00220] ⌈类型 Port_PinDirectionType 应为枚举类型,范围为 PORT_PIN_IN 和 PORT_PIN_OUT。⌋ ( )
8.2.4 Port_PinModeType
[SWS_Port_00231] ⌈
| 项目 | 内容 |
|---|---|
| Name(名称) | Port_PinModeType |
| Type(类型) | uint |
| Range(范围) | Implementation specific(实现特定)— 由于一个引脚上应可配置多个端口引脚模式,因此范围应由实现确定。 |
| Description(描述) | 不同的端口引脚模式。 |
| Available via(可用位置) | Port.h |
⌋ ()
[SWS_Port_00124] ⌈端口引脚应可使用多种端口引脚模式(类型 Port_PinModeType)进行配置。⌋ ( )
[SWS_Port_00212] ⌈类型 Port_PinModeType 应与函数调用 Port_SetPinMode(参见 8.3.5 节)一起使用。⌋ ( )
[SWS_Port_00221] ⌈类型 Port_PinModeType 应为 uint8、uint16 或 uint32。⌋ ()
8.3 函数定义
这是为上层模块提供的函数列表。
8.3.1 Port_Init
[SWS_Port_00140] ⌈
| 项目 | 内容 |
|---|---|
| Service name(服务名称) | Port_Init |
| Syntax(语法) | void Port_Init(const Port_ConfigType* ConfigPtr) |
| Service ID[hex](服务 ID) | 0x00 |
| Sync/Async(同步/异步) | Synchronous(同步) |
| Reentrancy(可重入性) | Non Reentrant(不可重入) |
| Parameters (in)(输入参数) | ConfigPtr — 指向配置集的指针 |
| Parameters (inout)(输入输出参数) | None(无) |
| Parameters (out)(输出参数) | None(无) |
| Return value(返回值) | None(无) |
| Description(描述) | 初始化 Port 驱动模块。 |
| Available via(可用位置) | Port.h |
⌋ (SRS_BSW_00358)
[SWS_Port_00041] ⌈函数 Port_Init 应使用由参数 ConfigPtr 指向的配置集初始化所有端口和端口引脚。⌋ (SRS_BSW_00101, SRS_BSW_00404, SRS_SPAL_12263, SRS_SPAL_12057, SRS_SPAL_12125)
[SWS_Port_00078] ⌈PORT 驱动模块的环境应首先调用函数 Port_Init 以初始化端口以供使用。⌋ ( )
[SWS_Port_00213] ⌈如果未首先调用 Port_Init 函数,则无法在 MCU 端口和端口引脚上执行任何操作。⌋ ( )
[SWS_Port_00042] ⌈函数 Port_Init 应初始化所有已配置的资源。⌋ (SRS_BSW_00101, SRS_SPAL_12057, SRS_SPAL_12125)
函数 Port_Init 应在控制器寄存器初始化方面应用以下规则:
-
[SWS_Port_00113] ⌈如果硬件仅允许寄存器的单一使用,则实现该功能的驱动模块负责初始化寄存器。⌋ (SRS_SPAL_12461)
-
[SWS_Port_00214] ⌈如果寄存器可以影响多个硬件模块,并且如果它是 I/O 寄存器,则应由本 PORT 驱动初始化。⌋ (SRS_SPAL_12461)
-
[SWS_Port_00215] ⌈如果寄存器可以影响多个硬件模块,并且如果它不是 I/O 寄存器,则应由 MCU 驱动初始化。⌋ (SRS_SPAL_12461)
-
[SWS_Port_00217] ⌈需要在复位后直接初始化的一次性可写寄存器应由启动代码初始化。⌋ (SRS_SPAL_12461)
-
[SWS_Port_00218] ⌈前面未提及的所有其他寄存器应由启动代码初始化。⌋ (SRS_SPAL_12461)
[SWS_Port_00043] ⌈函数 Port_Init 应避免受影响端口引脚上的毛刺和尖峰。⌋ (SRS_SPAL_12057)
[SWS_Port_00071] ⌈PORT 驱动模块的环境应在复位后调用函数 Port_Init 以重新配置 MCU 的端口和端口引脚。⌋()
[SWS_Port_00002] ⌈函数 Port_Init 应将 PORT 驱动模块使用的所有变量初始化为初始状态。⌋ (SRS_BSW_00101)
[SWS_Port_00003] ⌈PORT 驱动模块的环境也可以使用函数 Port_Init 来初始化驱动软件,并根据传递给此函数的配置集将端口和端口引脚重新初始化为另一个已配置状态。⌋ (SRS_SPAL_12163)
注:在某些情况下,MCU 端口控制硬件提供用于设置端口引脚输出电平的输出锁存器,该锁存器可用作 DIO 端口引脚。
[SWS_Port_00055] ⌈函数 Port_Init 应在将端口引脚方向设置为输出之前,将端口引脚输出锁存器设置为默认电平(在配置期间定义)。⌋ ( )
需求 SWS_Port_00055 确保当端口引脚设置为输出端口引脚时,默认电平立即输出到端口引脚上。
示例:在某些 MCU 上,上电复位后,可配置 DIO 的端口引脚将被配置为输入引脚。如果端口引脚的所需配置是输出引脚,则函数 Port_Init 应确保在将端口引脚的功能从输入切换到输出之前设置默认电平。
[SWS_Port_00121] ⌈函数 Port_Init 应始终有一个指针作为参数,即使对于配置变体 VARIANT-PRE-COMPILE,也不应给出配置集。在这种情况下,PORT 驱动模块的环境应将 NULL 指针传递给函数 Port_Init。⌋ (SRS_BSW_00414)
PORT 驱动模块的环境在运行操作期间不应调用函数 Port_Init。这仅在 PORT 模块有多个调用者时才适用。
Port_Init 的配置:所有端口引脚及其功能以及替代功能应由配置工具配置。
8.3.2 Port_SetPinDirection
[SWS_Port_00141] ⌈
| 项目 | 内容 |
|---|---|
| Service name(服务名称) | Port_SetPinDirection |
| Syntax(语法) | void Port_SetPinDirection(Port_PinType Pin, Port_PinDirectionType Direction) |
| Service ID[hex](服务 ID) | 0x01 |
| Sync/Async(同步/异步) | Synchronous(同步) |
| Reentrancy(可重入性) | Reentrant(可重入) |
| Parameters (in)(输入参数) | Pin — Port 引脚 ID 编号;Direction — Port 引脚方向 |
| Parameters (inout)(输入输出参数) | None(无) |
| Parameters (out)(输出参数) | None(无) |
| Return value(返回值) | None(无) |
| Description(描述) | 设置端口引脚方向。 |
| Available via(可用位置) | Port.h |
⌋ ()
[SWS_Port_00063] ⌈函数 Port_SetPinDirection 应在运行时设置端口引脚方向。⌋ (SRS_Port_12405)
[SWS_Port_00054] ⌈如果访问与端口无关的不同引脚,函数 Port_SetPinDirection 应可重入。⌋ ( )
[SWS_Port_00086] ⌈仅当预编译参数 PortSetPinDirectionApi 设置为 TRUE 时,函数 Port_SetPinDirection 才应对用户可用。如果设置为 FALSE,则函数 Port_SetPinDirection 不可用。(另请参见 8.3.2 节)⌋ (SRS_Port_12405)
Port_SetPinDirection 的配置:所有端口和端口引脚应由配置工具配置。参见 PORT117。
8.3.3 Port_RefreshPortDirection
[SWS_Port_00142] ⌈
| 项目 | 内容 |
|---|---|
| Service name(服务名称) | Port_RefreshPortDirection |
| Syntax(语法) | void Port_RefreshPortDirection(void) |
| Service ID[hex](服务 ID) | 0x02 |
| Sync/Async(同步/异步) | Synchronous(同步) |
| Reentrancy(可重入性) | Non Reentrant(不可重入) |
| Parameters (in)(输入参数) | None(无) |
| Parameters (inout)(输入输出参数) | None(无) |
| Parameters (out)(输出参数) | None(无) |
| Return value(返回值) | None(无) |
| Description(描述) | 刷新端口方向。 |
| Available via(可用位置) | Port.h |
⌋ ()
[SWS_Port_00060] ⌈函数 Port_RefreshPortDirection 应将所有已配置端口的方向刷新为已配置方向(PortPinDirection)。⌋ (SRS_Port_12406)
[SWS_Port_00061] ⌈函数 Port_RefreshPortDirection 应从刷新中排除那些配置为"运行时引脚方向可更改"的端口引脚。⌋ (SRS_Port_12406)
配置工具应为每个已配置的端口引脚提供名称。
8.3.4 Port_GetVersionInfo
[SWS_Port_00143] ⌈
| 项目 | 内容 |
|---|---|
| Service name(服务名称) | Port_GetVersionInfo |
| Syntax(语法) | void Port_GetVersionInfo(Std_VersionInfoType* versioninfo) |
| Service ID[hex](服务 ID) | 0x03 |
| Sync/Async(同步/异步) | Synchronous(同步) |
| Reentrancy(可重入性) | Reentrant(可重入) |
| Parameters (in)(输入参数) | None(无) |
| Parameters (inout)(输入输出参数) | None(无) |
| Parameters (out)(输出参数) | versioninfo — 用于存储此模块版本信息的指针 |
| Return value(返回值) | None(无) |
| Description(描述) | 返回此模块的版本信息。 |
| Available via(可用位置) | Port.h |
⌋ ()
[SWS_Port_00225] ⌈如果启用了 Det,则应检查参数 versioninfo 是否为 NULL。如果该值为 NULL 指针,则应报告错误 PORT_E_PARAM_POINTER。⌋ ( )
8.3.5 Port_SetPinMode
[SWS_Port_00145] ⌈
| 项目 | 内容 |
|---|---|
| Service name(服务名称) | Port_SetPinMode |
| Syntax(语法) | void Port_SetPinMode(Port_PinType Pin, Port_PinModeType Mode) |
| Service ID[hex](服务 ID) | 0x04 |
| Sync/Async(同步/异步) | Synchronous(同步) |
| Reentrancy(可重入性) | Reentrant(可重入) |
| Parameters (in)(输入参数) | Pin — Port 引脚 ID 编号;Mode — 要在端口引脚上设置的新 Port 引脚模式 |
| Parameters (inout)(输入输出参数) | None(无) |
| Parameters (out)(输出参数) | None(无) |
| Return value(返回值) | None(无) |
| Description(描述) | 设置端口引脚模式。 |
| Available via(可用位置) | Port.h |
⌋ ()
[SWS_Port_00125] ⌈函数 Port_SetPinMode 应在运行时设置所引用引脚的端口引脚模式。⌋ ( )
[SWS_Port_00128] ⌈如果访问与端口无关的不同引脚,函数 Port_SetPinMode 应可重入。⌋ ( )
[SWS_Port_00223] ⌈如果启用了 Det,则函数 Port_SetPinMode 应在参数 PortPinModeChangeable 设置为 FALSE 时报告 PORT_E_MODE_UNCHANGEABLE 错误并在不执行任何其他操作的情况下返回。⌋ ( )
Port_SetPinMode 的配置:所有端口和端口引脚应由配置工具配置。参见 PORT117。
8.4 回调通知
PORT 驱动没有回调通知。回调通知在另一个模块(ICU 驱动和/或复杂驱动)中实现。
8.5 调度函数
PORT 驱动中没有调度函数。
8.6 预期接口
本章列出了从其他模块所需的所有接口。
8.6.1 强制接口
无。
8.6.2 可选接口
本章定义了满足模块可选功能所需的所有接口。
[SWS_Port_00146] ⌈
| API 函数 | 头文件 | 描述 |
|---|---|---|
| Det_ReportError | Det.h | 用于报告开发错误的服务。 |
⌋ ()
8.6.3 可配置接口
无。
9 时序图
9.1 端口的整体配置
User «module»
Port
Port_Init(const
Port_ConfigType*)
Port_Init()
All ports are
initialized
9.2 设置 Port 引脚的方向
User «module»
Port
Port_SetPinDirection(Port_PinType,
Port_PinDirectionType)
Port_SetPinDirection()
The port pin
direction is set
9.3 刷新所有 Port 引脚的方向
User «module»
Port
Port_RefreshPortDirection()
Port_RefreshPortDirection()
The Port pin
direction is
refreshed.
9.4 更改 Port 引脚的模式
sd Port_SetPinMode()
Generic Port::Port
Elements::User
Port_SetPinMode(Pin,Mode)
Port_SetPinMode
The port pin mode
is set
Description:
Set the mode of a port pin
Comments:
10 配置规范
一般来说,本章定义配置参数及其到容器的聚类。为了支持规范,第 10.1 章描述了基础知识。它还指定了您应用于参数规范的模板(表)。我们打算将第 10.1 章留在规范中以保证理解。
第 10.2 章指定了模块 PORT 的结构(容器)和参数。
第 10.3 章指定了模块 PORT 的发布信息。
10.1 如何阅读本章
有关详细信息,请参阅 SWS_BSWGeneral 中的章节 10.1"配置规范介绍"。
10.2 容器和配置参数
以下章节总结了所有配置参数。参数的详细含义在第 7 章和第 8 章中描述。
[SWS_Port_00232] DRAFT ⌈PORT 模块应拒绝实现不支持的分区映射的配置。⌋ ()
10.2.1 Port
| SWS Item(项目) | ECUC_Port_00135 |
|---|---|
| Module Name(模块名称) | Port |
| Module Description(模块描述) | Port 模块的配置。 |
| Post-Build Variant Support(后构建变体支持) | true |
| Supported Config Variants(支持的配置变体) | VARIANT-POST-BUILD, VARIANT-PRE-COMPILE |
包含的容器(Included Containers)
| 容器名称 | 多个性 | 范围 / 依赖 |
|---|---|---|
| PortConfigSet | 1 | 此容器包含 AUTOSAR Port 模块的配置参数和子容器。 |
| PortGeneral | 1 | PORT 驱动模块范围的配置参数。 |
10.2.2 PortContainer
| SWS Item(项目) | ECUC_Port_00122 |
|---|---|
| Container Name(容器名称) | PortContainer |
| Description(描述) | 收集 PortPins 的容器。 |
配置参数
| SWS Item(项目) | ECUC_Port_00124 |
|---|---|
| Name(名称) | PortNumberOfPortPins |
| Parent Container(父容器) | PortContainer |
| Description(描述) | 此 PortContainer 中指定的 PortPins 数量。 |
| Multiplicity(多个性) | 1 |
| Type(类型) | EcucIntegerParamDef |
| Range(范围) | 1 .. 65535 |
| Default value(默认值) | -- |
| Post-Build Variant Value(后构建变体值) | false |
| Value Configuration Class(值配置类) | Pre-compile time — X All Variants;Link time — --;Post-build time — -- |
| Scope / Dependency(范围/依赖) | scope: local |
包含的容器(Included Containers)
| 容器名称 | 多个性 | 范围 / 依赖 |
|---|---|---|
| PortPin | 1..* | 单个端口引脚的配置。 |
10.2.3 PortGeneral
| SWS Item(项目) | ECUC_Port_00117 |
|---|---|
| Container Name(容器名称) | PortGeneral |
| Description(描述) | PORT 驱动模块范围的配置参数。 |
配置参数
| SWS Item(项目) | ECUC_Port_00123 |
|---|---|
| Name(名称) | PortDevErrorDetect |
| Parent Container(父容器) | PortGeneral |
| Description(描述) | 打开或关闭开发错误检测和通知。true:启用检测和通知;false:禁用检测和通知。 |
| Multiplicity(多个性) | 1 |
| Type(类型) | EcucBooleanParamDef |
| Default value(默认值) | false |
| Post-Build Variant Value(后构建变体值) | false |
| Value Configuration Class(值配置类) | Pre-compile time — X All Variants;Link time — --;Post-build time — -- |
| Scope / Dependency(范围/依赖) | scope: local |
| SWS Item(项目) | ECUC_Port_00131 |
|---|---|
| Name(名称) | PortSetPinDirectionApi |
| Parent Container(父容器) | PortGeneral |
| Description(描述) | 启用/禁用函数 Port_SetPinDirection() 使用的预处理器开关。TRUE:启用 — 函数 Port_SetPinDirection() 可用;FALSE:禁用 — 函数 Port_SetPinDirection() 不可用。 |
| Multiplicity(多个性) | 1 |
| Type(类型) | EcucBooleanParamDef |
| Default value(默认值) | -- |
| Post-Build Variant Value(后构建变体值) | false |
| Value Configuration Class(值配置类) | Pre-compile time — X All Variants;Link time — --;Post-build time — -- |
| Scope / Dependency(范围/依赖) | scope: local |
| SWS Item(项目) | ECUC_Port_00132 |
|---|---|
| Name(名称) | PortSetPinModeApi |
| Parent Container(父容器) | PortGeneral |
| Description(描述) | 启用/禁用函数 Port_SetPinMode() 使用的预处理器开关。true:启用 — 函数 Port_SetPinMode() 可用;false:禁用 — 函数 Port_SetPinMode() 不可用。 |
| Multiplicity(多个性) | 1 |
| Type(类型) | EcucBooleanParamDef |
| Default value(默认值) | -- |
| Post-Build Variant Value(后构建变体值) | false |
| Value Configuration Class(值配置类) | Pre-compile time — X All Variants;Link time — --;Post-build time — -- |
| Scope / Dependency(范围/依赖) | scope: local |
| SWS Item(项目) | ECUC_Port_00133 |
|---|---|
| Name(名称) | PortVersionInfoApi |
| Parent Container(父容器) | PortGeneral |
| Description(描述) | 启用/禁用用于读取模块版本信息的 API 的预处理器开关。true:启用版本信息 API;false:禁用版本信息 API。 |
| Multiplicity(多个性) | 1 |
| Type(类型) | EcucBooleanParamDef |
| Default value(默认值) | false |
| Post-Build Variant Value(后构建变体值) | false |
| Value Configuration Class(值配置类) | Pre-compile time — X All Variants;Link time — --;Post-build time — -- |
| Scope / Dependency(范围/依赖) | scope: local |
| SWS Item(项目) | ECUC_Port_00136 |
|---|---|
| Name(名称) | PortEcucPartitionRef |
| Parent Container(父容器) | PortGeneral |
| Description(描述) | 将 Port 驱动映射到零个或多个 ECUC 分区,以使模块的 API 在该分区中可用。Tags: atp.Status=draft |
| Multiplicity(多个性) | 0..* |
| Type(类型) | Reference to [ EcucPartition ] |
| Post-Build Variant Multiplicity(后构建变体多个性) | true |
| Post-Build Variant Value(后构建变体值) | true |
| Multiplicity Configuration Class(多个性配置类) | Pre-compile time — X All Variants;Link time — --;Post-build time — -- |
| Value Configuration Class(值配置类) | Pre-compile time — X All Variants;Link time — --;Post-build time — -- |
| Scope / Dependency(范围/依赖) | scope: ECU |
无包含容器。
顶级 Port 驱动容器包含适用于 PORT 配置的参数。
10.2.4 PortPin
| SWS Item(项目) | ECUC_Port_00118 |
|---|---|
| Container Name(容器名称) | PortPin |
| Description(描述) | 单个端口引脚的配置。 |
配置参数
| SWS Item(项目) | ECUC_Port_00125 |
|---|---|
| Name(名称) | PortPinDirection |
| Parent Container(父容器) | PortPin |
| Description(描述) | 引脚的初始方向(IN 或 OUT)。如果方向不可更改,则此处配置的值是固定的。方向必须与引脚模式匹配。例如,用于 ADC 的引脚必须配置为输入端口。实现类型:Port_PinDirectionType |
| Multiplicity(多个性) | 1 |
| Type(类型) | EcucEnumerationParamDef |
| Range(范围) | PORT_PIN_IN — Port 引脚方向设置为输入;PORT_PIN_OUT — Port 引脚方向设置为输出 |
| Post-Build Variant Value(后构建变体值) | true |
| Value Configuration Class(值配置类) | Pre-compile time — X VARIANT-PRE-COMPILE;Link time — --;Post-build time — X VARIANT-POST-BUILD |
| Scope / Dependency(范围/依赖) | scope: local |
| SWS Item(项目) | ECUC_Port_00126 |
|---|---|
| Name(名称) | PortPinDirectionChangeable |
| Parent Container(父容器) | PortPin |
| Description(描述) | 指示端口引脚在运行时的方向是否可更改的参数。true:启用 Port 引脚方向可更改;false:禁用 Port 引脚方向可更改。 |
| Multiplicity(多个性) | 1 |
| Type(类型) | EcucBooleanParamDef |
| Default value(默认值) | -- |
| Post-Build Variant Value(后构建变体值) | true |
| Value Configuration Class(值配置类) | Pre-compile time — X VARIANT-PRE-COMPILE;Link time — --;Post-build time — X VARIANT-POST-BUILD |
| Scope / Dependency(范围/依赖) | scope: local |
| SWS Item(项目) | ECUC_Port_00127 |
|---|---|
| Name(名称) | PortPinId |
| Parent Container(父容器) | PortPin |
| Description(描述) | 端口引脚的 Pin Id。此值将分配给从端口引脚容器短名称派生的符号名称。 |
| Multiplicity(多个性) | 1 |
| Type(类型) | EcucIntegerParamDef (Symbolic Name generated for this parameter)(为此参数生成的符号名称) |
| Range(范围) | 1 .. 65535 |
| Default value(默认值) | -- |
| Post-Build Variant Value(后构建变体值) | false |
| Value Configuration Class(值配置类) | Pre-compile time — X All Variants;Link time — --;Post-build time — -- |
| Scope / Dependency(范围/依赖) | scope: local |
| SWS Item(项目) | ECUC_Port_00128 |
|---|---|
| Name(名称) | PortPinInitialMode |
| Parent Container(父容器) | PortPin |
| Description(描述) | 用于 Port_Init() 函数的模式列表中的端口引脚模式。 |
| Multiplicity(多个性) | 1 |
| Type(类型) | EcucEnumerationParamDef |
| Range(范围) | PORT_PIN_MODE_ADC — ADC 使用的端口引脚;PORT_PIN_MODE_CAN — CAN 使用的端口引脚;PORT_PIN_MODE_DIO — 配置为 DIO 的端口引脚,应在 DIO 驱动控制下使用;PORT_PIN_MODE_DIO_GPT — 配置为 DIO 的端口引脚,应在通用定时器驱动控制下使用;PORT_PIN_MODE_DIO_WDG — 配置为 DIO 的端口引脚,应在看门狗驱动控制下使用;PORT_PIN_MODE_FLEXRAY — FlexRay 使用的端口引脚;PORT_PIN_MODE_ICU — ICU 使用的端口引脚;PORT_PIN_MODE_LIN — LIN 使用的端口引脚;PORT_PIN_MODE_MEM — 在内存驱动控制下用于外部内存的端口引脚;PORT_PIN_MODE_PWM — PWM 使用的端口引脚;PORT_PIN_MODE_SPI — SPI 使用的端口引脚 |
| Post-Build Variant Value(后构建变体值) | true |
| Value Configuration Class(值配置类) | Pre-compile time — X VARIANT-PRE-COMPILE;Link time — --;Post-build time — X VARIANT-POST-BUILD |
| Scope / Dependency(范围/依赖) | scope: local |
| SWS Item(项目) | ECUC_Port_00129 |
|---|---|
| Name(名称) | PortPinLevelValue |
| Parent Container(父容器) | PortPin |
| Description(描述) | 来自端口引脚列表的端口引脚电平值。 |
| Multiplicity(多个性) | 1 |
| Type(类型) | EcucEnumerationParamDef |
| Range(范围) | PORT_PIN_LEVEL_HIGH — 端口引脚电平为高;PORT_PIN_LEVEL_LOW — 端口引脚电平为低 |
| Post-Build Variant Value(后构建变体值) | true |
| Value Configuration Class(值配置类) | Pre-compile time — X VARIANT-PRE-COMPILE;Link time — --;Post-build time — X VARIANT-POST-BUILD |
| Scope / Dependency(范围/依赖) | scope: local |
| SWS Item(项目) | ECUC_Port_00130 |
|---|---|
| Name(名称) | PortPinMode |
| Parent Container(父容器) | PortPin |
| Description(描述) | 来自模式列表的端口引脚模式。注:默认情况下允许多个模式。通过这种方式可以将 DIO 与另一种模式(如 ICU)组合。 |
| Multiplicity(多个性) | 1..* |
| Type(类型) | EcucEnumerationParamDef |
| Range(范围) | PORT_PIN_MODE_ADC — ADC 使用的端口引脚;PORT_PIN_MODE_CAN — CAN 使用的端口引脚;PORT_PIN_MODE_DIO — 配置为 DIO 的端口引脚,应在 DIO 驱动控制下使用;PORT_PIN_MODE_DIO_GPT — 配置为 DIO 的端口引脚,应在通用定时器驱动控制下使用;PORT_PIN_MODE_DIO_WDG — 配置为 DIO 的端口引脚,应在看门狗驱动控制下使用;PORT_PIN_MODE_FLEXRAY — FlexRay 使用的端口引脚;PORT_PIN_MODE_ICU — ICU 使用的端口引脚;PORT_PIN_MODE_LIN — LIN 使用的端口引脚;PORT_PIN_MODE_MEM — 在内存驱动控制下用于外部内存的端口引脚;PORT_PIN_MODE_PWM — PWM 使用的端口引脚;PORT_PIN_MODE_SPI — SPI 使用的端口引脚 |
| Post-Build Variant Multiplicity(后构建变体多个性) | true |
| Post-Build Variant Value(后构建变体值) | true |
| Multiplicity Configuration Class(多个性配置类) | Pre-compile time — X VARIANT-PRE-COMPILE;Link time — --;Post-build time — X VARIANT-POST-BUILD |
| Value Configuration Class(值配置类) | Pre-compile time — X VARIANT-PRE-COMPILE;Link time — --;Post-build time — X VARIANT-POST-BUILD |
| Scope / Dependency(范围/依赖) | scope: local |
| SWS Item(项目) | ECUC_Port_00134 |
|---|---|
| Name(名称) | PortPinModeChangeable |
| Parent Container(父容器) | PortPin |
| Description(描述) | 指示端口引脚在运行时的模式是否可更改的参数。True:允许 Port 引脚模式可更改;False:不允许 Port 引脚模式可更改。 |
| Multiplicity(多个性) | 1 |
| Type(类型) | EcucBooleanParamDef |
| Default value(默认值) | -- |
| Post-Build Variant Value(后构建变体值) | true |
| Value Configuration Class(值配置类) | Pre-compile time — X VARIANT-PRE-COMPILE;Link time — --;Post-build time — X VARIANT-POST-BUILD |
| Scope / Dependency(范围/依赖) | scope: local |
| SWS Item(项目) | ECUC_Port_00137 |
|---|---|
| Name(名称) | PortPinEcucPartitionRef |
| Parent Container(父容器) | PortPin |
| Description(描述) | 将 Port 引脚映射到零个或多个 ECUC 分区。引用的 ECUC 分区是 Port 驱动所映射到的 ECUC 分区的子集。Tags: atp.Status=draft |
| Multiplicity(多个性) | 0..* |
| Type(类型) | Reference to [ EcucPartition ] |
| Post-Build Variant Multiplicity(后构建变体多个性) | true |
| Post-Build Variant Value(后构建变体值) | true |
| Multiplicity Configuration Class(多个性配置类) | Pre-compile time — X All Variants;Link time — --;Post-build time — -- |
| Value Configuration Class(值配置类) | Pre-compile time — X All Variants;Link time — --;Post-build time — -- |
| Scope / Dependency(范围/依赖) | scope: ECU |
无包含容器。
10.2.5 PortConfigSet
| SWS Item(项目) | ECUC_Port_00121 |
|---|---|
| Container Name(容器名称) | PortConfigSet |
| Description(描述) | 此容器包含 AUTOSAR Port 模块的配置参数和子容器。 |
包含的容器(Included Containers)
| 容器名称 | 多个性 | 范围 / 依赖 |
|---|---|---|
| PortContainer | 1..* | 收集 PortPins 的容器。 |
10.3 约束
[SWS_Port_CONSTR_00233] DRAFT ⌈由 PortPinEcucPartitionRef 引用的 ECUC 分区应为 PortEcucPartitionRef 引用的 ECUC 分区的子集。⌋ ()
10.4 发布信息
有关详细信息,请参阅 SWS_BSWGeneral 中的章节 10.3"Published Information"。
11 不适用的需求
[SWS_Port_00227] ⌈这些需求不适用于本规范。⌋ (SRS_BSW_00005, SRS_BSW_00006, SRS_BSW_00007, SRS_BSW_00010, SRS_BSW_00160, SRS_BSW_00161, SRS_BSW_00162, SRS_BSW_00164, SRS_BSW_00167, SRS_BSW_00168, SRS_BSW_00170, SRS_BSW_00172, SRS_BSW_00307, SRS_BSW_00308, SRS_BSW_00309, SRS_BSW_00321, SRS_BSW_00325, SRS_BSW_00328, SRS_BSW_00330, SRS_BSW_00331, SRS_BSW_00333, SRS_BSW_00334, SRS_BSW_00335, SRS_BSW_00336, SRS_BSW_00341, SRS_BSW_00342, SRS_BSW_00343, SRS_BSW_00344, SRS_BSW_00347, SRS_BSW_00357, SRS_BSW_00359, SRS_BSW_00360, SRS_SPAL_12463, SRS_SPAL_12462, SRS_SPAL_12265, SRS_SPAL_12092, SRS_SPAL_12078, SRS_SPAL_12077, SRS_SPAL_12067, SRS_SPAL_12064, SRS_SPAL_12129, SRS_SPAL_12075, SRS_SPAL_12063, SRS_SPAL_12169, SRS_SPAL_00157, SRS_SPAL_12069, SRS_SPAL_12068, SRS_SPAL_12267, SRS_SPAL_12056, SRS_BSW_00440, SRS_BSW_00439, SRS_BSW_00437, SRS_BSW_00433, SRS_BSW_00432, SRS_BSW_00429, SRS_BSW_00428, SRS_BSW_00427, SRS_BSW_00426, SRS_BSW_00425, SRS_BSW_00424, SRS_BSW_00423, SRS_BSW_00419, SRS_BSW_00417, SRS_BSW_00416, SRS_BSW_00413, SRS_BSW_00398, SRS_BSW_00395, SRS_BSW_00378, SRS_BSW_00377, SRS_BSW_00375, SRS_BSW_00373, SRS_BSW_00371)
翻译说明
- 文档版本:本文档翻译自 AUTOSAR Classic Platform Release 4.4.0 的 SWS_PortDriver。
- API 标识符:所有 Port API(Port_Init、Port_SetPinDirection、Port_RefreshPortDirection、Port_GetVersionInfo、Port_SetPinMode)和类型(Port_PinType、Port_PinDirectionType、Port_PinModeType、Port_ConfigType)保持英文。
- 需求 ID:所有 SWS_Port_xxxxx 和 SRS_Port_xxxxx、SRS_BSW_xxxxx、SRS_SPAL_xxxxx 需求 ID 均保持原样。
- AUTOSAR 方框符:所有 ⌈⌋ 符号已保留。
- 配置项名称:ECUC_Port_xxxxx 配置项名称保持英文。
- 完整参考表:第 6 章"需求可追溯性"的完整表(约 80 项需求映射)请参见原文 PDF。