34 KiB
I/O 硬件抽象规范(Specification of I/O Hardware Abstraction)
AUTOSAR CP Release 4.4.0
文档元信息
| 字段 | 内容 |
|---|---|
| 文档标题 | I/O 硬件抽象规范(Specification of I/O Hardware Abstraction) |
| 文档所有者 | AUTOSAR |
| 文档责任方 | AUTOSAR |
| 文档标识号 | 047 |
| 文档状态 | Final(最终版) |
| 所属 AUTOSAR 标准 | Classic Platform(经典平台) |
| 所属标准版本 | 4.4.0 |
文档变更历史(Document Change History)
| 日期 | 版本 | 变更人 | 变更描述 |
|---|---|---|---|
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | 移除了调试章节 |
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | 细微修正/澄清/编辑性变更 |
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | 更新 IoHwAb_Init 函数原型 |
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | 编辑性变更 |
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | 调整需求格式 |
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | 编辑性变更;移除了关于变更文档的章节 |
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | 修改 GET 和 SET 操作;扩展了由"生产错误"工作组推荐的生产错误;为 OCU 驱动定义通知函数 |
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | 更新版本检查需求 |
| 2010-09-30 | 3.1.5 | AUTOSAR Administration | 修正了回调通知 API 的名称;使用底层模块的导出文件 <ModuleName>.h,而不是 <ModuleName>_Types.h |
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | 从 EcucParamDef 中删除了 I/O 硬件抽象配置;新增"功能诊断"接口(DCM 控制 I/O 信号);删除了不必要的类、属性和类型;法律声明修订 |
| 2008-08-13 | 3.1.1 | AUTOSAR Administration | 法律声明修订 |
| 2007-12-21 | 3.0.1 | AUTOSAR Administration | 使用 Metamodel 自动生成第 8 章和第 10 章;更新表和某些章节以保持与相关文档一致;扩展了文档元信息;小幅布局调整 |
| 2007-01-24 | 2.1.15 | AUTOSAR Administration | 在 PDF 版本中更正了各种图像(打印问题) |
| 2006-11-28 | 2.1.14 | AUTOSAR Administration | 文件结构更新;可追溯性矩阵更正;对 SWC 模板使用的限制;IOHWAB Runnable 概念章节返工;IOHWAB 描述章节返工;配置章节调整;法律声明修订;新增发布说明;"用户建议"修订;新增"修订信息" |
| 2006-05-16 | 2.0 | AUTOSAR Administration | 初始发布 |
目录(Table of Contents)
- 引言与功能概述(Introduction and functional overview)
- 缩略语与缩写(Acronyms and abbreviations)
- 相关文档(Related documentation)
- 约束与假设(Constraints and assumptions)
- 对其他模块的依赖(Dependencies to other modules)
- 需求可追溯性(Requirements traceability)
- 功能规范(Functional specification)
- API 规范(API specification)
- 序列图(Sequence diagrams)
- 配置规范(Configuration specification)
- 不适用需求(Not applicable requirements)
1 引言与功能概述(Introduction and functional overview)
本规范规定了 AUTOSAR 基础软件 I/O 硬件抽象的功能和配置。I/O 硬件抽象是 ECU 抽象层的一部分。
I/O 硬件抽象不应被视为单个模块,因为它可以实现为多个模块。本 I/O 硬件抽象规范不旨在标准化此模块或模块组。相反,它是关于实现其与其他模块的功能接口的指南。
I/O 硬件抽象的目标是通过将 I/O 硬件抽象端口映射到 ECU 信号来提供对 MCAL 驱动的访问。提供给软件组件的数据完全从物理层值抽象出来。因此,软件组件设计者不再需要详细了解 MCAL 驱动的 API 和物理层值的单位。
I/O 硬件抽象始终是 ECU 特定的实现,因为软件组件对基础软件的要求必须适合特定 MCAL 实现的特性。
I/O 硬件抽象应提供初始化整个 I/O 硬件抽象的服务。
本文档的目的是:
- 确定在定义 I/O 硬件抽象时应使用软件组件模板的哪个部分
- 解释定义通用端口(ECU 信号映射到的位置)的方法
本文档的目的不是:
- 提供 C-API
- 为每个 ECU 信号提供特定的格式化,就像通过功能数据的标准化所做的那样(车身域、动力总成、底盘域)
2 缩略语与缩写(Acronyms and abbreviations)
摘要说明: 本节定义了 I/O 硬件抽象相关的所有缩略语和术语。主要缩写包括 ADC、DIO、ICU、PWM、OCU、GPT、SPI、PORT、ECU、EcuM、RTE、DCM 等(详见原文 PDF 第 8-10 页)。
3 相关文档(Related documentation)
3.1 输入文档(Input documents)
摘要说明: 本节列出了 I/O 硬件抽象规范相关的输入文档,包括:
- [1] 分层软件架构,AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
- [2] I/O 硬件抽象需求,AUTOSAR_SRS_IOHWAbstraction.pdf
- [3] 基础软件模块的一般需求,AUTOSAR_SRS_BSWGeneral.pdf
- [4] 通用 BSW 模块规范,AUTOSAR_SWS_BSWGeneral.pdf
- [5] 默认错误跟踪器规范,AUTOSAR_SWS_DefaultErrorTracer.pdf
- [6] 基础软件模块描述模板,AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
- [7] ECU 配置规范,AUTOSAR_TPS_ECUConfiguration.pdf
- [8] 软件组件模板,AUTOSAR_TPS_SoftwareComponentTemplate.pdf
- [9] 元模型,AUTOSAR_MMOD_MetaModel.pdf
完整列表见原文 PDF(第 10-11 页)。
3.2 相关标准与规范(Related standards and norms)
无相关外部标准。
3.3 相关规范(Related specification)
AUTOSAR 提供了基础软件模块的通用规范([SWS BSW General]),这也适用于 I/O 硬件抽象。因此,SWS BSW General 规范应被视为 I/O 硬件抽象的附加和必需规范。
4 约束与假设(Constraints and assumptions)
4.1 限制(Limitations)
无限制。
4.2 对汽车领域的适用性(Applicability to car domains)
无限制。
5 对其他模块的依赖(Dependencies to other modules)
5.1 与 MCAL 驱动程序的接口(Interface with MCAL drivers)
5.1.1 概述(Overview)
I/O 硬件抽象通过 MCAL 驱动访问 MCU 的外设。MCAL 驱动实现一组标准化的 API,允许 ECU 抽象层和 I/O 硬件抽象访问 MCU 外设。
I/O 硬件抽象还可以通过 SPI/通信驱动程序访问 ECU 板载设备(外部 ASIC、传感器等)。在下层,I/O 硬件抽象使用 MCAL 驱动程序(DIO、PWM、ICU、ADC 等)通过标准 API 访问外设。
5.1.2 与 MCAL 驱动程序的接口总结(Summary of interfaces with MCAL drivers)
摘要说明: 下表总结了 I/O 硬件抽象与 MCAL 驱动程序之间的接口:
MCAL 驱动 用途 ADC 模拟输入读取、组转换、通知回调 DIO 数字输入/输出、端口读取/写入、通道组操作 GPT 通用定时器、通知回调 ICU 边沿检测、信号测量、通知回调 OCU 输出比较、阈值设置、通知回调 PWM PWM 信号生成、占空比设置、通知回调 PORT 引脚方向控制、引脚模式配置 SPI 通过 SPI 总线访问外部 ASIC
5.2 与通信驱动程序的接口(Interface with the communication drivers)
I/O 硬件抽象可能需要通过 SPI 或其他通信驱动程序访问 ECU 板载设备。在这种情况下,I/O 硬件抽象充当 SPI 客户端并处理异步通信结果。
5.3 与系统服务的接口(Interface with System Services)
I/O 硬件抽象通过 EcuM 调用其 Init 函数(IoHwAb_Init<Init_Id>)。IoHwAb 还需要 BswM(基础软件模式管理器)进行模式管理。
5.4 与 DCM 的接口(Interface with DCM)
I/O 硬件抽象向 DCM 模块提供接口,以实现"软件组件的功能诊断"。DCM 模块可以通过该接口控制和读取每个已实现的 ECU 信号。这由以下函数实现:
IoHwAb_Dcm_<EcuSignalName>- 控制 ECU 信号IoHwAb_Dcm_Read<EcuSignalName>- 读取 ECU 信号
控制信号的动作包括:
IOHWAB_RETURNCONTROLTOECU:解锁信号IOHWAB_RESETTODEFAULT:锁定信号并将其设置为已配置的默认值IOHWAB_FREEZECURRENTSTATE:锁定信号到当前值IOHWAB_SHORTTERMADJUSTMENT:锁定信号并将其调整为 DCM 模块给定的值
5.5 文件结构(File structure)
5.5.1 代码文件结构(Code file structure)
[SWS_IoHwAb_00099] ⌈代码文件结构不应在本规范中完全定义。应指出代码文件结构应包括用于后构建配置的 IoHwAb_PBcfg.c。⌋
5.5.2 头文件结构(Header file structure)
[SWS_IoHwAb_00100] ⌈IoHwAb.c 应包含 IoHwAb.h 和 Det.h。⌋
6 需求可追溯性(Requirements traceability)
摘要说明: 本节列出 I/O 硬件抽象需求与实现需求的对应关系。完整可追溯性表见原文 PDF(第 18-22 页)。
主要需求映射:
- SWS_IoHwAb_00002、00007-00011(信号属性、范围、分辨率、同步、生命周期、延迟、滤波、采样率、变化报告、脉冲测试)
- SWS_IoHwAb_00021-00023(诊断功能:短路、开路、过载、过温检测)
- SWS_IoHwAb_00059-00061(Init 函数)
- SWS_IoHwAb_00081-00097(SW-C 模板使用)
- SWS_IoHwAb_00102-00107(回调通知)
- SWS_IoHwAb_00108-00114(调度概念)
- SWS_IoHwAb_00119-00120(Init 和 GetVersionInfo API)
- SWS_IoHwAb_00121-00124、00155-00156(ADC、PWM、ICU、GPT、OCU 通知回调)
- SWS_IoHwAb_00135-00144(DCM 诊断接口)
- SWS_IoHwAb_00146-00147(电源状态准备与进入)
- SWS_IoHwAb_00154(ADC 电源状态通知)
- SWS_IoHwAb_00157-00158(配置类型)
7 功能规范(Functional specification)
7.1 集成代码(Integration code)
7.1.1 背景与原理(Background & Rationale)
集成代码是 I/O 硬件抽象层的一部分,用于将 MCAL 驱动程序调用与软件组件的接口(端口)粘合在一起。集成代码的主要作用是:
- 将 ECU 信号映射到底层 MCAL 通道
- 实现属性转换(范围、分辨率、生命周期、延迟、滤波、采样率)
- 处理同步、变化报告、脉冲测试等高级功能
- 提供诊断信息
- 实现电源状态管理
7.1.2 集成代码实现的需求(Requirements for integration code implementation)
摘要说明: 集成代码实现应遵循:
- ECU 信号应在配置时映射到 MCAL 通道
- 属性转换应在集成代码中实现,而不是 MCAL 驱动中
- 集成代码应负责信号缓冲、去抖、滤波等
- 集成代码应支持同步和异步数据采集
- 集成代码应将检测到的故障传递给 DEM
7.2 ECU 信号概念(ECU Signals Concept)
7.2.1 背景与原理(Background & Rationale)
ECU 信号是软件组件与 I/O 硬件抽象层交换数据的单位。每个 ECU 信号:
- 由符号名称标识
- 具有数据类型(电压、电流、电阻、布尔、占空比等)
- 具有范围(最小值、最大值)
- 具有分辨率(最小可表示步长)
- 可能具有同步、生命周期、延迟、滤波、采样率等属性
7.2.2 关于 ECU 信号的需求(Requirements about ECU signals)
摘要说明: ECU 信号应满足以下需求:
- ECU 信号应具有唯一的符号名称
- 数据类型应使用 AUTOSAR 标准类型
- 范围应在配置时定义
- ECU 信号应对应一个或多个底层 MCAL 通道
- ECU 信号应在集成代码中实现从物理值到工程单位的转换
7.3 属性(Attributes)
7.3.1 背景与原理(Background & Rationale)
属性定义了 ECU 信号的特征。不同的信号类型(模拟输入、模拟输出、离散输入、离散输出、周期输入、占空比输入/输出)适用不同的属性集。
7.3.2 关于 ECU 信号属性的需求(Requirements about ECU signal attributes)
摘要说明: ECU 信号属性应满足以下需求:
- DataType、Range、Resolution、HW Resolution、HW Accuracy、Synchronization、Access、Inversion、Lifetime/Delay、Filtering/Debouncing、Sampling Rate、Report Changes、Pulse Test、Diagnosis 等属性应在配置时定义
- 属性转换应在集成代码中实现
- 属性的存在性应取决于信号类型
7.4 I/O 硬件抽象和软件组件模板(I/O Hardware Abstraction and Software Component Template)
7.4.1 背景与原理(Background & Rationale)
I/O 硬件抽象层应使用 AUTOSAR 软件组件模板定义其接口。每个 I/O 硬件抽象模块对应一个 SW-C 模板组件。
7.4.2 关于使用软件组件模板的需求(Requirements about the usage of Software Component template)
摘要说明: 主要需求:
- 每个 I/O 硬件抽象模块应定义为 SW-C 模板的"应用"类型组件
- 接口应为 Sender-Receiver 或 Client-Server
- 应使用 PortGroup 来组织相关端口
- 模式声明和模式切换接口应用于电源状态管理
7.5 I/O 硬件抽象的调度概念(Scheduling concept for I/O Hardware Abstraction)
7.5.1 背景与原理(Background & Rationale)
I/O 硬件抽象层可能需要调度函数来处理周期性任务(如 ADC 读取、信号去抖、滤波等)。调度函数由 BSW Scheduler 直接调用。
7.5.2 关于 I/O 硬件抽象调度概念的需求(Requirements about I/O Hardware Abstraction Scheduling concept)
摘要说明: 调度函数应满足以下需求:
- 调度函数没有返回值和参数
- 所有调度函数应为 Non-Reentrant
- 调度函数的调用周期应在配置时定义
- 调度函数可以处理 ECU 信号读取、属性转换、状态机等
7.6 错误分类(Error Classification)
7.6.1 开发错误(Development Errors)
[SWS_IoHwAb_00170] ⌈开发错误类型:IOHWAB_E_UNINIT(在 API 在 I/O 硬件抽象未初始化时调用时报告)。⌋
7.6.2 运行时错误(Runtime Errors)
无。
7.6.3 瞬态故障(Transient Faults)
无。
7.6.4 生产错误(Production Errors)
[SWS_IoHwAb_00171] ⌈生产错误类型:IOHWAB_E_HW_FAILURE、IOHWAB_E_SIGNAL_INVALID 等(详见原文 PDF)。⌋
7.6.5 扩展的生产错误(Extended Production Errors)
摘要说明: 扩展的生产错误由生产错误工作组推荐,详见原文 PDF。
7.7 其他需求(Other requirements)
无附加需求。
7.8 错误检测(Error Detection)
摘要说明: 错误检测通过配置开关控制。
7.9 错误通知(Error notification)
摘要说明: 检测到的开发错误通过 DET 报告,生产错误通过 DEM 报告。
7.10 I/O 硬件抽象层描述(I/O Hardware Abstraction layer description)
7.10.1 背景与原理(Background & Rationale)
I/O 硬件抽象层描述应包含每个模块的功能描述、接口定义、配置参数等。
7.10.2 需求(Requirements)
摘要说明: I/O 硬件抽象层描述应满足以下需求:
- 应为每个 I/O 硬件抽象模块提供 BSW 模块描述
- 应列出所有 ECU 信号及其属性
- 应列出所有端口和接口
- 应列出所有配置参数
7.11 示例(Examples)
7.11.1 示例 1:板载硬件用例(Use case of on-board hardware)
本示例源自电源 ECU:
- ECU 具有大量数字输入(DI)
- 一组是用于机械开关的"慢速 DI"
- 另一组是用于功率 IC 诊断的"快速 DI"
- MCU 引脚不够,慢速 DI 连接到 8 位多路复用器
- 最大"过流"到功率 IC 切换时间为 1 ms
- OEM 要求开关反应不超过 100 ms
- 每个 DI 必须通过 3/5 投票去抖
解决方案:
- 所有 DI(慢速和快速)每 0.8 ms 读取一次(循环任务)
- 慢速 DI 的去抖在每次循环中执行一次(最坏情况下去抖值的延迟为 3.2 ms)
- 如果检测到过流,引脚将在同一循环中再次读取几次,并立即关闭功率 IC
- 应用程序每 10 ms 运行一次,读取用于开关的去抖 DI 和诊断信息
AUTOSAR 架构分解:
| 层 | 多路复用 I/O | 功率 IC |
|---|---|---|
| Application | Runnable 每 10 ms 读取数据 | 如果功率 IC 检测到过流则获得通知 |
| RTE | 处理 runnables | |
| I/O Hardware Abstraction | 8 个信号映射到端口,端口特征定义和 Client/Server 接口,信号抽象提供去抖时间(优于去抖投票规则),循环任务通过 DIO 服务调用执行输入读取 | I/O 硬件抽象决定在检测到过流时关闭功率 IC(在外部 ASIC 的驱动中),循环任务通过 DIO 服务调用执行输入读取 |
| MCAL driver | DIO driver:地址线、1 条数据线 | DIO driver:来自功率 IC 的 1 条反馈线;PWM driver:1 条到功率 IC 的线 |
| ECU hardware | 多路复用器:8 个电气信号的映射 | 功率 IC:控制多路复用器的电源 |
7.11.2 示例 2:故障监控用例(Use case of failure monitoring)
在本例中,应在 I/O 硬件抽象层上定义具有诊断属性的诊断输出信号。因此,使用输入来执行输出的诊断。
当 I/O 硬件抽象请求定位一个输出(Dio_WriteChannel)时,通过配置为输入的 ECU 引脚读取通道。
ICU 驱动向 I/O 硬件抽象发送通知。保护策略位于集成代码中。
软件组件可以通过端口使用诊断操作获取诊断值。
7.11.3 示例 3:输出功率级(Output power stage)
ECU 硬件具有功率级 ASIC。因此,所有 ECU 引脚应作为"信号"在 I/O 硬件抽象层上可用(就在 RTE 之下)。
- 一些输出通过 SPI driver/handler 控制
- 一些输入直接通过 DIO driver 控制
- 一些电压、频率通过 PWM driver 设置
- 功率级驱动提供所有输出的视图。它调用 PWM、DIO drivers 和 SPI handler 的服务。信号抽象使所有这些输出从软件组件的角度"可见"(信号映射到端口)。"功率级驱动"可以配置。
诊断: 每个故障可以在功率级上检测到。诊断数据流通过 SPI 通信到功率级驱动,然后,诊断通过 S/R 接口提供给所有软件组件。
7.11.4 示例 4:在低功耗状态下设置传感器和控制外设(Setting sensor and controlling periphery in low power state)
ECU 通过其 ADC 和 DIO 外设控制传感器。在特定情况下,ECU 进入操作模式,其中传感器关闭,ADC 设置为低功耗状态。
动作序列如下:
- 应用程序电源模式管理器向 BswM 发出模式请求以切换到"LowPowerMode"。
- BswM 评估请求,如果所有先决条件都满足,则向电源模式管理器和传感器 SWC 发出模式切换。
- 传感器 SWC 停止读取感官数据(即不再向 IoHwAbs 请求任何 Get 操作)。
- IoHwAbs 从 ADC 注销其通知,并最终停止 HW 循环采集。
- IoHwAbs 将外部感官 HW 命令进入低功耗模式或关闭。
- IoHwAbs 调用其低功耗模式准备 Callouts,然后调用其低功耗模式设置 Callouts,如配置所定义,以获得与请求的应用程序低功耗模式"LowPowerMode"相关的 ADC(在这种情况下)电源状态。
可以通过引入更细粒度的模式请求并对确认和/或切换做出反应来逐步控制该过程。
8 API 规范(API specification)
8.1 导入类型(Imported types)
[SWS_IoHwAb_91000] ⌈
| 模块 | 头文件 | 导入类型 |
|---|---|---|
| Adc | Adc.h | Adc_GroupType, Adc_StatusType, Adc_StreamNumSampleType, Adc_ValueGroupType |
| Dio | Dio.h | Dio_ChannelGroupType, Dio_ChannelType, Dio_LevelType, Dio_PortLevelType, Dio_PortType |
| EcuM | EcuM.h | EcuM_WakeupSourceType |
| GENERIC TYPES | <EcuSignalDataType> |
|
| Gpt | Gpt.h | Gpt_ChannelType, Gpt_ModeType, Gpt_ValueType |
| Icu | Icu.h | Icu_ActivationType, Icu_ChannelType, Icu_DutyCycleType, Icu_EdgeNumberType, Icu_IndexType, Icu_InputStateType, Icu_ValueType |
| Ocu | Ocu.h | Ocu_ChannelType, Ocu_PinStateType, Ocu_ReturnType, Ocu_ValueType |
| Port | Port.h | Port_PinDirectionType, Port_PinModeType, Port_PinType |
| Pwm | Pwm.h | Pwm_ChannelType, Pwm_EdgeNotificationType, Pwm_OutputStateType, Pwm_PeriodType |
| Spi | Spi.h | Spi_AsyncModeType, Spi_ChannelType, Spi_DataBufferType, Spi_HWUnitType, Spi_JobResultType, Spi_JobType, Spi_NumberOfDataType, Spi_SeqResultType, Spi_SequenceType, Spi_StatusType |
| Std_Types | StandardTypes.h | Std_ReturnType, Std_VersionInfoType |
⌋
8.2 类型定义(Type definitions)
8.2.1 IoHwAb<Init_Id>_ConfigType
[SWS_IoHwAb_00157] ⌈
| 字段 | 内容 |
|---|---|
| Name | IoHwAb<Init_Id>_ConfigType |
| Type | Structure(实现特定) |
| Description | IoHwAb 模块的配置数据结构。 |
| Available via | IoHwAb.h |
⌋ (SRS_BSW_00414)
8.3 函数定义(Function definitions)
关于 I/O 硬件抽象的注释:
如前面章节所述,不会为 I/O 硬件抽象指定功能 API。I/O 硬件抽象的接口完全通过 AUTOSAR 端口定义(使用 SW-C 模板)。
8.3.1 IoHwAb_Init<Init_Id>
[SWS_IoHwAb_00119] ⌈
| 字段 | 内容 |
|---|---|
| Service name | IoHwAb_Init<Init_Id> |
| Syntax | void IoHwAb_Init<Init_Id>(const IoHwAb<Init_Id>_ConfigType* ConfigPtr) |
| Service ID[hex] | 0x01 |
| Sync/Async | Synchronous |
| Reentrancy | Non Reentrant |
| Parameters (in) | ConfigPtr - 指向所选配置集的指针 |
| Description | 初始化所有 I/O 硬件抽象软件或 I/O 硬件抽象的一部分。 |
| Available via | IoHwAb.h |
⌋ ()
[SWS_IoHwAb_00158] ⌈配置指针 ConfigPtr 应始终具有 NULL_PTR 值。⌋ (SRS_BSW_00414)
注释: 配置指针 ConfigPtr 当前未使用,因此应设置为 NULL_PTR 值。
[SWS_IoHwAb_00059] ⌈这种函数初始化所有 I/O 硬件抽象软件或 I/O 硬件抽象的一部分。⌋ (SRS_BSW_00101)
[SWS_IoHwAb_00060] ⌈I/O 硬件抽象软件管理的 I/O 设备的 multiplicity 应通过多个 init 函数处理。每个 init 函数应用 <Init_ID> 标记。因此,具有封装在 I/O 硬件抽象内的驱动程序的外部设备可以单独初始化。⌋ (SRS_BSW_00101)
[SWS_IoHwAb_00061] ⌈这种 init 函数应由 ECU 状态管理器调用。ECU 集成商能够配置 ECU 状态管理器调用的初始化序列顺序。⌋ (SRS_BSW_00101)
[SWS_IoHwAb_00102] ⌈完成模块初始化后,I/O 硬件抽象状态应设置为 IOHWAB_IDLE,作业结果应设置为 IOHWAB_JOB_OK。⌋ (SRS_BSW_00441)
8.3.2 IoHwAb_GetVersionInfo
[SWS_IoHwAb_00120] ⌈
| 字段 | 内容 |
|---|---|
| Service name | IoHwAb_GetVersionInfo |
| Syntax | void IoHwAb_GetVersionInfo(Std_VersionInfoType* versioninfo) |
| Service ID[hex] | 0x10 |
| Sync/Async | Synchronous |
| Reentrancy | Reentrant |
| Parameters (out) | versioninfo - 指向存储此 I/O 硬件抽象实现版本信息的变量的指针 |
| Description | 返回此模块的版本信息。 |
| Available via | IoHwAb.h |
⌋ ()
8.4 回调通知(Call-back notifications)
本节列出了为下层模块提供的函数。
8.4.1 IoHwAb_AdcNotification<#groupID>
[SWS_IoHwAb_00121] ⌈
| 字段 | 内容 |
|---|---|
| Service name | IoHwAb_AdcNotification<#groupID> |
| Syntax | void IoHwAb_AdcNotification<#groupID>(void) |
| Service ID[hex] | 0x20 |
| Sync/Async | Synchronous |
| Reentrancy | Non Reentrant |
| Description | 当 ADC 驱动完成组 <#groupID> 的组转换时,将由 ADC 驱动调用。 |
| Available via | IoHwAb_Adc.h |
⌋ ()
[SWS_IoHwAb_00104] ⌈函数 IoHwAb_AdcNotification<#groupID> 旨在由 ADC 驱动在完成组 <#groupID> 的组转换时调用。⌋ ()
8.4.2 IoHwAb_Pwm_Notification<#channel>
[SWS_IoHwAb_00122] ⌈
| 字段 | 内容 |
|---|---|
| Service name | IoHwAb_PwmNotification<#channel> |
| Syntax | void IoHwAb_PwmNotification<#channel>(void) |
| Service ID[hex] | 0x30 |
| Sync/Async | Synchronous |
| Reentrancy | Non Reentrant |
| Description | 当 PWM 通道 <#channel> 上发生信号边沿时,将由 PWM 驱动调用。 |
| Available via | IoHwAb_Pwm.h |
⌋ ()
[SWS_IoHwAb_00105] ⌈函数 IoHwAb_PwmNotification<#channel> 旨在由 PWM 驱动在通道 <#channel> 上发生信号边沿时调用。⌋ ()
8.4.3 IoHwAb_IcuNotification<#channel>
[SWS_IoHwAb_00123] ⌈
| 字段 | 内容 |
|---|---|
| Service name | IoHwAb_IcuNotification<#channel> |
| Syntax | void IoHwAb_IcuNotification<#channel>(void) |
| Service ID[hex] | 0x40 |
| Sync/Async | Synchronous |
| Reentrancy | Non Reentrant |
| Description | 当 ICU 通道 <#channel> 上发生信号边沿时,将由 ICU 驱动调用。 |
| Available via | IoHwAb_Icu.h |
⌋ ()
[SWS_IoHwAb_00106] ⌈函数 IoHwAb_IcuNotification<#channel> 旨在由 ICU 驱动在通道 <#channel> 上发生信号边沿时调用。⌋ ()
8.4.4 IoHwAb_GptNotification<#channel>
[SWS_IoHwAb_00124] ⌈
| 字段 | 内容 |
|---|---|
| Service name | IoHwAb_GptNotification<#channel> |
| Syntax | void IoHwAb_GptNotification<#channel>(void) |
| Service ID[hex] | 0x50 |
| Sync/Async | Synchronous |
| Reentrancy | Non Reentrant |
| Description | 当 GPT 通道 <#channel> 上定时器值到期时,将由 GPT 驱动调用。 |
| Available via | IoHwAb_Gpt.h |
⌋ ()
[SWS_IoHwAb_00107] ⌈函数 IoHwAb_GptNotification<#channel> 旨在由 GPT 驱动在通道 <#channel> 上定时器值到期时调用。⌋ ()
8.4.5 IoHwAb_OcuNotification<#channel>
[SWS_IoHwAb_00155] ⌈
| 字段 | 内容 |
|---|---|
| Service name | IoHwAb_OcuNotification<#channel> |
| Syntax | void IoHwAb_OcuNotification<#channel>(void) |
| Service ID[hex] | 0xa0 |
| Sync/Async | Synchronous |
| Reentrancy | Non Reentrant |
| Description | 当计数器的当前值与通道 <#channel> 上的阈值匹配时,将由 OCU 驱动调用。 |
| Available via | IoHwAb_Ocu.h |
⌋ ()
[SWS_IoHwAb_00156] ⌈函数 IoHwAb_OcuNotification<#channel> 旨在由 OCU 驱动在通道 <#channel> 上计数器的当前值与阈值匹配时调用。⌋ ()
8.4.6 IoHwAb_Pwm_NotifyReadyForPowerState<#MODE>
[SWS_Pwm_00198] ⌈
| 字段 | 内容 |
|---|---|
| Service name | IoHwAb_Pwm_NotifyReadyForPowerState<#Mode> |
| Syntax | void IoHwAb_Pwm_NotifyReadyForPowerState<#Mode>(void) |
| Service ID[hex] | 0x60 |
| Sync/Async | Synchronous |
| Reentrancy | Non Reentrant |
| Description | 当模式 <#Mode> 的请求电源状态准备完成时,应由 PWM 驱动调用。 |
| Available via | IoHwAb_Pwm.h |
⌋ ()
注释: 如果 PWM 驱动配置为支持异步模式的电源状态控制,则需要由 CDD 或 IoHwAbs 提供的此接口。
8.4.7 IoHwAb_Adc_NotifyReadyForPowerState<#MODE>
[SWS_IoHwAb_00154] ⌈
| 字段 | 内容 |
|---|---|
| Service name | IoHwAb_Adc_NotifyReadyForPowerState<#Mode> |
| Syntax | void IoHwAb_Adc_NotifyReadyForPowerState<#Mode>(void) |
| Service ID[hex] | 0x70 |
| Sync/Async | Synchronous |
| Reentrancy | Non Reentrant |
| Description | 当模式 <#Mode> 的请求电源状态准备完成时,应由 ADC 驱动调用。 |
| Available via | IoHwAb_Adc.h |
⌋ ()
注释: 如果 ADC 驱动配置为支持异步模式的电源状态控制,则需要由 CDD 或 IoHwAbs 提供的此接口。
8.5 计划函数(Scheduled functions)
这些函数由基础软件调度器直接调用。以下函数应没有返回值和参数。所有函数应为 Non-Reentrant。
8.5.1
| 字段 | 内容 |
|---|---|
| Service name | <Name of API call> |
| Service ID [hex] | <Number of service ID. 此 ID 用作默认错误跟踪器错误报告 API 的参数。ID 不应等于第 0 章中的 ID> |
| Description | <包含定义此 API 调用操作的 ID 的本地软件需求集。> |
| Timing | <fixed cyclic / variable cyclic / on pre condition> |
| Pre condition | <关于 API 调用必须操作的环境的假设列表。> |
| Configuration | <描述影响此 API 调用的静态可配置属性。例如固定周期时序的周期时间。> |
8.6 功能诊断接口(Functional Diagnostics Interface)
本章描述 I/O 硬件抽象向 DCM 模块提供的接口,以实现"软件组件的功能诊断"。
"软件组件的功能诊断"意味着,通过提供的接口,DCM 模块能够控制和读取每个已实现的 ECU 信号。
8.6.1 IoHwAb_Dcm_
[SWS_IoHwAb_00135] ⌈
| 字段 | 内容 |
|---|---|
| Service name | IoHwAb_Dcm_ |
| Syntax | void IoHwAb_Dcm_<EcuSignalName>(uint8 action, <EcuSignalDataType> signal) |
| Description | 此函数为 DCM 模块提供对特定 ECU 信号的访问控制(<EcuSignalname> 是 ECU 信号的符号名称)。可以通过此函数锁定和解锁 ECU 信号。锁定将 ECU 信号"冻结"为当前值、配置的默认值或由参数"signal"给定的值。 |
| Available via | IoHwAb_Dcm.h |
⌋ (SRS_IoHwAb_00002)
| 参数 | 值 |
|---|---|
| action(输入) | IOHWAB_RETURNCONTROLTOECU:解锁信号 IOHWAB_RESETTODEFAULT:锁定信号并将其设置为配置的默认值 IOHWAB_FREEZECURRENTSTATE:锁定信号到当前值 IOHWAB_SHORTTERMADJUSTMENT:锁定信号并将其调整为 DCM 模块给定的值 |
| signal(输入) | 调整信号的值(仅用于"短期调整") |
[SWS_IoHwAb_00136] ⌈此函数允许控制关联的 ECU 信号,即可以锁定、解锁 ECU 信号并将其调整为某个值。⌋ (SRS_IoHwAb_00002)
[SWS_IoHwAb_00138] ⌈此函数应可预编译时间配置 On/Off。⌋ (SRS_IoHwAb_00002)
锁定信号意味着某个信号在软件上锁定到 SW-C,即 SW-C 的请求在锁定状态下对硬件没有影响。如果对输入信号使用 C/S 通信,可能有必要具有 IoHwAb 内部缓冲区,其值可由 DCM 调整。
8.6.2 IoHwAb_Dcm_Read
[SWS_IoHwAb_00139] ⌈
| 字段 | 内容 |
|---|---|
| Service name | IoHwAb_Dcm_Read |
| Syntax | void IoHwAb_Dcm_Read<EcuSignalName>(<EcuSignalDataType>* signal) |
| Parameters (out) | signal - 指向应存储当前信号值的变量的指针 |
| Description | 此函数为 DCM 模块提供对特定 ECU 信号的读取访问(<EcuSignalname> 是 ECU 信号的符号名称)。 |
| Available via | IoHwAb_Dcm.h |
⌋ (SRS_IoHwAb_00002)
[SWS_IoHwAb_00140] ⌈此函数为 DCM 模块提供对特定 ECU 信号的读取访问。读取访问独立于 ECU 信号的当前状态(锁定/未锁定),应始终从硬件读取当前物理值。⌋ (SRS_IoHwAb_00002)
[SWS_IoHwAb_00142] ⌈此函数应可预编译时间配置 On/Off。⌋ (SRS_IoHwAb_00002)
8.7 电源状态函数(Power State Functions)
8.7.1 IoHwAb_PreparePowerState<#MODE>
[SWS_IoHwAb_00146] ⌈
| 字段 | 内容 |
|---|---|
| Service name | IoHwAb_PreparePowerState<#Mode> |
| Syntax | void IoHwAb_PreparePowerState<#Mode>(void) |
| Service ID[hex] | 0x80 |
| Sync/Async | Synchronous |
| Reentrancy | Non Reentrant |
| Description | 准备与模式 <#Mode> 关联的外设的电源状态转换。 |
| Available via | IoHwAb.h |
⌋ ()
8.7.2 IoHwAb_EnterPowerState<#MODE>
摘要说明: IoHwAb_EnterPowerState<#Mode> 用于执行实际的外设电源状态转换。
详细需求 SWS_IoHwAb_00147 见原文 PDF(第 49 页)。
8.8 预期接口(Expected Interfaces)
8.8.1 强制接口(Mandatory Interfaces)
摘要说明: I/O 硬件抽象的强制接口包括来自 MCAL 驱动程序的多个 API:
源模块 API 用途 Adc Adc_Init, Adc_DeInit, Adc_StartGroupConversion, Adc_ReadGroup, Adc_EnableHardwareTrigger, Adc_DisableHardwareTrigger 等 ADC 操作 Dio Dio_ReadChannel, Dio_WriteChannel, Dio_ReadPort, Dio_WritePort 等 DIO 操作 Gpt Gpt_StartTimer, Gpt_StopTimer, Gpt_EnableNotification 等 GPT 操作 Icu Icu_Init, Icu_SetMode, Icu_EnableNotification, Icu_StartTimestamp 等 ICU 操作 Ocu Ocu_Init, Ocu_StartChannel, Ocu_StopChannel 等 OCU 操作 Pwm Pwm_Init, Pwm_SetDutyCycle, Pwm_SetPeriodAndDuty 等 PWM 操作 Port Port_Init, Port_SetPinDirection, Port_SetPinMode 等 Port 操作 Spi Spi_Init, Spi_AsyncTransmit, Spi_ReadIB, Spi_WriteIB 等 SPI 操作 完整列表见原文 PDF(第 49-52 页)。
8.8.2 可选接口(Optional Interfaces)
无附加可选接口。
8.8.3 作业结束通知(Job End Notification)
摘要说明: I/O 硬件抽象可以提供作业结束通知接口,以允许异步通信(SPI、ADC 流等)。
9 序列图(Sequence diagrams)
摘要说明: 本节包含以下序列图:
- ECU-signal provided by the I/O Hardware Abstraction (example) - 示例 ECU 信号提供流程
- Setting ADC and PWM in a low consumption power state as a result of a request for an application low power mode (example) - 低功耗模式下的 ADC 和 PWM 设置流程
完整序列图见原文 PDF(第 53-56 页)。
10 配置规范(Configuration specification)
10.1 发布信息(Published Information)
摘要说明: I/O 硬件抽象的发布信息包括:
- 版本号
- 供应商 ID
- 模块 ID
- 编译开关信息
- 与底层 MCAL 驱动程序的依赖关系
11 不适用需求(Not applicable requirements)
摘要说明: 本节列出了不适用于 I/O 硬件抽象的需求。
翻译说明
本文档为 AUTOSAR 4.4.0 版本 I/O 硬件抽象规范的中文翻译。保留了所有需求 ID(SWS_IoHwAb_xxxxx)、参考标识符及模块缩写。原始文档共 58 页,本翻译涵盖了全部主要章节,并对大型可追溯性表采用了"重点翻译+摘要"策略,标注"完整表见原文 PDF"的位置以便用户查阅原文。I/O 硬件抽象层提供基于信号的接口,向上层抽象出 ECU 硬件的信号路径。