Files
autosar_standard_spec_v4.4/IO/AUTOSAR_SWS_IOHardwareAbstraction.md
T

34 KiB
Raw Blame History

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

  1. 引言与功能概述(Introduction and functional overview
  2. 缩略语与缩写(Acronyms and abbreviations
  3. 相关文档(Related documentation
  4. 约束与假设(Constraints and assumptions
  5. 对其他模块的依赖(Dependencies to other modules
  6. 需求可追溯性(Requirements traceability
  7. 功能规范(Functional specification
  8. API 规范(API specification
  9. 序列图(Sequence diagrams
  10. 配置规范(Configuration specification
  11. 不适用需求(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-00061Init 函数)
  • SWS_IoHwAb_00081-00097SW-C 模板使用)
  • SWS_IoHwAb_00102-00107(回调通知)
  • SWS_IoHwAb_00108-00114(调度概念)
  • SWS_IoHwAb_00119-00120Init 和 GetVersionInfo API
  • SWS_IoHwAb_00121-00124、00155-00156ADC、PWM、ICU、GPT、OCU 通知回调)
  • SWS_IoHwAb_00135-00144DCM 诊断接口)
  • SWS_IoHwAb_00146-00147(电源状态准备与进入)
  • SWS_IoHwAb_00154ADC 电源状态通知)
  • 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 设置为低功耗状态。

动作序列如下:

  1. 应用程序电源模式管理器向 BswM 发出模式请求以切换到"LowPowerMode"。
  2. BswM 评估请求,如果所有先决条件都满足,则向电源模式管理器和传感器 SWC 发出模式切换。
  3. 传感器 SWC 停止读取感官数据(即不再向 IoHwAbs 请求任何 Get 操作)。
  4. IoHwAbs 从 ADC 注销其通知,并最终停止 HW 循环采集。
  5. IoHwAbs 将外部感官 HW 命令进入低功耗模式或关闭。
  6. 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

摘要说明: 本节包含以下序列图:

  1. ECU-signal provided by the I/O Hardware Abstraction (example) - 示例 ECU 信号提供流程
  2. 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 硬件的信号路径。