AUTOSAR 核心测试模块详解
目录
1. 概述
1.1 核心测试模块的作用
AUTOSAR Core Test Driver(核心测试驱动)是AUTOSAR标准中用于测试微控制器核心功能的基础软件模块。该模块位于微控制器抽象层(MCAL)中,提供直接访问微控制器核心的能力,无需通过中间软件层。核心测试模块的主要职责包括:
- 配置、启动、轮询和终止核心测试
- 通知应用程序测试结果
- 以预定义方式返回测试结果
- 验证专用核心功能,如通用寄存器或算术逻辑单元(ALU)
这些功能对于确保汽车电子控制单元(ECU)的可靠性和安全性至关重要,尤其是在汽车功能安全标准(如ISO 26262)的要求下。
1.2 核心测试驱动的应用场景
CoreTest模块可以在以下两种场景中使用:
- 上电/启动测试:在ECU启动阶段验证核心功能
- 运行时测试:在应用程序运行期间执行后台测试
模块提供两种测试执行模式:
- 前台测试:同步执行,调用方被阻塞直到测试完成
- 后台测试:由BSW调度器周期性触发,可被高优先级任务中断
CoreTest模块特别适用于功能安全关键系统,提供了机制以识别潜在的硬件故障。
2. 架构与集成
2.1 总体架构
以下架构图展示了CoreTest在AUTOSAR层次结构中的位置以及与其他模块的关系:
图2.1 AUTOSAR CoreTest模块架构图
CoreTest模块位于微控制器抽象层(MCAL),直接与微控制器核心硬件交互。其主要组成部分包括:
- 测试服务(Test Services):提供API接口,包括测试配置、启动、结果获取等功能
- 测试资源(Test Resources):管理被测试的硬件资源
- 结果管理(Result Management):处理和存储测试结果
核心测试驱动与以下模块交互:
- 安全应用和诊断应用:调用API获取测试结果
- BSW调度器:周期性触发
CorTst_MainFunction
- DEM(诊断事件管理器):报告生产错误
- DET(默认错误跟踪器):处理开发错误
2.2 与其他模块的交互
下面的序列图详细说明了CoreTest模块与其他组件的交互流程:
图2.2 AUTOSAR CoreTest模块交互序列图
序列图展示了以下关键交互流程:
-
初始化阶段:
- 安全应用调用
CorTst_Init()
初始化模块 - CoreTest验证参数并初始化硬件资源
- 安全应用调用
-
前台测试执行:
- 安全应用调用
CorTst_Start()
执行特定测试 - CoreTest执行测试并通过DEM报告结果
- 应用通过
CorTst_GetTestResult()
获取结果
- 安全应用调用
-
后台测试执行:
- BSW调度器周期性调用
CorTst_MainFunction()
- CoreTest执行原子测试序列
- 高优先级任务可能中断测试执行
- 测试完成后更新状态并报告结果
- BSW调度器周期性调用
-
测试取消:
- 安全应用可以通过
CorTst_Abort()
取消运行中的测试
- 安全应用可以通过
-
反初始化:
- 应用可通过
CorTst_DeInit()
反初始化模块
- 应用可通过
3. 测试流程与状态
3.1 状态转换图
CoreTest模块的状态转换关系如下图所示:
图3.1 AUTOSAR CoreTest模块状态转换图
状态转换图展示了模块的四个主要状态:
-
未初始化(
CORTST_UNINIT
):- 系统启动后的初始状态
- 模块未初始化,不可用于测试
- 通过
CorTst_Init()
转换到已初始化状态
-
已初始化(
CORTST_INIT
):- 模块已初始化,可以开始测试
- 可调用
CorTst_Start()
执行前台测试 - 可调用
CorTst_MainFunction()
开始后台测试 - 通过
CorTst_DeInit()
返回未初始化状态
-
后台运行(
CORTST_RUNNING_BGND
):- CoreTest正在后台执行测试
- 测试完成后自动返回已初始化状态
- 可被
CorTst_Abort()
中断转入取消状态
-
测试取消(
CORTST_ABORT
):- 执行取消状态,当前测试被中断
- 自动转换回已初始化状态
值得注意的是,前台测试执行不改变模块的状态,它在已初始化状态下执行并返回结果。
3.2 测试执行流程
以下活动图详细展示了CoreTest的测试执行流程:
图3.2 AUTOSAR CoreTest测试执行流程图
测试执行流程包含以下关键概念:
- 测试间隔:完整的测试周期,特别是在后台模式下
- 部分测试:测试间隔内可中断的测试单元
- 原子序列:不可中断的测试最小单元
前台测试和后台测试的主要区别:
- 前台测试:同步执行,阻塞调用方,单次调用直接返回结果
- 后台测试:周期性执行,可被中断,由BSW调度器调用
在后台测试中,CorTstTestIntervalId
会在每个测试间隔完成后自增,用于标识不同的测试周期。
4. 数据结构与API
4.1 数据结构
CoreTest模块定义了多个数据类型,如下图所示:
图4.1 AUTOSAR CoreTest模块类图
主要数据类型包括:
-
CorTst_ConfigType
:- 配置数据结构,具体内容由实现者定义
- 通常包含硬件资源配置和测试配置信息
-
CorTst_StateType
:- 表示模块当前状态的枚举类型
- 包括:
CORTST_ABORT
(0x00)、CORTST_INIT
(0x01)、CORTST_UNINIT
(0x02)、CORTST_RUNNING_BGND
(0x03)
-
CorTst_ResultType
:- 表示测试结果的枚举类型
- 包括:
CORTST_E_NOT_OK
(0x00)、CORTST_E_OKAY
(0x01)、CORTST_E_NOT_TESTED
(0x02)
-
CorTst_CsumSignatureType
与CorTst_CsumSignatureBgndType
:- 用于返回测试签名或校验和
- 基于目标平台可能是16位或32位
-
CorTst_ErrOkType
:- 包含测试结果和测试间隔ID
- 用于完整描述测试状态
-
CorTst_TestIdFgndType
:- 用于标识前台测试的类型
- 在调用
CorTst_Start()
时使用
4.2 API接口
CoreTest模块提供以下API接口:
-
初始化相关:
CorTst_Init(const CorTst_ConfigType* ConfigPtr)
:初始化模块CorTst_DeInit(void)
:反初始化模块CorTst_GetVersionInfo(Std_VersionInfoType* versioninfo)
:获取版本信息
-
测试控制:
CorTst_Start(CorTst_TestIdFgndType TestId)
:启动前台测试CorTst_Abort(void)
:取消当前测试CorTst_MainFunction(void)
:执行后台测试,由BSW调度器周期性调用
-
结果查询:
CorTst_GetTestResult(CorTst_ErrOkType* TestResult)
:获取前台测试结果CorTst_GetTestResultBgnd(CorTst_ErrOkType* TestResult)
:获取后台测试结果CorTst_GetTestSignature(CorTst_CsumSignatureType* TestSign)
:获取前台测试签名CorTst_GetTestSignatureBgnd(CorTst_CsumSignatureBgndType* TestSign)
:获取后台测试签名CorTst_GetCurrentStatus(CorTst_StateType* Status)
:获取当前状态
所有API函数都遵循AUTOSAR命名规范,使用CorTst_
前缀。
5. 错误处理机制
5.1 开发错误
CoreTest模块定义了以下开发错误,这些错误主要在开发和调试阶段检测到:
错误代码 | 十六进制值 | 描述 |
---|---|---|
CORTST_E_PARAM_INV | 0x11 | API调用使用了无效参数范围 |
CORTST_E_UNINIT | 0x01 | 在模块初始化前调用API |
CORTST_E_ALREADY_INITIALIZED | 0x20 | 在未先调用CorTst_DeInit() 的情况下重复调用CorTst_Init() |
CORTST_E_PARAM_POINTER | 0x23 | 为CorTst_GetVersionInfo() 或CorTst_GetCurrentStatus() 提供了NULL指针 |
CORTST_E_STATUS_FAILURE | 0x24 | 在意外状态下调用特定API |
这些错误由DET(默认错误跟踪器)模块报告,并可通过开发工具监控和调试。
5.2 生产错误
CoreTest模块定义了扩展生产错误CORTST_E_CORE_FAILURE
,它在以下情况下报告:
- 在测试期间检测到核心故障
- 通过DEM(诊断事件管理器)报告
- 支持
PREFAILED
状态(测试失败)和PREPASSED
状态(测试通过)
由于核心测试的特殊性,某些无法通过软件可靠报告的错误(例如ALU、MAC等内部错误)可能不会被捕获。这些限制取决于硬件平台和实现。
6. 总结
AUTOSAR Core Test驱动模块在汽车电子系统安全性和可靠性验证中扮演着重要角色。它提供了以下主要优势:
- 灵活的测试模式:支持前台和后台测试模式,适应不同的测试需求
- 全面的核心测试:提供CPU寄存器、ALU、地址生成、内存接口、MPU/MMU和缓存控制器测试
- 安全集成:与AUTOSAR诊断框架无缝集成,支持功能安全需求
- 微控制器抽象:作为MCAL层的一部分,提供了硬件平台无关的抽象接口
以下是核心测试模块在不同应用场景中的重要性:
-
功能安全系统:
- 支持ISO 26262安全标准要求
- 提供硬件故障检测机制
- 为安全相关应用提供可靠性保证
-
ECU生命周期管理:
- 在启动阶段验证核心功能
- 在运行时提供后台监控能力
- 支持测试结果和签名验证
-
诊断与监控:
- 与诊断系统集成
- 提供标准化的错误报告
- 支持故障管理和恢复策略
CoreTest模块的设计考虑了微控制器资源共享和IP保护等因素,通常由硅制造商实现并作为库提供给应用开发者。对于安全关键型汽车应用,CoreTest提供了重要的硬件验证保障。