AUTOSAR硬件测试管理模块(HTMSS)详解
目录
1. 概述
1.1 HTMSS模块简介
硬件测试管理启动和关闭模块(Hardware Test Management Start up and Shutdown,简称HTMSS)是AUTOSAR标准软件平台中的一个基础软件模块,位于服务层。该模块的主要目的是提供一个基础架构,用于集成和转换微控制器制造商特定的启动和关闭测试(例如内置自检测试BIST)的测试结果/状态,并将这些信息提供给AUTOSAR标准软件平台内的应用软件组件。
HTMSS模块通过为应用软件组件提供测试状态/结果,使得应用软件能够根据测试结果评估系统行为,从而实现ECU的可靠操作。特别是对于安全相关的ECU,HTMSS概念可以被考虑集成到AUTOSAR架构中,以实现安全目标。
1.2 HTMSS模块功能概览
HTMSS模块提供以下核心功能:
- 收集测试结果:从微控制器特定测试包(MSTP)收集测试结果/状态
- 配置测试:配置MSTP测试,包括启动和关闭测试
- 启动测试执行:触发测试执行
- 提供测试状态:向EcuM模块和应用软件组件提供MSTP测试状态,用于评估系统行为
- 测试结果处理:提供回调函数以处理测试失败条件
HTMSS模块的前置集成要求包括:
- 在设备开发过程中能够运行微控制器特定测试包(MSTP)的启动和关闭测试
- HTMSS模块能够访问测试结果/状态
- 可以通过HTMSS模块配置MSTP启动和关闭测试
1.3 HTMSS模块在AUTOSAR软件架构中的位置
HTMSS模块集成在AUTOSAR基础软件服务层,与多个AUTOSAR模块和应用软件组件进行交互。下图展示了HTMSS模块在AUTOSAR软件架构中的功能集成:
图1.1 HTMSS模块架构图
从上图可以看出,HTMSS模块在AUTOSAR架构中处于服务层,向上连接应用软件组件,向下通过MSTP包装器与微控制器特定测试包(MSTP)进行交互。MSTP包装器是一个中间模块,用于从AUTOSAR标准化模块HTMSS访问MSTP模块,可以手动实现或使用AUTOSAR方法/流程生成/配置。
2. HTMSS模块架构
2.1 模块架构图解析
HTMSS模块架构图展示了该模块与AUTOSAR软件架构中其他组件的交互关系。下面对架构图中的主要组件进行详细解析:
-
应用层
- 应用软件组件(AppSWC):通过RTE与HTMSS模块交互,获取测试结果信息并据此做出决策
-
服务层
- 硬件测试管理模块(HTMSS):本模块的核心实现,负责管理硬件测试流程
- ECU状态管理器(EcuM):控制ECU的启动和关闭过程,与HTMSS协作执行测试
- 默认错误跟踪器(DET):记录开发过程中的错误信息
-
ECU抽象层
- MCU驱动:提供对微控制器硬件的访问接口
-
复杂驱动层
- 微控制器特定测试包包装器(MSTP Wrapper):连接AUTOSAR标准模块与非标准的MSTP模块
-
AUTOSAR外部
- 微控制器特定测试包(MSTP):包含微控制器制造商提供的特定测试功能
2.2 与其他模块的依赖关系
HTMSS模块与以下AUTOSAR组件有重要的依赖关系:
-
EcuM(ECU状态管理器)
- EcuM访问HTMSS服务以启动测试并收集测试结果
- HTMSS的主要功能在EcuM的启动和关闭阶段执行
-
应用软件组件(Application SWC)
- 应用软件组件通过RTE收集HTMSS测试结果进行评估
- 必要时,测试结果可存储在非易失性存储器中供后续使用
-
RTE(运行时环境)
- 通过RTE数据交换,测试结果/状态在HTMSS模块和应用软件层之间共享
-
MSTP(微控制器特定测试包)
- HTMSS模块通过MSTP包装器与MSTP模块交互
- 交互功能包括:配置启动和关闭测试、触发测试执行、收集测试结果
-
MCU(微控制器驱动)
- HTMSS从MCU驱动接收复位原因(例如由关闭测试执行引起的复位)
-
DET(默认错误跟踪器)
- 如果启用DET,HTMSS模块会通知默认错误跟踪器关于检测到的开发错误
3. HTMSS状态机
3.1 模块状态转换详解
HTMSS模块遵循一个定义良好的状态机,下图展示了其状态转换流程:
图3.1 HTMSS模块状态机图
该状态机包含四个主要状态:
-
HTMSS_UNINIT
状态- HTMSS模块的默认初始状态
- 表示模块尚未初始化,无法执行任何功能操作
-
HTMSS_INIT
状态- 表示模块已完成初始化
- 在此状态下,模块已准备好但尚未处理任何测试请求
-
HTMSS_IDLE
状态- 表示模块处于空闲状态,没有测试请求正在进行
- 模块已完全初始化并准备好处理测试请求
-
HTMSS_BUSY
状态- 表示模块正在处理测试请求
- 在此状态下,模块正在执行启动或关闭测试
3.2 状态转换触发条件
状态之间的转换由特定触发条件引起:
-
UNINIT → INIT
- 触发条件:成功调用
HTMSS_Init()
函数 - 功能:完成模块初始化,设置内部数据结构
- 触发条件:成功调用
-
INIT → IDLE
- 触发条件:初始化完成后自动转换
- 功能:模块进入准备接收测试请求的空闲状态
-
IDLE → BUSY
- 触发条件:收到测试请求(如启动测试或关闭测试)
- 功能:模块开始执行测试操作
-
BUSY → IDLE
- 触发条件:当前测试操作完成
- 功能:模块完成测试并返回空闲状态,准备处理下一个测试请求
-
任意状态 → UNINIT
- 触发条件:调用
HTMSS_DeInit()
函数或系统复位 - 功能:模块重置到未初始化状态
- 触发条件:调用
状态机的设计确保HTMSS模块在任何时刻都处于定义明确的状态,并且只能通过规定的触发条件在状态之间转换,从而提高系统的可靠性和可预测性。
4. HTMSS模块操作序列
4.1 初始化序列
HTMSS模块的初始化过程是确保模块正确工作的关键步骤。下图展示了HTMSS初始化的典型序列:
图4.1 HTMSS模块初始化序列图
初始化序列的关键步骤如下:
-
初始化触发
- ECU状态管理器(EcuM)在启动阶段调用
HTMSS_Init()
函数 - 传入配置参数指针,指向预先定义的HTMSS配置数据
- ECU状态管理器(EcuM)在启动阶段调用
-
开发错误检查
- 如果DET已启用,HTMSS会检查配置指针的有效性
- 如果检测到错误,会通过
Det_ReportError()
报告开发错误
-
模块初始化
- 初始化HTMSS内部变量和数据结构
- 将模块状态从
HTMSS_UNINIT
设置为HTMSS_INIT
-
MCU驱动交互
- 根据需要与MCU驱动交互,获取复位原因信息
- 确认是否由MSTP测试触发了复位
-
状态转换
- 初始化完成后,模块状态自动从
HTMSS_INIT
转换到HTMSS_IDLE
- 返回初始化结果到EcuM
- 初始化完成后,模块状态自动从
初始化过程的成功完成是HTMSS模块正常运行的前提。此序列确保模块在启动其他功能前已经正确设置所有必要的内部状态和数据结构。
4.2 启动测试序列
启动测试序列描述了HTMSS模块如何触发和管理启动阶段的硬件测试。以下序列图展示了这一过程:
图4.2 HTMSS启动测试序列图
启动测试序列的主要步骤包括:
-
测试请求
- ECU状态管理器在适当的启动阶段调用
HTMSS_ExecuteStartupTest()
- 指定要执行的测试组ID
- ECU状态管理器在适当的启动阶段调用
-
前置条件检查
- HTMSS检查模块是否已初始化,以及参数是否有效
- 如果检测到错误,向DET报告并返回错误状态
-
测试执行
- HTMSS进入BUSY状态,并通过MSTP包装器触发
MSTP_ExecuteStartupTest()
- MSTP执行相应的硬件测试并返回测试结果
- HTMSS进入BUSY状态,并通过MSTP包装器触发
-
结果处理
- HTMSS接收测试结果,并更新内部测试状态
- 如果配置了错误回调(ErrorHook),则在测试失败时调用
-
结果通知
- HTMSS回到IDLE状态,并将测试结果返回给EcuM
- 测试结果也可通过RTE提供给应用软件组件
-
应用层处理
- 应用软件组件可通过
HTMSS_GetTestStatus()
API获取测试结果 - 根据测试结果做出相应的系统行为决策
- 应用软件组件可通过
启动测试序列是HTMSS模块的核心功能之一,它使系统能够在启动阶段验证硬件的完整性和功能正确性。
4.3 关闭测试序列
关闭测试序列描述了在ECU关闭过程中HTMSS如何管理和执行测试。下图展示了关闭测试的典型交互流程:
图4.3 HTMSS关闭测试序列图
关闭测试序列的关键步骤如下:
-
关闭测试启动
- ECU状态管理器在关闭准备阶段调用
HTMSS_ExecuteShutdownTest()
- 指定要执行的关闭测试组ID
- ECU状态管理器在关闭准备阶段调用
-
参数验证
- HTMSS验证模块状态和输入参数
- 如果检测到错误,通过DET报告并返回错误码
-
测试执行准备
- HTMSS进入BUSY状态
- 准备必要的测试参数和环境
-
测试触发
- 通过MSTP包装器调用
MSTP_ExecuteShutdownTest()
- MSTP执行指定的关闭测试
- 通过MSTP包装器调用
-
结果处理
- MSTP返回测试结果给HTMSS
- HTMSS更新内部测试状态记录
-
错误处理
- 如果测试失败且配置了
ShutdownTestErrorHook
- 调用错误回调函数进行错误处理
- 如果测试失败且配置了
-
存储测试结果
- 关闭测试结果可能需要在复位后保留
- 结果可以存储在需要保留的内存区域或非易失性存储器中
-
系统关闭处理
- 根据测试结果和系统配置,可能进行系统复位或继续关闭流程
- 返回执行结果给EcuM
关闭测试序列特别重要,因为它执行的测试可能由于时间原因不适合在其他阶段执行,并且能够将结果保存供下次启动时评估。
5. HTMSS模块配置模型
5.1 配置类图解析
HTMSS模块的配置结构是通过类图表示的,展示了模块的数据类型和配置参数。下图展示了HTMSS配置模型:
图5.1 HTMSS模块配置类图
HTMSS配置模型包含以下主要组件:
-
数据类型定义
HTMSS_TestStatusType
:测试状态枚举,包括OK、NOK、INVALID和UNINITHTMSS_TestGroupModeType
:测试组模式枚举,定义测试执行方式HTMSS_TestPhaseType
:测试阶段枚举,区分启动和关闭测试
-
配置容器
HTMSS
:根容器,包含所有HTMSS模块配置HTMSSGeneral
:通用配置参数,如开发错误检测开关、版本信息等HTMSSConfigSet
:配置集合,包含测试组定义和参数
-
测试组配置
HTMSSStartupTestGroup
:启动测试组配置HTMSSShutdownTestGroup
:关闭测试组配置HTMSSTestResource
:测试资源配置,定义要测试的具体硬件资源
-
回调配置
HTMSSStartupTestErrorHook
:启动测试错误回调函数配置HTMSSShutdownTestErrorHook
:关闭测试错误回调函数配置
5.2 配置参数说明
HTMSS模块的配置参数可以分为以下几类:
-
通用配置参数
HTMSS_DEV_ERROR_DETECT
:开发错误检测开关HTMSS_VERSION_INFO_API
:版本信息API启用开关HTMSS_TEST_RESULTS_STORAGE
:测试结果存储方式设置
-
测试组配置参数
HTMSSTestGroupId
:测试组标识符,唯一标识每个测试组HTMSSTestGroupMode
:测试组模式,定义测试执行方式(同步/异步)HTMSSTestGroupPriority
:测试组优先级,影响测试执行顺序
-
测试资源配置参数
HTMSSResourceId
:资源标识符,指定要测试的硬件资源HTMSSResourceName
:资源名称,描述性信息HTMSSResourceTestParams
:资源测试参数,控制测试行为
-
回调配置参数
HTMSSStartupErrorHookRef
:启动错误回调函数引用HTMSSShutdownErrorHookRef
:关闭错误回调函数引用
这些配置参数通过适当设置,使HTMSS模块能够适应不同的硬件平台和应用需求,实现灵活的硬件测试管理。配置参数的值通常在构建时确定,存储在ROM中,并在运行时由HTMSS模块读取使用。
6. 总结
AUTOSAR硬件测试管理模块(HTMSS)是一个关键的基础软件组件,为AUTOSAR平台提供了标准化的接口,用于管理和执行微控制器硬件测试,特别是在ECU启动和关闭阶段。
HTMSS模块的核心优势:
-
标准化接口
- 提供统一的标准化接口访问非AUTOSAR的硬件测试功能
- 简化了不同微控制器测试包与AUTOSAR软件的集成
-
灵活的测试配置
- 支持配置不同的测试组和测试资源
- 可以根据具体需求调整测试执行策略
-
错误处理机制
- 通过错误回调提供灵活的错误处理机制
- 支持系统根据测试结果自动调整行为
-
安全目标支持
- 为安全相关的ECU提供硬件诊断功能
- 有助于实现功能安全标准(如ISO 26262)的要求
应用场景:
-
安全关键型ECU
- 在需要高可靠性的安全关键型ECU中,HTMSS提供必要的硬件诊断能力
- 通过早期检测硬件故障减少系统风险
-
需要硬件监控的系统
- 在需要持续监控硬件状态的系统中,提供标准化的测试结果收集机制
- 便于实现自动化的故障检测和处理
-
复杂ECU初始化流程
- 在具有复杂启动和关闭需求的ECU中,提供结构化的测试管理
- 确保系统状态在各个阶段都得到适当验证
HTMSS模块通过在AUTOSAR架构中集成硬件测试功能,增强了系统的可靠性和安全性,是构建高质量汽车电子控制系统的重要组件。