AUTOSAR图解==>AUTOSAR_SRS_RAMTest

AUTOSAR RAM Test模块详解

基于AUTOSAR标准的RAM测试模块分析与实现

目录


1. 概述

AUTOSAR RAM Test模块是AUTOSAR标准架构中提供对RAM进行软件测试的基础模块。其主要任务是通过软件算法检测RAM内存区域的完整性和功能正确性,支持诊断和功能安全需求。该模块符合ISO 26262标准中不同ASIL级别的安全要求,提供多种测试算法和灵活的配置选项。

根据AUTOSAR SRS RAM Test需求规范文档,RAM Test模块提供以下主要功能:

  • 支持多种RAM测试算法,包括低覆盖率(60%)、中覆盖率(90%)和高覆盖率(99%)的测试方法
  • 支持破坏性和非破坏性测试模式
  • 支持测试RAM的部分区域,可配置多个RAM区域
  • 提供运行时可调整的测试参数
  • 支持分块执行测试,避免长时间中断系统服务
  • 提供测试状态和结果的查询接口
  • 支持通知机制,报告测试完成和错误情况

RAM Test模块设计满足ISO 26262不同ASIL级别的诊断覆盖率要求,是支持功能安全的关键基础软件模块。


2. RAM Test模块架构

2.1 总体架构

以下图表展示了AUTOSAR RAM Test模块的总体架构,包括其与其他AUTOSAR模块的关系以及内部组件结构:

在这里插入图片描述

2.2 层次结构

RAM Test模块在AUTOSAR架构中的层次定位如下:

  1. 应用层(Application Layer)

    • 应用软件组件:使用RAM Test模块提供的API进行RAM测试请求
    • 诊断组件:通过RAM Test模块的接口获取测试状态和结果
  2. RAM Test模块

    • RAM Test API:提供标准化的接口给上层应用
    • RAM Test Manager:管理测试执行,协调资源
    • RAM Test Algorithm:实现多种测试算法,针对不同覆盖率需求
  3. BSW服务层(BSW Services)

    • MCU驱动:提供底层硬件访问
    • DET模块:用于开发错误追踪
    • DEM模块:用于诊断错误管理
  4. 内存层(Memory)

    • 多个RAM区域:可独立配置和测试的RAM块

2.3 组件关系

RAM Test模块的主要组件之间关系如下:

  1. RAM Test API

    • 为上层应用提供标准化接口
    • 负责接收测试请求和参数
    • 提供测试结果查询功能
  2. RAM Test Manager

    • 管理测试资源和执行流程
    • 根据配置选择相应的测试算法
    • 向DET和DEM报告错误和状态
    • 协调测试执行的分块处理
  3. RAM Test Algorithm

    • 提供多种测试算法实现
    • 支持低覆盖率算法(60%):简单的快速测试
    • 支持中覆盖率算法(90%):满足一般诊断需求
    • 支持高覆盖率算法(99%):满足高ASIL级别需求
  4. 外部接口

    • 与MCU驱动交互进行硬件访问
    • 通过DET报告开发错误
    • 通过DEM报告诊断错误
    • 为上层应用提供通知机制

3. RAM Test模块状态管理

3.1 状态转换图

以下状态图展示了RAM Test模块的工作状态及其转换关系:

在这里插入图片描述

3.2 状态说明

RAM Test模块在其生命周期中存在以下几种工作状态:

  1. 未初始化(UNINIT)

    • 模块刚启动或被去初始化后的状态
    • 此状态下模块不能执行任何操作
    • 需要通过初始化操作转入就绪状态
  2. 闲置(IDLE)

    • 模块初始化完成的就绪状态
    • 等待接收测试请求
    • 可以配置测试参数和选择算法
  3. 执行中(RUNNING)

    • RAM测试正在进行中
    • 可分块执行或一次性完成
    • 支持非破坏性和破坏性两种测试模式
  4. 完成(COMPLETED)

    • RAM测试执行结束的状态
    • 测试结果通过通知机制报告
    • 测试状态可通过状态查询接口获取
  5. 错误(ERROR)

    • 测试过程中检测到错误
    • 错误信息通过DEM和DET模块报告
    • 可通过重置操作返回到就绪状态

3.3 状态转换触发条件

RAM Test模块的状态转换由以下条件触发:

  1. UNINIT → IDLE

    • 触发条件:调用RamTst_Init()函数
    • 说明:初始化模块,加载配置
  2. IDLE → RUNNING

    • 触发条件:调用RamTst_Start()函数
    • 说明:开始RAM测试,可选择测试算法
  3. RUNNING → COMPLETED

    • 触发条件:测试执行完成
    • 说明:所有配置的RAM区域测试完成
  4. RUNNING → ERROR

    • 触发条件:测试过程中发现RAM错误
    • 说明:可能是RAM硬件故障或数据损坏
  5. COMPLETED → IDLE

    • 触发条件:准备下一轮测试
    • 说明:测试结束后回到就绪状态
  6. ERROR → IDLE

    • 触发条件:调用RamTst_Reset()函数
    • 说明:重置错误状态,准备新的测试
  7. IDLE → UNINIT

    • 触发条件:调用RamTst_DeInit()函数
    • 说明:模块去初始化,释放资源

4. RAM Test模块配置结构

4.1 配置类图

以下类图展示了RAM Test模块的配置结构和关键数据类型:

在这里插入图片描述

4.2 主要配置参数

RAM Test模块的主要配置参数包括:

  1. RamTst_ConfigType

    • RamTst_NumberOfTestedCells:每次测试的单元格数量
    • RamTst_MaxNumberOfTestedCells:最大可测试单元格数量
    • RamTst_TestMode:测试模式(破坏性或非破坏性)
    • RamTst_NotificationEnabled:通知功能启用状态
    • RamTst_GetStatusEnabled:状态查询功能启用状态
    • RamTst_SelectedAlgorithms:可选择的测试算法列表
  2. 测试模式选择

    • RAMTST_NON_DESTRUCTIVE:非破坏性测试,保留原始数据
    • RAMTST_DESTRUCTIVE:破坏性测试,不保留原始数据
  3. 单元格大小

    • 由实现者根据控制器特性选择合适的单元格大小(位、字节、字或长字)
    • 公开参数,允许集成者了解特定实现的细节

4.3 RAM块定义

RAM Test模块支持配置多个RAM块进行测试:

  1. RamTst_RamBlockType

    • RamTst_RamBlockStartAddress:RAM块起始地址
    • RamTst_RamBlockEndAddress:RAM块结束地址
    • RamTst_RamBlockStatus:RAM块测试状态
  2. 测试状态定义

    • RAMTST_RESULT_NOT_TESTED:未测试状态
    • RAMTST_RESULT_OK:测试通过状态
    • RAMTST_RESULT_NOT_OK:测试失败状态
    • RAMTST_RESULT_UNDEFINED:测试结果未定义状态
  3. 特殊配置

    • 支持多个RAM区域配置,可以是重叠的
    • 如果重叠区域检测到错误,不保证更新其他块的状态

4.4 测试算法选择

RAM Test模块支持多种测试算法,满足不同安全级别要求:

  1. RamTst_AlgorithmType

    • RAMTST_ALGORITHM_LOW:低覆盖率算法(60%)
    • RAMTST_ALGORITHM_MEDIUM:中覆盖率算法(90%)
    • RAMTST_ALGORITHM_HIGH:高覆盖率算法(99%)
  2. 算法选择机制

    • 预编译时选择可用算法集合
    • 运行时从预编译选择的算法中选择当前使用的算法
    • 支持根据不同运行场景选择合适的算法
  3. 安全要求适配

    • 低覆盖率算法:满足基本诊断需求,适用于低ASIL级别
    • 中覆盖率算法:满足一般诊断需求,适用于潜在故障度量
    • 高覆盖率算法:满足高安全性要求,适用于高ASIL级别

5. 功能需求分析

5.1 配置相关需求

根据AUTOSAR SRS RAM Test规范,配置相关的关键需求包括:

  1. 运行时可配置性

    • [SRS_RamTst_13800]:测试单元格数量可在运行时变更
    • [SRS_RamTst_13801]:测试单元格大小应为公开参数
    • 目的:根据不同运行场景(如驾驶循环、休眠模式)调整测试参数
  2. 多RAM区域配置

    • [SRS_RamTst_13802]:支持在编译/链接时配置多个RAM区域
    • 目的:灵活配置内存映射,单独测试不同RAM区域
  3. 算法选择

    • [SRS_RamTst_13803]:预编译时可选择一组可用算法
    • [SRS_RamTst_13804]:运行时可从预选算法中选择当前使用算法
    • 目的:节省ROM空间并满足不同安全级别要求

5.2 运行相关需求

RAM Test模块的运行相关需求包括:

  1. 测试覆盖率级别

    • [SRS_RamTst_13822]:提供低覆盖率(60%)测试算法
    • [SRS_RamTst_13823]:提供中覆盖率(90%)测试算法
    • [SRS_RamTst_13824]:提供高覆盖率(99%)测试算法
    • 目的:满足ISO 26262不同ASIL级别的诊断覆盖率要求
  2. 分块执行

    • [SRS_RamTst_13809]:支持将RAM测试分成多个小块执行
    • 目的:避免长时间的中断禁用,降低对系统响应时间的影响
  3. 状态查询

    • [SRS_RamTst_13810]:提供每个RAM块的测试状态查询接口
    • [SRS_RamTst_13820]:通过通知机制报告测试状态和错误
    • 目的:支持诊断功能需求,及时获取测试状态
  4. 测试模式

    • [SRS_RamTst_13811]:支持非破坏性测试模式
    • [SRS_RamTst_13812]:支持破坏性测试模式
    • 目的:根据不同场景需求选择保留或不保留原始数据

5.3 安全相关需求

RAM Test模块的安全相关需求包括:

  1. 硬件特性考虑

    • [SRS_RamTst_13816]:考虑指令/数据队列对测试的影响
    • 目的:确保真正测试RAM单元而非缓存
  2. ISO 26262合规

    • [SRS_RamTst_13825]:支持符合ISO 26262不同ASIL级别要求
    • 目的:提供并记录RAM测试的故障模型和故障覆盖率,支持安全目标
  3. 资源优化

    • 各种算法之间的平衡,在资源消耗和测试覆盖率之间找到合适的平衡点
    • 目的:优化系统资源使用,同时满足安全要求

6. 总结

AUTOSAR RAM Test模块是AUTOSAR标准架构中负责RAM软件测试的关键组件,为汽车软件提供了以下核心价值:

  1. 功能安全支持

    • 提供符合ISO 26262不同ASIL级别要求的RAM测试机制
    • 支持多种覆盖率级别的测试算法
    • 为安全关键系统提供RAM完整性保障
  2. 灵活配置能力

    • 支持多RAM区域独立配置
    • 提供运行时可调整的测试参数
    • 允许选择破坏性或非破坏性测试模式
  3. 系统集成友好

    • 支持分块执行,降低对实时性影响
    • 提供标准化的API接口
    • 与诊断系统无缝集成
  4. 资源效率优化

    • 允许根据实际需求选择合适的测试算法
    • 支持预编译时算法选择,节省ROM空间
    • 优化测试执行,减少系统资源占用

RAM Test模块的设计充分体现了AUTOSAR标准的特点:标准化、模块化、可配置性和安全性,为汽车电子控制单元提供了可靠的RAM测试能力,是支持功能安全的重要基础模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

KaiGer666

慧眼~施主!!!

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

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

打赏作者

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

抵扣说明:

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

余额充值