硬件测试管理器启动与关闭规范(Specification of Hardware Test Manager on start up and shutdown)

📄 文档 ID:703 🏷 类型:SWS(软件规范说明) 📅 版本:AUTOSAR CP 4.4.0 📑 页数:36 📌 状态:Final 🔗 原 PDF:AUTOSAR_SWS_HWTestManager.pdf

目录

1 介绍与功能概述(Introduction and functional overview)

本规范描述了硬件测试管理启动与关闭(Hardware Test Management start up and shutdown,HTMSS)模块的概念、接口与配置。

HTMSS 模块是 AUTOSAR 标准化基础软件架构中服务层的基础软件模块。HTMSS 模块应为应用 SWC 使用提供测试状态/结果。

本模块的目的是提供一个基础设施,以在 AUTOSAR 标准软件平台内集成/转换微控制器制造商特定的启动与关闭测试(例如 BIST)的测试结果/状态。

本模块的基本功能包括:从 MSTP 收集测试结果/状态、配置 MSTP 测试、启动测试执行、向 EcuM 模块和应用 SWC 提供 MSTP 测试状态,以评估系统行为的测试结果。

HTMSS 模块集成于 AUTOSAR BSW 服务层。下图展示了 HTMSS 模块在 AUTOSAR 软件平台中的功能集成情况。

图 1:HTMSS 交互总览

Non-AUTOSAR Environment              AUTOSAR SW Platform
┌─────────────────────────┐         ┌────────────────────────────┐
│ μC firmware/bootstrap   │ power on │ Application SW-C           │
│ μC specific BIST         │  reset   │   ▲           ▼            │
│ ┌──────────────────┐    │ ───────► │ RTE                          │
│ │ Microcontroller  │    │         │ BSW service layer:          │
│ │ Specific Test    │    │         │   EcuM ◄── BswM (select   │
│ │ Package (MSTP)   │    │         │          shutdown target)   │
│ └──────────────────┘    │         │   HTMSS (Init/start/get)  │
│         ▲                 │         │     ▲           ▼            │
│         │ implementation  │         │   MSTP wrapper  MCU        │
│         │ specific        │         │                            │
└─────────────────────────┘         └────────────────────────────┘

注:MSTP wrapper 是用于从 AR 标准化模块 HTMSS 访问 MSTP 模块的中间模块。MSTP wrapper 可手动实现,或使用 AUTOSAR 方法/过程生成/配置。

HTMSS 模块的预集成需求包括:

下图描述了 HTMSS 模块在标准 AUTOSAR 软件执行平台不同阶段中的角色。

注:HTMSS 概念可考虑集成到 AUTOSAR 架构中以实现安全相关 ECU 的安全目标,但并非始终强制。

图 2:HTMSS 阶段总览

ECU Startup                                          ECU Runtime        ECU Shutdown
Phase 1:           │ Phase 2:                │ Phase 3:                │ Phase 4:
Before AUTOSAR OS  │ AUTOSAR Initialization   │ AUTOSAR Executing       │ AUTOSAR
                   │                          │ Safety Function         │ Shutdown
─────────────────────────────────────────────────────────────────────────────
Safe State ensured via System Design
─────────────────────────────────────────────────────────────────────────────
μC Firmware │ Bootstrap │ AUTOSAR        │ AUTOSAR         │ AUTOSAR       │ AUTOSAR
Code        │           │ HW/SW          │ SW-C            │ Safety        │ Shutdown
            │           │ Initialization │ Initialization  │ Function      │
─────────────────────────────────────────────────────────────────────────────
HW-BIST     │           │ HW Init        │ Start of OS     │ SW-Comps      │ SW-DeInit
HW-Reset    │           │ Driver Init    │ System Svc      │ in control of │ HW-DeInit
Low-Level   │           │ SW Init        │ SW-Comps        │ Safety Funcs  │
Init        │           │                │                 │               │
─────────────────────────────────────────────────────────────────────────────
HTMSS role ──────────────────────┴──────────┴──────────┴───────┘
Legend: Not AUTOSAR / AUTOSAR

注:下面描述的 HTMSS 阶段用于解释 HTMSS 模块在典型 AUTOSAR ECU 软件执行环境中的功能。这些阶段不应被引用为 EcuM 中定义的阶段。

2 缩略语与缩写(Acronyms and abbreviations)

缩写 / 简称(Abbreviation / Acronym)描述(Description)
ADC模数转换器(Analog to Digital converter)
BIST内建自测试(Built In Self Test)
BSW基础软件(Basic Software)
DET默认错误追踪器(Default error tracer)
ECU电子控制单元(Electronic Control Unit)
ECUMECU 管理器(Electronic Control Unit Manager)
HTMSS硬件测试管理启动与关闭(Hardware Test Management startup shutdown)
MCU微控制器单元(Micro Controller Unit)
MSTP微控制器专用测试包(Microcontroller Specific Test Package)
RTE运行时环境(Run Time Environment)

3 相关文档(Related documentation)

3.1 输入文档(Input documents)

3.2 相关标准与规范(Related standards and norms)

3.3 相关规范(Related specification)

AUTOSAR 在 [3](SWS BSW General)提供了关于基础软件的通用规范,对 HTMSS 模块同样有效。因此,SWS BSW General [3] 应被视为 AUTOSAR HTMSS 模块的附加且必需的规范。

4 约束与假设(Constraints and assumptions)

本文档适用于 AUTOSAR 4.3.0 发布版本。

4.1 限制(Limitations)

本模块的使用是可选,仅在需要所提供的功能时使用。

为集成特定解决方案所需的测试能力,所有受影响的模块需实现与 HTMSS 的接口。

示例:半导体厂商提供的 MSTP(微控制器专用测试包)模块是集成 HTMSS 模块至 AUTOSAR 软件平台的强制模块

启动/关闭测试配置由系统集成者决定,基于 MSTP 测试配置能力与功能。

HTMSS 模块应通过 wrapper 实现(在本规范中称为 MSTP wrapper)使用 AR 方法/过程与假设的测试模块(MSTP)交互。

测试结果在 NV 内存中的存储和 DEM 错误报告需求不在 HTMSS 模块范围内。集成者应在相应的应用 SWC 层管理这些需求(如需要)。

4.2 在汽车领域的适用性(Applicability to car domains)

每个 ECU 设计为在给定系统架构的上下文中提供预定义功能。因此,ECU 无故障运行至关重要,这可以通过简单监控预期故障来避免或检测在其出现之前。检查 ECU 可操作性的策略之一是执行(在 ECU 启动与关闭期间)破坏性测试以检查给定逻辑和条件,并保留结果以供进一步分析。HTMSS 模块描绘了在 ECU 上处理此类测试结果的需求,并按请求提供其状态。

5 与其他模块的依赖(Dependencies to other modules)

HTMSS 在 AUTOSAR 架构中与一些 BSW 模块和应用 SWC 存在接口。此外 HTMSS 在 AUTOSAR 架构之外与微控制器专用测试包(MSTP)存在接口。然而,与 MSTP 的交互是实现特定的。

5.1 EcuM

ECU 状态管理器应访问 HTMSS 服务以启动测试,并从被测设备收集测试结果/状态。

ECUM STARTUP 阶段和 SHUTDOWN 阶段纳入了 HTMSS 模块在 AUTOSAR 软件平台中的主要功能。

5.2 应用 SWC

应用软件组件应(通过 RTE)收集 HTMSS 测试结果以进行评估,然后确定软件行为。此外,如需要,测试结果应存储在非易失性内存中以供后续使用。

5.3 RTE

通过 RTE 数据交换,测试结果/状态在 HTMSS 模块和应用软件层之间共享。

5.4 与 MSTP 的依赖(Dependencies with MSTP)

HTMSS 可以访问 MSTP 模块(可能为非 AR 软件模块,同步和/或异步)以在 AUTOSAR 软件平台内管理以下功能/特性:

注:HTMSS 模块应通过 wrapper 模块/源代码(在本规范中称为 MSTP wrapper)使用 AUTOSAR 方法和过程进行配置/生成,与 MSTP 模块交互。

5.5 MCU

HTMSS 从 MCU 驱动接收 reset 原因(例如由关闭测试执行引起的 reset)。

5.6 默认错误追踪器(Det)

如果 DET 已启用,则 HTMSS 模块将所检测到的开发错误通知默认错误追踪器。

5.7 文件结构(File structure)

5.7.1 代码文件结构(Code file structure)

[SWS_HTMSS_00001] ⌈ 代码文件结构应包含一个或多个源文件 HTMSS_<xxx>.c,其中包含 HTMSS 代码的全部部分。⌋

6 需求追溯(Requirements traceability)

下表引用了 [3] 中规范的相关特性,并将其链接到本规范的实现。

需求(Requirement)描述(Description)由满足(Satisfied by)
SRS_BSW_00159AUTOSAR 基础软件的所有模块应支持基于工具的配置SWS_HTMSS_00016
SRS_BSW_00301所有 AUTOSAR BSW 模块应只导入必要信息SWS_HTMSS_00012
SRS_BSW_00337开发错误分类SWS_HTMSS_00011
SRS_BSW_00345BSW 模块应支持预编译配置SWS_HTMSS_00006, SWS_HTMSS_00016
SRS_BSW_00384基础软件模块规范应至少在描述中说明所需的其他模块SWS_HTMSS_00040
SRS_BSW_00404BSW 模块应支持 post-build 配置SWS_HTMSS_00015
SRS_BSW_00407每个 BSW 模块应提供读取特定模块实现版本信息的函数SWS_HTMSS_00039
SRS_HTMSS_00001HTMSS 应允许配置启动与关闭测试SWS_HTMSS_00014, SWS_HTMSS_00017, SWS_HTMSS_00023
SRS_HTMSS_00002HTMSS 应允许在单个硬件资源级别配置测试SWS_HTMSS_00008, SWS_HTMSS_00009, SWS_HTMSS_00014, SWS_HTMSS_00017, SWS_HTMSS_00022
SRS_HTMSS_00003HTMSS 应提供服务以收集 MSTP 测试结果noname, SWS_HTMSS_00005, SWS_HTMSS_00032, SWS_HTMSS_00033, SWS_HTMSS_00034, SWS_HTMSS_00036
SRS_HTMSS_00004HTMSS 应提供与应用程序层软件共享测试结果的机制SWS_HTMSS_00042
SRS_HTMSS_00005HTMSS 应提供服务以在 ECUM 启动阶段配置/初始化 MSTP 测试SWS_HTMSS_00019, SWS_HTMSS_00020, SWS_HTMSS_00021
SRS_HTMSS_00006HTMSS 应提供服务以触发测试执行SWS_HTMSS_00025, SWS_HTMSS_00026, SWS_HTMSS_00027, SWS_HTMSS_00028
SRS_HTMSS_00007HTMSS 应提供回调选项以处理测试失败条件SWS_HTMSS_00043, SWS_HTMSS_00044

7 功能规范(Functional specification)

7.1 通用行为(General behavior)

HTMSS 的基本功能可划分为以下主要组:

注:HTMSS 不应添加任何与 MSTP 测试对应的测试功能。测试的实现与执行不在 HTMSS 范围内。

7.2 硬件测试管理(Hardware Test Management)

7.2.1 背景与原理(Background & Rationale)

总体目标是通过在基于标准 AUTOSAR 平台构建的安全相关系统中执行硬件测试来提供微控制器操作的故障状态。

该概念应提供执行和记录预定义测试集的能力。此外应支持所使用微控制器上下文中的硬件监控活动、获取测试结果并将其传播到 AUTOSAR 环境中的利益相关者软件组件。

HTMSS 模块的目标是标准化可在 AUTOSAR 环境之外执行微控制器特定启动/关闭测试,然后在 AUTOSAR 软件执行上下文中收集与评估测试结果的可访问接口。

7.2.2 需求(Requirements)

[SWS_HTMSS_00005] ⌈ HTMSS 应能读取所请求硬件上微控制器特定的启动与关闭测试结果/状态。⌋(SRS_HTMSS_00003

依赖:[SWS_HTMSS_00018](初始化并配置 MSTP 测试,调用 Mcu_GetResetReason 复位原因检测)、[SWS_HTMSS_00020] 与 [SWS_HTMSS_00021](MSTP 启动/关闭测试配置);参考 [SWS_HTMSS_00006](静态配置参数检查)、[SWS_HTMSS_00036](HTMSS_GetTestStatus API)。

注:由用户/集成者负责评估 HTMSS 提供的启动与关闭测试结果(即在失败情况下),然后定义软件反应。错误钩子(启动与关闭)应评估测试结果。

提示:集成者可以根据系统/安全目标中的关键性/相关性对测试结果的处理进行优先级排序。在严重错误情况下,集成者应决定返回 reset 状态或 shutdown 状态。

[SWS_HTMSS_00006] ⌈ 预编译时配置参数应静态检查(至少在编译时)其正确性。⌋(SRS_BSW_00345

[SWS_HTMSS_00008] ⌈ 在一种配置中,每个模块应有多个测试。这些测试可并行执行。⌋(SRS_HTMSS_00002

注:处理上述需求的配置参数应在 HTMSSConfigSet(第 10.2.3 章)中适配。

[SWS_HTMSS_00009] ⌈ 应能对给定硬件上的单个硬件资源(例如通过 module / channel ID 选择)进行测试。参见第 10.2.3 章 HTMSSConfigSet 的配置参数实现。

提示:一个微控制器可能包含两个 ADC 外设硬件单元。应有支持单独测试/获取每个 ADC 单元的测试结果。

注:无法保证未使用的硬件资源中的错误不会传播或影响微控制器的其余部分。因此可能需要执行完整的硬件测试,且测试结果应根据 ECU 的安全要求适当考虑。⌋(SRS_HTMSS_00002

7.2.3 HTMSS 模块状态(States of HTMSS module)

[SWS_HTMSS_00010] ⌈ HTMSS 模块状态表:

状态(State)描述(Description)
HTMSS_UINITHTMSS 模块未初始化(模块初始化前的默认值)
HTMSS_INITHTMSS 模块已初始化
HTMSS_BUSYHTMSS 请求的测试未完成/正在执行/已启动
HTMSS_IDLEHTMSS 请求的测试已完成/无待处理测试运行

7.3 错误分类(Error classification)

7.3.1 开发错误(Development Errors)

[SWS_HTMSS_00011]

错误类型(Type or error)相关性(Relevance)相关错误码(Related error code)值(Value [hex])
在初始化前调用了服务DevelopmentHTMSS_E_NOT_INIT0x01
作为参数传递了空指针DevelopmentHTMSS_E_NULL_POINTER0x02
参数无效(不特定)DevelopmentHTMSS_E_PARAM_INVALID0x03
测试请求运行时调用了函数DevelopmentHTMSS_E_BUSY0x04

⌋(SRS_BSW_00337

7.3.2 生产错误(Production Errors)

无(None)。

8 API 规范(API specification)

8.1 导入类型(Imported types)

本章列出了所包含的以下文件中的所有类型:

[SWS_HTMSS_00012] ⌈ HTMSS 应仅使用以下其他模块的导入类型:

头文件(Header file)导入类型(Imported Type)
Std_TypesStd_ReturnType
Std_VersionInfoType

⌋(SRS_BSW_00301

8.2 类型定义(Type definitions)

[SWS_HTMSS_00013] ⌈ 以下数据类型应用于本规范中定义的函数:

8.2.1 HTMSS_TestCfgType

NameHTMSS_TestCfgType
TypeStructure
RangeImplementation specific配置数据结构的内容是实现特定的
DescriptionHTMSS 模块的配置数据结构
Available viaHTMSS.h

8.2.2 HTMSS_TestStatusType

NameHTMSS_TestStatusType
Typeenumeration
RangeHTMSS_STATUS_OK测试状态 PASS
HTMSS_STATUS_NOK测试状态 FAIL
HTMSS_STATUS_INVALID测试状态为 Invalid
HTMSS_STATUS_UNINIT测试状态未初始化
DescriptionHTMSS_TestStatusType 描述测试状态
Available viaHTMSS.h

8.2.3 HTMSS_TestGroupType

NameHTMSS_TestGroupType
TypeEnumeration
RangeHTMSS_STARTUP仅在启动时执行的测试
HTMSS_SHUTDOWN仅在关闭时执行的测试
HTMSS_STARTUP_SHUTDOWN在启动和关闭时执行的测试
DescriptionHTMSS_TestGroupType 描述测试组类型
Available viaHTMSS.h

8.2.4 HTMSS_TestResultType

NameHTMSS_TestResultType
TypeStruct
unit8TestResult测试结果(例如 pass、fail、invalid)
uint8TestSignature被测资源的标识符
Description描述当前测试结果
Available viaHTMSS.h

⌋(SRS_HTMSS_00001SRS_HTMSS_00002

8.3 函数定义(Function definitions)

以下小节规范了 HTMSS 模块提供的 API 函数。

8.3.1 HTMSS_Init

[SWS_HTMSS_00014]

Service nameHTMSS_Init
Syntaxvoid HTMSS_Init(const HTMSS_TestCfgType * ConfigPtr)
Service ID [hex]0x01
Sync/AsyncSynchronous
ReentrancyNon Reentrant
Parameters (in)ConfigPtr指向 Variant PB 中配置集的指针(Variant PC 需要 NULL_PTR)
Parameters (inout)None
Parameters (out)None
Return valueNone
Description初始化 HTMSS 模块
Available viaHTMSS.h

⌋(SRS_HTMSS_00001SRS_HTMSS_00002

[SWS_HTMSS_00015] ⌈ 在 Variant PB 情况下:函数 HTMSS_Init 应根据 ConfigPtr 引用的配置集初始化 HTMSS 模块。⌋(SRS_BSW_00404

[SWS_HTMSS_00016] ⌈ 在 Variant PC 情况下:函数 HTMSS_Init 应根据预编译配置集初始化 HTMSS。⌋(SRS_BSW_00345SRS_BSW_00159

[SWS_HTMSS_00017] ⌈ 服务 HTMSS_Init() 应初始化 HTMSS 的全局变量和数据结构,包括标志和缓冲区。⌋(SRS_HTMSS_00001SRS_HTMSS_00002

[SWS_HTMSS_00018] ⌈ 函数 HTMSS_Init() 应初始化 MSTP 模块并配置 MSTP 测试。⌋(SRS_HTMSS_00001SRS_HTMSS_00002

[SWS_HTMSS_00019] ⌈ 在调用此函数之前,HTMSS 不可用。⌋(SRS_HTMSS_00005

[SWS_HTMSS_00020] ⌈ 函数 HTMSS_Init() 应通过调用 MCU 驱动的 Mcu_GetResetReason() 确定最近一次 reset 原因。⌋(SRS_HTMSS_00005

[SWS_HTMSS_00021] ⌈ 函数 HTMSS_Init() 应配置 MSTP 测试(启动与关闭),如果最近 reset 原因不是 MCU_HWTEST_RESET。⌋(SRS_HTMSS_00005

[SWS_HTMSS_00022] ⌈ 函数 HTMSS_Init() 应分别配置启动与关闭测试。

提示:与 MSTP 模块的接口和测试配置是实现特定的。可能存在一些情况需要配置相同类型的测试以在启动与关闭时隙中执行。可在此上下文中使用 HTMSS_TestGroupType(参见 8.2.3 节)。⌋(SRS_HTMSS_00002

[SWS_HTMSS_00023] ⌈ 函数 HTMSS_Init() 应将 HTMSS 状态设置为 HTMSS_UNINIT,如果 MSTP 测试配置因任何原因失败。⌋(SRS_HTMSS_00001

[SWS_HTMSS_00024] ⌈ 如果 HTMSS 的 DET 已启用:函数 HTMSS_Init 应检查有效指针。如有错误,HTMSS_Init 应抛出开发错误 HTMSS_E_NULL_POINTER。⌋

8.3.2 HTMSS_StartTest

[SWS_HTMSS_00025]

Service nameHTMSS_StartTest
SyntaxStd_ReturnType HTMSS_StartTest(HTMSS_TestGroupType GrpId)
Service ID [hex]0x03
Sync/AsyncSynchronous
ReentrancyNon Reentrant
Parameters (in)GrpId测试组类型(例如 startup 或 shutdown)
Parameters (inout)None
Parameters (out)None
Return valueStd_ReturnType函数执行的标准返回
Description启动 MSTP 已配置的测试
Available viaHTMSS.h

⌋(SRS_HTMSS_00006

[SWS_HTMSS_00026] ⌈ 函数 HTMSS_StartTest 应在所请求硬件上触发 MSTP 测试操作。如果成功,应返回 E_OK。⌋(SRS_HTMSS_00006

[SWS_HTMSS_00027] ⌈ 函数 HTMSS_StartTest 应将 HTMSS 状态设置为 HTMSS_BUSY,如果 MSTP 状态确认测试触发成功。⌋(SRS_HTMSS_00006

[SWS_HTMSS_00028] ⌈ 函数 HTMSS_StartTest 应处理被测设备的启动与关闭测试请求。

提示:HTMSS 与 MSTP 模块之间的接口是实现特定的。因为半导体厂商可能定义与设备 MSTP 模块交互的方法。⌋(SRS_HTMSS_00006

[SWS_HTMSS_00029] ⌈ 如果 HTMSS 的 DET 已启用:函数 HTMSS_StartTest 应检查有效的初始化。如失败,HTMSS_StartTest 应抛出开发错误 HTMSS_E_NOT_INIT 并返回 E_NOT_OK。⌋

[SWS_HTMSS_00030] ⌈ 如果 HTMSS 的 DET 已启用:函数 HTMSS_StartTest 应检查有效的输入参数。如有错误,HTMSS_StartTest 应抛出开发错误 HTMSS_E_PARAM_INVALID 并返回 E_NOT_OK。⌋

[SWS_HTMSS_00031] ⌈ 如果 HTMSS 的 DET 已启用:当启动请求已存在(非 HTMSS_IDLE 状态)时调用,HTMSS_StartTest 应抛出开发错误 HTMSS_E_BUSY 并返回 E_NOT_OK。⌋

8.3.3 HTMSS_GetTestStatus

[SWS_HTMSS_00032]

Service nameHTMSS_GetTestStatus
SyntaxHTMSS_TestStatusType HTMSS_GetTestStatus(HTMSS_TestGroupType GrpId, HTMSS_TestResultType * RequestTestResultPtr)
Service ID [hex]0x04
Sync/AsyncSynchronous
ReentrancyNon Reentrant
Parameters (in)GrpId测试组类型(例如 startup 或 shutdown)
Parameters (inout)None
Parameters (out)RequestTestResultPtr用于存储请求结果的指针
Return valueHTMSS_TestStatusType返回所请求测试的当前测试状态
Description返回所请求测试的当前测试状态
Available viaHTMSS.h

⌋(SRS_HTMSS_00003SRS_HTMSS_00004

[SWS_HTMSS_00033] ⌈ 函数 HTMSS_GetTestStatus 应从 MSTP 收集测试状态并将读取数据存储于 out 参数 RequestTestResultPtr 中(若 OUT 参数不为 NULL_PTR),并返回 HTMSS_TestStatusType 与测试状态结果。⌋(SRS_HTMSS_00003

[SWS_HTMSS_00034] ⌈ 如果 OUT 参数为 NULL_PTR,函数 HTMSS_GetTestStatus更新 OUT 参数,但应返回 HTMSS_TestStatusType 与测试状态结果。⌋(SRS_HTMSS_00003

[SWS_HTMSS_00035] ⌈ 函数 HTMSS_GetTestStatus 应将 HTMSS 状态设置为 HTMSS_IDLE,如果 MSTP 提供的状态确认测试完成。⌋(SRS_HTMSS_00003

[SWS_HTMSS_00036] ⌈ 函数 HTMSS_GetTestStatus 应根据输入参数 GrpId 提供启动与关闭测试状态。

提示:集成者/用户应确保在调用此 API 函数之前已就绪有效的测试状态。

注:读取/收集所请求测试状态的方法/机制是实现特定的,并取决于 MSTP 接口和微控制器制造商特定指南。⌋(SRS_HTMSS_00003SRS_HTMSS_00010

[SWS_HTMSS_00037] ⌈ 如果 HTMSS 的 DET 已启用,函数 HTMSS_GetTestStatus 应检查有效的初始化。如失败,HTMSS_GetTestStatus 应抛出开发错误 HTMSS_E_NOT_INIT 并返回 HTMSS_STATUS_UNINIT。⌋

[SWS_HTMSS_00038] ⌈ 如果 HTMSS 的 DET 已启用:函数 HTMSS_GetTestStatus 应检查有效的输入参数。如有错误,HTMSS_GetTestStatus 应抛出开发错误 HTMSS_E_PARAM_INVALID 并返回 HTMSS_STATUS_INVALID。⌋

8.3.4 HTMSS_GetVersionInfo

[SWS_HTMSS_00039]

Service nameHTMSS_GetVersionInfo
Syntaxvoid HTMSS_GetVersionInfo(Std_VersionInfoType *versioninfo)
Service ID [hex]0x06
Sync/AsyncSynchronous
ReentrancyNon Reentrant
Parameters (in)None
Parameters (inout)None
Parameters (out)versioninfo用于存储本模块版本信息的指针
Return valueNone
Description返回本模块的版本信息
Available viaHTMSS.h

⌋(SRS_BSW_00407

8.4 回调通知(Call-back notifications)

无(None)。

8.5 调度函数(Scheduled functions)

无(None)。

8.6 期望接口(Expected Interfaces)

本章列出了所有来自其他模块所需接口。

8.6.1 强制接口(Mandatory Interfaces)

本章定义了满足模块核心功能所需的所有接口。

[SWS_HTMSS_00040]

API 函数头文件描述
Mcu_GetResetReasonMcu.h若支持,从硬件读取 reset 类型

⌋(SRS_BSW_00384

8.6.2 可选接口(Optional Interfaces)

本章定义了满足模块可选功能所需的接口。

[SWS_HTMSS_00041]

API 函数头文件描述
Det_ReportErrorDet.h用于报告开发错误

8.6.3 可配置接口(Configurable interfaces)

无(There are no configurable interfaces.)。

8.7 服务接口(Service Interfaces)

本章按 SWC 模板形式正式规范相应的 AUTOSAR 服务。此处描述的接口用于在应用软件和 HTMSS 模块之间生成 RTE。

8.7.1 客户端-服务器接口 - GetTestStatus(Client server interface –GetTestStatus)

[SWS_HTMSS_00042]

NameGetTestStatus
Comment--
IsServiceTrue
Variation
Possible ErrorsHTMSS_STATUS_OK测试状态 PASS
HTMSS_STATUS_NOK测试状态 FAIL
HTMSS_STATUS_INVALID测试状态为 Invalid
HTMSS_STATUS_UNINIT测试状态未初始化

GetTestStatus

Comments--
Variation
ParametersGrpIdComment:测试组类型(例如 startup 或 shutdown)
Type:HTMSS_TestGroupType
Variation:--
Direction:IN
TestResultPtrComment:用于提供测试结果连同测试的指针
Type:HTMSS_TestResultType
Variation:--
Direction:OUT
Possible ErrorsHTMSS_STATUS_OK测试状态 PASS
HTMSS_STATUS_NOK测试状态 FAIL
HTMSS_STATUS_INVALID测试状态为 Invalid
HTMSS_STATUS_UNINIT测试状态未初始化

⌋(SRS_HTMSS_00004

8.8 回调定义(Callout Definitions)

回调是必须在 ECU 集成期间添加到 HTMSS 模块的代码片段。大多数回调的内容是手写代码。HTMSS 模块配置工具为某些回调生成默认实现,由集成者手动编辑。从概念上讲,这些回调属于 ECU 集成代码。

注:错误钩子是用于在测试失败时控制 ECU 处理的集成代码。对于被开发系统来说,这可能是严重错误,因此集成者可以对测试失败作出反应(例如 reset、halt、safe state)。

8.8.1 HTMSS_StartupTestErrorHook

[SWS_HTMSS_00043]

Service nameHTMSS_StartupTestErrorHook
Syntaxvoid HTMSS_StartupTestErrorHook(void)
Service ID [hex]0x07
Sync/AsyncSynchronous
ReentrancyNon Reentrant
Parameters (in)none
Parameters (inout)none
Parameters (out)none
Return valuenone
Description若 HTMSS 提供的启动测试结果存在失败,ECU 状态管理器将调用错误钩子。在这种情况下,集成者必须根据系统要求控制 CPU 处理,即 reset、safe state 等
Available viaHTMSS.h

⌋(SRS_HTMSS_00007

8.8.2 HTMSS_ShutdownTestErrorHook

[SWS_HTMSS_00044]

Service nameHTMSS_ShutdownTestErrorHook
Syntaxvoid HTMSS_ShutdownTestErrorHook(void)
Service ID [hex]0x08
Sync/AsyncSynchronous
ReentrancyNon Reentrant
Parameters (in)none
Parameters (inout)none
Parameters (out)none
Return valuenone
Description若 HTMSS 提供的关闭测试结果存在失败,ECU 状态管理器将调用错误钩子。在这种情况下,集成者必须根据系统要求控制 CPU 处理,即 reset、safe state 等
Available viaHTMSS.h

⌋(SRS_HTMSS_00007

9 序列图(Sequence diagrams)

9.1.1 HTMSS 初始化序列图

sd HTMSS_Init sequence
┌────┐ ┌──────┐ ┌────┐ ┌────┐ ┌──────┐ ┌────┐ ┌────┐ ┌────┐
│μC │ │startup│ │EcuM│ │Integr│ │HTMSS │ │MCU │ │MSTP │ │MSTP │
│reset│ │ code  │ │    │ │ Code │ │      │ │    │ │Wrapr │ │MSTP │
└─┬──┘ └──┬───┘ └─┬──┘ └──┬─┘ └──┬───┘ └─┬──┘ └─┬──┘ └────┘
  │μC fw │         │       │      │         │       │
  │& Bootstrap  │       │      │         │       │
  │ Selftest()│         │       │      │         │       │
  │ Jump()  │         │       │      │         │       │
  │      EcuM_Init() │       │      │         │       │
  │      EcuM_AL_DriverInitOne()      │         │       │
  │      HTMSS_Init(const HTMSS_TestCfgType * ConfigPtr)         │
  │      Mcu_GetResetReason(Mcu_ResetType)        │       │
  │      Mcu_GetResetReason()        │       │
  │      alt [if McuGetReason != MCU_HWTEST_RESET)]        │
  │      Config MSTP tests()         │
  │      Config tests()        │       │
  │      Config MSTP tests()         │       │
  │      [else] │ If reset reason is 'MCU_HWTEST_RESET' then tests shall not be re-configured.
  │      HTMSS_Init()
注:HTMSS 初始化序列不应影响最近关闭测试结果

9.1.2 启动测试执行序列图

sd Sequence diagram example of startup test execution
┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐
│μC │ │start│ │EcuM│ │MCU │ │HTMSS│ │MSTP │ │MSTP │  OS
│Reset│ │ up │ │    │ │    │ │    │ │Wrapr│ │MSTP │
└─┬──┘ └─┬──┘ └─┬──┘ └─┬──┘ └─┬──┘ └─┬──┘ └─┬──┘
  │Boot strap code │
  │  BIST execute()  │
  │  Jump()    │
  │  EcuM_Init()   │
  │  HTMSS_Init()   │
  │  MSTPWrapper_Init()   │
  │   Initialize Module() │
  │   Mcu_GetResetReason(Mcu_ResetType) │
  │   Mcu_GetResetReason() │
  │  [HTMSS requires the last reset reason to determine whether to configure the MSTP tests or NOT.]  │
  │   alt [if (Mcu_ResetType != MCU_HWTEST_RESET)] │
  │    loop [Loop to configure MSTP Tests] │
  │     Config MSTP tests() │
  │     Config tests() │
  │    [else]  Tests should not be re-configured. │
  │   Mcu_GetResetReason(Mcu_ResetType) │
  │  [EcuM requires the last reset reason to collect shutdown test results(i.e. reset caused by shutdown tests execution)]  │
  │   alt [if (Mcu_ResetType == MCU_HWTEST_RESET)] │
  │    Refer: HTMSS Get shutdown test result sequence
  │   [else] │
  │    loop [Loop for all configured Startup tests] │
  │     HTMSS_StartTest(Startup) │
  │     Start MSTP tests() │
  │     Start tests() │
  │     HTMSS_StartTest() │
  │    loop [Loop for collecting test results] │
  │     HTMSS_GetTestStatus(Startup, NULLPTR) │
  │     Wait for test completion │
  │     HTMSS_GetTestStatus(Startup, *ResultPtr) │
  │     MSTP_GetTestResult() │
  │     GetTestResult() │
  │    alt [if (Startup Test Status == Fail)] │
  │     HTMSS_StartupTestErrorHook() │
  │     alt [if (Fail == CRITICAL_STATE)] │
  │      Halt or Reset State() │
  │     [else] │
  │      Critical fault judgement shall be done by the user integrated shutdown hook function. │
  │   StartOs()
注:检查 MSTP 的等待状态是实现特定的(例如 MSTP 集成指南可能为集成者考虑提供一些时序要求或轮询机制)

9.1.3 关闭测试执行序列图

sd HTMSS Shutdown Test Sequence
┌────┐ ┌────┐ ┌──────┐       ┌────┐ ┌────┐ ┌────┐ ┌────┐
│μC │ │BswM │ │Integr│       │EcuM│ │HTMSS│ │MSTP │ │MSTP │
│reset│ │     │ │ Code │       │    │ │    │ │Wrapr│ │MSTP │
└─┬──┘ └─┬──┘ └─┬────┘       └─┬──┘ └─┬──┘ └─┬──┘ └─┬──┘
  │   EcuM_SelectShutdownTarget(EcuM_ShutdownTargetType, EcuM_ShutdownModeType) │
  │   EcuM_SelectShutdownTarget(EcuM_ShutdownTargetType, EcuM_ShutdownModeType) │
  │  [EcuM_ShutdownTargetType shall be HWTEST_OFF or HWTEST_RESET in order to execute shutdown tests.] │
  │   EcuM_GoDown(uint16) │
  │   ShutdownOS() │
  │   ShutdownHook() │
  │   EcuM_Shutdown() │
  │   alt [if ((EcuMShutdownTarget == (HWTEST_OFF || HWTEST_RESET)))] │
  │    HTMSS_StartTest(Shutdown) │
  │    loop [Loop for all Shutdown tests] │
  │     MSTP_StartTest() │
  │    Execution of Shutdown Tests causes Ecu RESET. After this RESET, control comes back to EcuM. │
  │   Ecu reset() │
  │  [Refer ECU Shutdown Sequence starting from EcuM_Init() to follow the sequence immediately after the reset caused by shutdown tests execution]  │
  │   [else] │
  │   Refer ECU shutdown sequence second part, EcuM_SelectShutdownTarget with OFF OR RESET

9.1.4 MSTP 模块引发的 ECU reset 后处理最近关闭测试结果

sd Handling last shutdown results Sequence
┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌──────┐       ┌────┐
│EcuM│ │HTMSS│ │MSTP │ │MSTP │ │Integr│       │Safety│
│    │ │    │ │Wrapr│ │MSTP │ │ Code │       │SW-C │
└─┬──┘ └─┬──┘ └─┬──┘ └─┬──┘ └─┬────┘       └─┬──┘
  │  [Refer ECU Shutdown Sequence (first part) with the shutdown target HWTEST_OFF/HWTEST_RESET for the previous sequence.]  │
  │   StartOs() │
  │   Initialize SW-C() │
  │   EcuM_GetLastShutdownTarget() │
  │   EcuM_GetLastShutdownTarget() │
  │   alt [if (EcuLastShutdownTarget == (HWTEST_OFF || HWTEST_RESET))] │
  │    HTMSS_GetTestStatus(Shutdown, *ResultPtr) │
  │    [Collect last shutdown test results for application usage.] │
  │    HTMSS_GetTestStatus(Shutdown, *ResultPtr) │
  │   Evaluate last Shutdown Results() │
  │  [Application is responsible to evaluate the test results and take necessary actions e.g. store in NVM, DEM reporting for non- critical faults for later diagnosis]  │
  │   [else] │
  │   HTMSS_GetTestStatus(Startup, *ResultPtr) │
  │   HTMSS_GetTestStatus(Startup, *ResultPtr) │
  │  Refer: HTMSS_StartTest Sequence
  │   Initialize SW-C() │
  │  Refer ECU Shutdown Sequence (second part) with the shutdown target ECUM_OFF/ECUM_RESET to continue.

9.1.5 收集关闭测试结果序列图

sd HTMSS_GetTestStatus Sequence
┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐ ┌────┐        OS
│μC │ │EcuM│ │MCU │ │HTMSS│ │MSTP │ │MSTP │     (OS)
│reset│ │    │ │    │ │    │ │Wrapr│ │MSTP │
└─┬──┘ └─┬──┘ └─┬──┘ └─┬──┘ └─┬──┘ └─┬──┘
  │   MCU_GetResetReason(Mcu_ResetType) │
  │   MCU_GetResetReason() │
  │   alt [if (Mcu_ResetType != MCU_HWTEST_RESET)] │
  │    HTMSS_GetTestStatus(Shutdown, NULLPTR) │
  │    loop [Test results shall be stored in HTMSS buffer.] │
  │     MSTP_GetTestResult() │
  │     MSTP_GetTestResult() │
  │   HTMSS_GetTestStatus(Shutdown, NULLPTR) │
  │   alt [if (Shutdown Test Status == Fail)] │
  │    HTMSS_ShutdownTestErrorHook() │
  │    alt [if (Fail == CRITICAL_FAULT)] │
  │     Halt or reset state() │
  │    [else] │
  │     HTMSS_ShutdownTestErrorHook() │
  │   [else] │
  │   Refer: HTMSS Start StartUp Test Execution Sequence │
  │   StartOs()
注:测试状态报告 "fail" 必须在集成者代码(错误钩子例程)中评估以判断关键性,然后确定系统的行为。

9.1.6 系统集成 HTMSS 时的 ECU 关闭序列图

sd ECU Shutdown Sequence
┌────┐ ┌────┐ ┌────┐ ┌────┐       ┌────┐ ┌──────┐ ┌────┐ ┌────┐ ┌────┐
│μC │ │BswM │ │RTE │ │SW_C│       │EcuM│ │Integr│ │HTMSS│ │MSTP │ │MCU │
│reset│ │     │ │    │ │    │       │    │ │ Code │ │    │ │Wrapr│ │    │
└─┬──┘ └─┬──┘ └─┬──┘ └─┬──┘       └─┬──┘ └─┬────┘ └─┬──┘ └─┬──┘ └─┬──┘
  │   EcuM_SelectShutdownTarget(EcuM_ShutdownTargetType, EcuM_ShutdownModeType) │
  │   EcuM_SelectShutdownTarget(EcuM_ShutdownTargetType, EcuM_ShutdownModeType) │
  │  [EcuM_ShutdownTargetType shall be HWTEST_OFF or HWTEST_RESET in order to manage shutdown tests, which causes a reset. [Please refer Note 1 for details]] │
  │   EcuM_GoDown(Std_ReturnType, uint16) │
  │   ShutdownOS() │
  │   ShutdownHook() │
  │   EcuM_Shutdown() │
  │   alt [if ((EcuMShutdownTarget == (HWTEST_OFF || HWTEST_RESET)))] │
  │    HTMSS_StartTest(Shutdown) │
  │    Starttest() │
  │    StartTest() │
  │  [Ecu Reset after Shutdown test execution (reset is assumed to be triggered by MSTP)]  │
  │   EcuM_Init() │
  │   MCU_GetResetReason(Mcu_ResetType) │
  │   alt [if (Mcu_ResetType == MCU_HWTEST_RESET)] │
  │    HTMSS_GetTestStatus(Shutdown, NULLPTR) │
  │    StartOS() │
  │   Initialize SW-C() │
  │   alt [if (EcuLastShutdownTarget == (HWTEST_OFF || HWTEST_RESET))] │
  │    Rte_Call(GrpId, DstPtr) │
  │    HTMSS_GetTestStatus(Shutdown, *ResultPtr) │
  │    HTMSS_GetTestStatus(Shutdown, *ResultPtr) │
  │    Evaluates Shutdown TestResult() │
  │   [At this stage, application user can store the test results in NVM, report DEM, if needed]  │
  │   BswM_MainFunction() │
  │   Rte_Read(Shutdown) │
  │   Rte_Read(Shutdown) │
  │   EcuM_SelectShutdownTarget(OFF || RESET) │
  │   EcuM_SelectShutdownTarget() │
  │   EcuM_GoDown() │
  │   ShutdownOS() │
  │   ShutdownHook() │
  │   EcuM_Shutdown()
注:当系统中集成了 HTMSS 且需要由系统执行关闭测试时,需要两次应用介入(即关闭测试会导致一次 Ecu reset 以管理关闭过程)。
1. 第一次应用应选择关闭目标 ECUM_SHUTDOWN_HWTEST_RESET/ECUM_SHUTDOWN_HWTEST_OFF。
重要:以上关闭目标应存储在非易失性内存中(实现特定),以便第二次应用介入完成关闭过程。
按照上述序列从步骤 1 开始处理,直到控制权返回给应用 SWC。
2. 此时应用应选择 ECUM_SHUTDOWN_TARGET_OFF/ECUM_SHUTDOWN_TARGET_RESET 以完成实际的 ECU 关闭。

9.1.7 应用 SWC 收集测试结果序列图

sd AppInSWC_HTMSS interaction Sequence
┌────┐ ┌────┐ ┌────┐
│SW-C│ │RTE │ │HTMSS│
└─┬──┘ └─┬──┘ └─┬──┘
  │   Rte_Call(GrpId, DstPtr) │
  │   HTMSS_GetTestStatus(GrpId, *TestResultPtr) │
  │   HTMSS_GetTestStatus() │
  │   Rte_Call() │
注:应用与 HTMSS 之间应遵循客户端-服务器交互以收集启动和关闭测试结果。

10 配置规范(Configuration specification)

以下章节汇总了所有配置参数。参数的详细含义在各章中描述。

10.1 容器与配置参数(Containers and configuration parameters)

以下章节汇总了所有配置参数。然而本章内容旨在作为参考示例提供。实际实现由规范使用者决定。

图 8:容器结构概览(UML 类图,参见 PDF 第 34-36 页)

HTTMS (EcucModuleDef, 0..1)
├── HTTMSSGeneral (1..1)
│   ├── HTMSSDevErrorDetect (EcucBooleanParamDef, default=false)
│   └── HTMSSVersionInfoApi (EcucBooleanParamDef, default=false)
└── HTTMSSConfigSet (1..*)
    └── HTMSSSet (1..*)
        ├── HTMSSSetGrp (EcucParameterConfContainerDef, Multiplicity 1..2)
        │   └── HTMSSSetGrpType (EcucEnumerationParamDef, Range=STARTUP|SHUTDOWN)
        ├── HTMSSSetId (EcucIntegerParamDef, Multiplicity 1, Range=0..255)
        ├── HTMSSSetTestCfgAPI (EcucParamConfContainerDef, Multiplicity 1)
        │   └── HTMSSStartTestAPI (EcucParamConfContainerDef, Multiplicity 1)
        ├── HTMSSSetTestStatusAPI (EcucParamConfContainerDef, Multiplicity 1)
        └── HTMSSSetTestReference (EcucReferenceDef, Multiplicity 1)

10.1.1 HTTMS

SWS ItemECUC_HTTMS_00001
Module NameHTTMS
Module Description硬件测试管理启动与关闭(HTMSS)模块的配置
Post-Build Variant Supportfalse
Supported Config VariantsVARIANT-PRE-COMPILE

Included Containers

Container NameMultiplicityScope / Dependency
HTTMSSConfigSet1..*这是包含 HTMSS 模块配置参数和子容器的基础容器
HTTMSSGeneral1该容器保存 HTMSS 模块的通用参数

10.1.2 HTTMSSGeneral

SWS ItemECUC_HTTMS_00619
Container NameHTTMSSGeneral
Description该容器保存 HTMSS 模块的通用参数

Configuration Parameters

SWS ItemECUC_HTTMS_00002
NameHTMSSDevErrorDetect
Parent ContainerHTTMSSGeneral
Description启用 DET 的开关
Multiplicity1
TypeEcucBooleanParamDef
Default valuefalse
Post-Build Variant Valuefalse
Value Configuration ClassPre-compile timeX All Variants
Link time--
Post-build time--
Scope / Dependencyscope: local
SWS ItemECUC_HTTMS_00003
NameHTMSSVersionInfoApi
Parent ContainerHTTMSSGeneral
Description激活/禁用版本信息 API
Multiplicity1
TypeEcucBooleanParamDef
Default valuefalse
Post-Build Variant Valuefalse
Value Configuration ClassPre-compile timeX All Variants
Link time--
Post-build time--
Scope / Dependencyscope: local

No Included Containers

10.1.3 HTTMSSConfigSet

SWS ItemECUC_HTTMS_00012
Container NameHTTMSSConfigSet
Description这是包含 HTMSS 模块配置参数和子容器的基础容器

Configuration Parameters

No Included Containers

详细 UML 类图展示了以下嵌套容器:

10.2 发布信息(Published Information)

详情请参见 SWS_BSWGeneral 中的第 10.3 章"发布信息"。


📋 校对记录

L1 量化校对:

保留原文项目:术语 HTMSS/MSTP/BSW/RTE/EcuM/BswM/Det/Dem/MCU/ECU/BIST/ADC/ECC/SW-C/Safety SW-C/WdgM/SRS/SWS/ECUC_*/Service ID、uint8/uint16/Std_ReturnType/Std_VersionInfoType/Std_Types、EcucBooleanParamDef、EcucFunctionNameDef、EcucIntegerParamDef、EcucModuleDef、EcucParamConfContainerDef、EcucDefinitionCollection、EcucEnumerationParamDef、EcucReferenceDef、VARIANT-PRE-COMPILE、HTMSS.h/Mcu.h/Det.h/HTMSS_.c、MCU_HWTEST_RESETHTMSS_UINIT/INIT/BUSY/IDLEHTMSS_STATUS_OK/NOK/INVALID/UNINITHTMSS_STARTUP/SHUTDOWN/STARTUP_SHUTDOWNHWTEST_OFF/HWTEST_RESET、NULL_PTR、Variant PB/PC、E_OK/E_NOT_OK、HW-BIST、HW-Reset、Low-Level Initialization、CRITICAL_FAULT、CRITICAL_STATE、NVM、StartOS()ShutdownOS()ShutdownHook()EcuM_GoDownEcuM_SelectShutdownTargetEcuM_GetLastShutdownTargetMcu_GetResetReasonDet_ReportErrorRte_CallRte_ReadConfigPtrGrpIdRequestTestResultPtrversioninfoTestResultTestSignature

翻译日期:2026-06-13 · 校对人:opencode translator · 页数:36 页 · 评级:A 级(结构与原文 1:1 完整对应)