AUTOSAR图解==>AUTOSAR_SWS_CoreTest

AUTOSAR 核心测试模块详解

AUTOSAR Core Test驱动模块(CorTst)的架构、功能和应用

目录


1. 概述

1.1 核心测试模块的作用

AUTOSAR Core Test Driver(核心测试驱动)是AUTOSAR标准中用于测试微控制器核心功能的基础软件模块。该模块位于微控制器抽象层(MCAL)中,提供直接访问微控制器核心的能力,无需通过中间软件层。核心测试模块的主要职责包括:

  • 配置、启动、轮询和终止核心测试
  • 通知应用程序测试结果
  • 预定义方式返回测试结果
  • 验证专用核心功能,如通用寄存器或算术逻辑单元(ALU)

这些功能对于确保汽车电子控制单元(ECU)的可靠性和安全性至关重要,尤其是在汽车功能安全标准(如ISO 26262)的要求下。

1.2 核心测试驱动的应用场景

CoreTest模块可以在以下两种场景中使用:

  1. 上电/启动测试:在ECU启动阶段验证核心功能
  2. 运行时测试:在应用程序运行期间执行后台测试

模块提供两种测试执行模式:

  • 前台测试:同步执行,调用方被阻塞直到测试完成
  • 后台测试:由BSW调度器周期性触发,可被高优先级任务中断

CoreTest模块特别适用于功能安全关键系统,提供了机制以识别潜在的硬件故障。


2. 架构与集成

2.1 总体架构

以下架构图展示了CoreTest在AUTOSAR层次结构中的位置以及与其他模块的关系:

在这里插入图片描述

图2.1 AUTOSAR CoreTest模块架构图

CoreTest模块位于微控制器抽象层(MCAL),直接与微控制器核心硬件交互。其主要组成部分包括:

  1. 测试服务(Test Services):提供API接口,包括测试配置、启动、结果获取等功能
  2. 测试资源(Test Resources):管理被测试的硬件资源
  3. 结果管理(Result Management):处理和存储测试结果

核心测试驱动与以下模块交互:

  • 安全应用诊断应用:调用API获取测试结果
  • BSW调度器:周期性触发CorTst_MainFunction
  • DEM(诊断事件管理器):报告生产错误
  • DET(默认错误跟踪器):处理开发错误

2.2 与其他模块的交互

下面的序列图详细说明了CoreTest模块与其他组件的交互流程:

在这里插入图片描述

图2.2 AUTOSAR CoreTest模块交互序列图

序列图展示了以下关键交互流程:

  1. 初始化阶段

    • 安全应用调用CorTst_Init()初始化模块
    • CoreTest验证参数并初始化硬件资源
  2. 前台测试执行

    • 安全应用调用CorTst_Start()执行特定测试
    • CoreTest执行测试并通过DEM报告结果
    • 应用通过CorTst_GetTestResult()获取结果
  3. 后台测试执行

    • BSW调度器周期性调用CorTst_MainFunction()
    • CoreTest执行原子测试序列
    • 高优先级任务可能中断测试执行
    • 测试完成后更新状态并报告结果
  4. 测试取消

    • 安全应用可以通过CorTst_Abort()取消运行中的测试
  5. 反初始化

    • 应用可通过CorTst_DeInit()反初始化模块

3. 测试流程与状态

3.1 状态转换图

CoreTest模块的状态转换关系如下图所示:

在这里插入图片描述

图3.1 AUTOSAR CoreTest模块状态转换图

状态转换图展示了模块的四个主要状态:

  1. 未初始化(CORTST_UNINIT

    • 系统启动后的初始状态
    • 模块未初始化,不可用于测试
    • 通过CorTst_Init()转换到已初始化状态
  2. 已初始化(CORTST_INIT

    • 模块已初始化,可以开始测试
    • 可调用CorTst_Start()执行前台测试
    • 可调用CorTst_MainFunction()开始后台测试
    • 通过CorTst_DeInit()返回未初始化状态
  3. 后台运行(CORTST_RUNNING_BGND

    • CoreTest正在后台执行测试
    • 测试完成后自动返回已初始化状态
    • 可被CorTst_Abort()中断转入取消状态
  4. 测试取消(CORTST_ABORT

    • 执行取消状态,当前测试被中断
    • 自动转换回已初始化状态

值得注意的是,前台测试执行不改变模块的状态,它在已初始化状态下执行并返回结果。

3.2 测试执行流程

以下活动图详细展示了CoreTest的测试执行流程:

在这里插入图片描述

图3.2 AUTOSAR CoreTest测试执行流程图

测试执行流程包含以下关键概念:

  1. 测试间隔:完整的测试周期,特别是在后台模式下
  2. 部分测试:测试间隔内可中断的测试单元
  3. 原子序列:不可中断的测试最小单元

前台测试和后台测试的主要区别:

  • 前台测试:同步执行,阻塞调用方,单次调用直接返回结果
  • 后台测试:周期性执行,可被中断,由BSW调度器调用

在后台测试中,CorTstTestIntervalId会在每个测试间隔完成后自增,用于标识不同的测试周期。


4. 数据结构与API

4.1 数据结构

CoreTest模块定义了多个数据类型,如下图所示:

在这里插入图片描述

图4.1 AUTOSAR CoreTest模块类图

主要数据类型包括:

  1. CorTst_ConfigType

    • 配置数据结构,具体内容由实现者定义
    • 通常包含硬件资源配置和测试配置信息
  2. CorTst_StateType

    • 表示模块当前状态的枚举类型
    • 包括:CORTST_ABORT(0x00)、CORTST_INIT(0x01)、CORTST_UNINIT(0x02)、CORTST_RUNNING_BGND(0x03)
  3. CorTst_ResultType

    • 表示测试结果的枚举类型
    • 包括:CORTST_E_NOT_OK(0x00)、CORTST_E_OKAY(0x01)、CORTST_E_NOT_TESTED(0x02)
  4. CorTst_CsumSignatureTypeCorTst_CsumSignatureBgndType

    • 用于返回测试签名或校验和
    • 基于目标平台可能是16位或32位
  5. CorTst_ErrOkType

    • 包含测试结果和测试间隔ID
    • 用于完整描述测试状态
  6. CorTst_TestIdFgndType

    • 用于标识前台测试的类型
    • 在调用CorTst_Start()时使用

4.2 API接口

CoreTest模块提供以下API接口:

  1. 初始化相关

    • CorTst_Init(const CorTst_ConfigType* ConfigPtr):初始化模块
    • CorTst_DeInit(void):反初始化模块
    • CorTst_GetVersionInfo(Std_VersionInfoType* versioninfo):获取版本信息
  2. 测试控制

    • CorTst_Start(CorTst_TestIdFgndType TestId):启动前台测试
    • CorTst_Abort(void):取消当前测试
    • CorTst_MainFunction(void):执行后台测试,由BSW调度器周期性调用
  3. 结果查询

    • 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_INV0x11API调用使用了无效参数范围
CORTST_E_UNINIT0x01在模块初始化前调用API
CORTST_E_ALREADY_INITIALIZED0x20在未先调用CorTst_DeInit()的情况下重复调用CorTst_Init()
CORTST_E_PARAM_POINTER0x23CorTst_GetVersionInfo()CorTst_GetCurrentStatus()提供了NULL指针
CORTST_E_STATUS_FAILURE0x24在意外状态下调用特定API

这些错误由DET(默认错误跟踪器)模块报告,并可通过开发工具监控和调试。

5.2 生产错误

CoreTest模块定义了扩展生产错误CORTST_E_CORE_FAILURE,它在以下情况下报告:

  • 在测试期间检测到核心故障
  • 通过DEM(诊断事件管理器)报告
  • 支持PREFAILED状态(测试失败)和PREPASSED状态(测试通过)

由于核心测试的特殊性,某些无法通过软件可靠报告的错误(例如ALU、MAC等内部错误)可能不会被捕获。这些限制取决于硬件平台和实现。


6. 总结

AUTOSAR Core Test驱动模块在汽车电子系统安全性和可靠性验证中扮演着重要角色。它提供了以下主要优势:

  • 灵活的测试模式:支持前台和后台测试模式,适应不同的测试需求
  • 全面的核心测试:提供CPU寄存器、ALU、地址生成、内存接口、MPU/MMU和缓存控制器测试
  • 安全集成:与AUTOSAR诊断框架无缝集成,支持功能安全需求
  • 微控制器抽象:作为MCAL层的一部分,提供了硬件平台无关的抽象接口

以下是核心测试模块在不同应用场景中的重要性:

  1. 功能安全系统

    • 支持ISO 26262安全标准要求
    • 提供硬件故障检测机制
    • 为安全相关应用提供可靠性保证
  2. ECU生命周期管理

    • 在启动阶段验证核心功能
    • 在运行时提供后台监控能力
    • 支持测试结果和签名验证
  3. 诊断与监控

    • 与诊断系统集成
    • 提供标准化的错误报告
    • 支持故障管理和恢复策略

CoreTest模块的设计考虑了微控制器资源共享和IP保护等因素,通常由硅制造商实现并作为库提供给应用开发者。对于安全关键型汽车应用,CoreTest提供了重要的硬件验证保障。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

KaiGer666

慧眼~施主!!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值