Files
autosar_standard_spec_v4.4/Memory/AUTOSAR_SWS_RAMTest.md
T

18 KiB

RAM 测试规范

文档标题: Specification of RAM Test AUTOSAR CP Release: 4.4.0 文档编号: 076 文档类型: SWS (Software Specification)


文档标识

项目 内容
Document Title Specification of RAM Test
Document Owner AUTOSAR
Document Responsibility AUTOSAR
Document Identification No 076
Document Status Final
Part of AUTOSAR Standard Classic Platform
Part of Standard Release 4.4.0

文档变更历史

日期 版本 变更者 变更描述
2018-10-31 4.4.0 AUTOSAR Release Management MCALMulticoreDistribution (CONC_639) DRAFT;头文件清理;小幅更正
2017-12-08 4.3.1 AUTOSAR Release Management 更新追溯;小幅更正/澄清/编辑性修订
2016-11-30 4.3.0 AUTOSAR Release Management 移除 7.5 调试小节;重命名 RamTstGetVersionInfoApi → RamTstVersionInfoApi;移除 SWS_RamTst_00167 和 00168;新增运行时错误和瞬态故障章节
2015-07-31 4.2.2 AUTOSAR Release Management 更新扩展生产错误的通过/失败标准;调试支持标记为过时
2014-10-31 4.2.1 AUTOSAR Release Management 新增扩展生产错误的通过/失败标准
2014-03-31 4.1.3 AUTOSAR Release Management 编辑性修订;更新追溯
2013-10-31 4.1.2 AUTOSAR Release Management 移除 SWS_RamTst_00110 时序属性;编辑性修订
2013-03-15 4.1.1 AUTOSAR Administration 按新的 SWS_BSWGeneral 文档对齐;更新扩展生产错误文档;调整 ISO 26262
2011-12-22 4.0.3 AUTOSAR Administration 澄清部分需求;笔误更正;新增 DET 错误报告需求
2010-09-30 3.1.5 AUTOSAR Administration 澄清部分配置参数;改进错误报告
2010-02-02 3.1.4 AUTOSAR Administration 新增前台测试;允许每个测试算法多个配置;R4.0 维护
2009-02-04 3.1.2 AUTOSAR CM 更新文档到新 SWS 宏
2008-08-13 3.1.1 AUTOSAR Administration 法律免责声明修订
2008-02-01 3.0.2 AUTOSAR Administration 第 1 章和第 9 章图修正
2007-12-21 3.0.1 AUTOSAR Administration 文档化并包含 RAM 测试概念;更新需求表;措辞/语法变更;时序图变更
2007-07-24 2.1.16 AUTOSAR Technical Office 表格从 UML 模型生成
2007-01-24 2.1.15 AUTOSAR Administration "用户须知"修订;增加"版本信息"
2006-11-28 2.1.1 AUTOSAR Administration 文件包含结构更新;移除"改良汉明码"测试;RamTst_Stop() & RamTst_Continue() 改为"异步"
2006-05-16 2.0 AUTOSAR Administration 初始版本发布

目录

  1. 介绍与功能概述
  2. 缩略语
  3. 相关文档
  4. 约束与假设
  5. 模块依赖
  6. 需求追溯
  7. 功能规范
  8. API 规范
  9. 时序图
  10. 配置规范
  11. 不适用需求

1 介绍与功能概述

本规范描述 RAM Test 模块的功能、API 和配置。

RAM Test 模块的任务是通过软件测试 RAM 内存区域,以检测永久故障。

主要特性:

  • 后台 RAM 测试(Background):周期性执行,可中断,异步服务
  • 前台 RAM 测试(Foreground):由用户调用,同步,可执行完整或部分测试
  • 支持低、中、高诊断覆盖率的多种测试算法
  • 非破坏性和破坏性两种模式
  • 可配置的测试单元数

模块阶段:

  1. 初始化(Init)
  2. 后台测试运行(Run)
  3. 暂停(Suspend)/恢复(Resume)
  4. 停止(Stop)/允许(Allow)
  5. 反初始化(DeInit)

2 缩略语

缩略语 描述
RamTst RAM Test 模块名
ECU Electric Control Unit
EOL End Of Line
MCAL Microcontroller Abstraction Layer
MCU Microcontroller Unit
NMI Non maskable interrupt
OS Operating System
DEM Diagnostic Event Manager
DET Default Error Tracer
ECC Error Correction Code
CRC Cyclic Redundancy Check

3 相关文档

3.1 输入文档

  • List of Basic Software Modules
  • Layered Software Architecture
  • General Requirements on Basic Software Modules
  • Requirements on RAM Test — AUTOSAR_SRS_RAMTest.pdf
  • Specification of Default Error Tracer
  • Specification of Diagnostic Event Manager
  • General Specification of Basic Software Modules

3.2 相关标准与规范

  • ISO 26262-5:2011

3.3 相关规范

AUTOSAR 提供基础软件模块通用规范(SWS BSW General),也适用于 RAM Test。


4 约束与假设

4.1 限制

仅涵盖用于检查 RAM 的软件算法。硬件 RAM 检查(如 ECC 校验)不在范围内。 RAM Test 模块旨在集成于整体安全概念中,本身不提供所需诊断覆盖率。

4.2 完整 RAM 测试

完整 RAM 测试覆盖所有配置的 RAM 块,从开始到结束。

4.3 部分 RAM 测试

部分 RAM 测试仅覆盖配置 RAM 块的一部分。

4.4 适用车型领域

无限制。


5 模块依赖

依赖于 DEM 错误报告、DET 开发错误报告。


6 需求追溯

(主要追溯关系,完整表见原文 PDF)

需求 满足者
SRS_BSW_00323 (参数检查) SWS_RamTst_00033, 00037, 00039, 00040, 00095, 00097, 00170, 00172, 00210, 00214
SRS_BSW_00337 (开发错误分类) SWS_RamTst_00067
SRS_BSW_00339 (生产错误状态报告) SWS_RamTst_00011, 00067, 00071, 00111, 00213, 00216, 01002, 01005, 01008
SRS_BSW_00406 (模块初始化) SWS_RamTst_00006
SRS_BSW_00407 (版本信息) SWS_RamTst_00109
SRS_BSW_00414 (配置结构指针) SWS_RamTst_00093, 01011, 01012
SRS_BSW_00450 (主函数立即返回) SWS_RamTst_00175
SRS_RamTst_13800 (测试单元数运行时可变) SWS_RamTst_00036, 00107
SRS_RamTst_13802 (多 RAM 区域配置) SWS_RamTst_00026
SRS_RamTst_13803 (预编译算法选择) SWS_RamTst_00026, 00027, 00063, 00224, 00225, 00226
SRS_RamTst_13804 (运行时算法选择) SWS_RamTst_00083, 00105
SRS_RamTst_13809 (划分测试为小部分) SWS_RamTst_00008, 00026, 00059, 00107, 00108
SRS_RamTst_13810 (Get status 接口) SWS_RamTst_00010, 00011, 00019, 00024, 00038, 00104
SRS_RamTst_13811 (非破坏性) SWS_RamTst_00060, 00061, 00200
SRS_RamTst_13812 (破坏性) SWS_RamTst_00061, 00201
SRS_RamTst_13816 (指令队列影响) SWS_RamTst_00062
SRS_RamTst_13820 (通知机制) SWS_RamTst_00043, 00044, 00045, 00046, 00113, 00114
SRS_RamTst_13822 (低覆盖算法) SWS_RamTst_00224
SRS_RamTst_13823 (中等覆盖算法) SWS_RamTst_00225
SRS_RamTst_13824 (高覆盖算法) SWS_RamTst_00226
SRS_SPAL_12448 (开发错误检测后行为) SWS_RamTst_00033, 00037, 00039, 00040, 00084, 00095

完整追溯表见原文 PDF。


7 功能规范

7.1 需求

[SWS_RamTst_00005] ⌈RAM Test 模块应提供后台 RAM 测试作为异步服务。⌋ [SWS_RamTst_00206] ⌈RAM Test 模块应提供前台 RAM 测试作为同步服务。⌋ [SWS_RamTst_00063] ⌈RAM Test 模块的配置过程应允许在预编译时选择不同 RAM 测试算法的子集。⌋

非破坏性测试

[SWS_RamTst_00060] ⌈如选择非破坏性 RAM 测试,RAM Test 模块应在修改前保存待测试 RAM 区域。整个过程(保存、更改、还原)应不中断地执行。⌋

测试算法

  • [SWS_RamTst_00224] ⌈应提供低覆盖率测试算法(ISO 26262-5:2011 表 D.1)⌋
  • [SWS_RamTst_00225] ⌈应提供中等覆盖率测试算法⌋
  • [SWS_RamTst_00226] ⌈应提供高覆盖率测试算法⌋
  • [SWS_RamTst_00204] ⌈可提供额外厂商或硬件特定测试算法,必须明确文档化其故障覆盖率⌋

指令/数据队列处理

[SWS_RamTst_00062] ⌈写入单元后读回前,RAM Test 模块应提供注入指令的可能性,强制控制器清除其 CPU 内部缓存。⌋

中断处理

[SWS_RamTst_00221] ⌈处理器特定测试算法可使用支持数据丢失检测的硬件宏和/或中断(如 CRC、ECC)。实现者必须在 BSW 模块描述中描述任何中断例程。⌋

7.2 错误分类

7.2.1 开发错误

[SWS_RamTst_00067] ⌈

错误类型 相关性 相关错误代码 值[hex]
在意外状态下调用特定 API Development RAMTST_E_STATUS_FAILURE 0x01
API 参数超出规定范围 Development RAMTST_E_OUT_OF_RANGE 0x02
模块未初始化调用 API 服务 Development RAMTST_E_UNINIT 0x03
NULL 指针参数 Development RAMTST_E_PARAM_POINTER 0x04
初始化失败 Development RAMTST_E_INIT_FAILED 0x05

7.2.2 运行时错误

无运行时错误。

7.2.3 瞬态故障

无瞬态故障。

7.2.4 生产错误

无生产错误。

7.2.5 扩展生产错误

错误名 描述
RAMTST_E_BG_DESTRUCTIVE 后台破坏性测试错误
RAMTST_E_BG_NON_DESTRUCTIVE 后台非破坏性测试错误
RAMTST_E_FG_DESTRUCTIVE 前台破坏性测试错误
RAMTST_E_FG_NON_DESTRUCTIVE 前台非破坏性测试错误

每个具有通过/失败检测标准:

  • Fail:测试检测到 RAM 故障(块结果为 NOT_OK)
  • Pass:所有块测试为 OK

7.3 错误检测

参考 SWS_BSWGeneral 文档。

7.4 错误通知

通过 DEM 报告生产错误,通过 DET 报告开发错误。

7.5 通用测试行为

[SWS_RamTst_00026] [SWS_RamTst_00027] ⌈RAM Test 模块应支持后构建和预编译配置。⌋

测试可分为多个小部分,每个 RamTst_MainFunction 调用测试指定数量的单元。


8 API 规范

8.1 导入的类型

模块 头文件 导入类型
Dem Rte_Dem_Type.h Dem_EventIdType, Dem_EventStatusType
Std_Types StandardTypes.h Std_ReturnType, Std_VersionInfoType

8.2 类型定义

8.2.1 RamTst_ConfigType

内容
Type Structure
Range 实现特定
Description 包含 RAM Test 模块初始化数据的结构。

8.2.2 RamTst_ExecutionStatusType

内容
Type Enumeration
Range RAMTST_NOT_TESTED (0x00); RAMTST_RUNNING (0x01); RAMTST_FINISHED (0x02); RAMTST_SUSPENDED (0x03); RAMTST_STOPPED (0x04)
Description RAM 测试执行状态。

8.2.3 RamTst_TestResultType

内容
Type Enumeration
Range RAMTST_TEST_NOT_RUN (0x00); RAMTST_TEST_PASSED (0x01); RAMTST_TEST_FAILED (0x02); RAMTST_TEST_UNDEFINED (0x03)
Description RAM 测试结果。

8.2.4 RamTst_AlgParamsIdType

内容
Type uint8/uint16
Description 算法参数 ID 类型。

8.2.5 RamTst_AlgorithmType

内容
Type Enumeration
Range RAMTST_ALGORITHM_VENDORxxx 等(实现特定)
Description 算法类型。

8.2.6 RamTst_NumberOfTestedCellsType

uint8/uint16/uint32 — 被测试单元数。

8.2.7 RamTst_NumberOfBlocksType

uint8/uint16/uint32 — 块数量。

8.3 函数定义

8.3.1 RamTst_Init

void RamTst_Init(const RamTst_ConfigType* ConfigPtr)
内容
Service ID[hex] 0x00
Sync/Async Synchronous
Description 初始化 RAM Test 模块。

8.3.2 RamTst_DeInit

void RamTst_DeInit(void)
内容
Service ID[hex] 0x10
Description 反初始化。

8.3.3 RamTst_Stop

Std_ReturnType RamTst_Stop(void)
内容
Service ID[hex] 0x02
Sync/Async Asynchronous
Description 停止后台 RAM 测试。

8.3.4 RamTst_Allow

Std_ReturnType RamTst_Allow(void)
内容
Service ID[hex] 0x03
Description 允许后台 RAM 测试。

8.3.5 RamTst_Suspend

Std_ReturnType RamTst_Suspend(void)
内容
Service ID[hex] 0x04
Sync/Async Asynchronous
Description 暂停后台 RAM 测试。

8.3.6 RamTst_Resume

Std_ReturnType RamTst_Resume(void)
内容
Service ID[hex] 0x05
Description 恢复后台 RAM 测试。

8.3.7 RamTst_GetExecutionStatus

RamTst_ExecutionStatusType RamTst_GetExecutionStatus(void)
内容
Service ID[hex] 0x06
Description 获取测试执行状态。

8.3.8 RamTst_GetTestResult

RamTst_TestResultType RamTst_GetTestResult(void)
内容
Service ID[hex] 0x07
Description 获取测试结果。

8.3.9 RamTst_GetTestResultPerBlock

Std_ReturnType RamTst_GetTestResultPerBlock(
    uint8 BlockIndex,
    RamTst_TestResultType* TestResultPtr
)
内容
Service ID[hex] 0x08
Description 获取指定块的测试结果。

8.3.10 RamTst_GetVersionInfo

void RamTst_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr)
内容
Service ID[hex] 0x09

8.3.11 RamTst_GetAlgParams

Std_ReturnType RamTst_GetAlgParams(RamTst_AlgParamsIdType* AlgParamsIdPtr)
内容
Service ID[hex] 0x0a
Description 获取算法参数 ID。

8.3.12 RamTst_GetTestAlgorithm

RamTst_AlgorithmType RamTst_GetTestAlgorithm(void)
内容
Service ID[hex] 0x0b
Description 获取当前测试算法。

8.3.13 RamTst_GetNumberOfTestedCells

RamTst_NumberOfTestedCellsType RamTst_GetNumberOfTestedCells(void)
内容
Service ID[hex] 0x0c
Description 获取被测单元数。

8.3.14 RamTst_SelectAlgParams

Std_ReturnType RamTst_SelectAlgParams(RamTst_AlgParamsIdType AlgParamsId)
内容
Service ID[hex] 0x0d
Description 选择算法参数。

8.3.15 RamTst_ChangeNumberOfTestedCells

Std_ReturnType RamTst_ChangeNumberOfTestedCells(RamTst_NumberOfTestedCellsType NumberOfTestedCells)
内容
Service ID[hex] 0x0e
Description 改变被测单元数。

8.3.16 RamTst_RunFullTest

Std_ReturnType RamTst_RunFullTest(RamTst_NumberOfBlocksType BlockIndex)
内容
Service ID[hex] 0x0f
Sync/Async Synchronous
Description 运行前台完整 RAM 测试。

8.3.17 RamTst_RunPartialTest

Std_ReturnType RamTst_RunPartialTest(
    RamTst_NumberOfBlocksType BlockIndex,
    uint32 StartAddress,
    uint32 EndAddress
)
内容
Service ID[hex] 0x11
Sync/Async Synchronous
Description 运行前台部分 RAM 测试。

8.4 回调通知

无。

8.5 调度函数

RamTst_MainFunction

void RamTst_MainFunction(void)
内容
Service ID[hex] 0x01
Description 执行后台 RAM 测试。
Available via SchM_RamTst.h

8.6 期望接口

强制接口

API 函数 头文件 描述
Dem_SetEventStatus Dem.h 报告监视状态信息到 Dem

可选接口

API 函数 头文件 描述
Det_ReportError Det.h 报告开发错误

可配置接口

RamTst_TestCompletedNotification

测试完成时调用的可配置回调函数。

RamTst_ErrorNotification

错误检测时调用的可配置回调函数。


9 时序图

9.1 RamTst_MainFunction (示例)

调度程序周期调用 → RamTst_MainFunction 执行部分测试。

9.2 RamTst_ChangeNumberOfTestedCells

用户运行时改变测试单元数。

9.3-9.9 其他 API 时序

各 API 函数的同步调用与返回。


10 配置规范

10.1 如何阅读本章

详见 SWS_BSWGeneral 文档。

10.2 容器与配置参数

10.2.1 变体

支持 VARIANT-POST-BUILD 和 VARIANT-PRE-COMPILE。

10.2.2 RamTst

模块顶层配置容器。

10.2.3 RamTstDemEventParameterRefs

引用 DEM 事件参数:

  • RAMTST_E_BG_DESTRUCTIVE
  • RAMTST_E_BG_NON_DESTRUCTIVE
  • RAMTST_E_FG_DESTRUCTIVE
  • RAMTST_E_FG_NON_DESTRUCTIVE

10.2.4 RamTstCommon

通用配置:

参数 描述
RamTstDevErrorDetect 开发错误检测
RamTstVersionInfoApi 版本信息 API
RamTstAllowApi Allow API 启用
RamTstStopApi Stop API 启用
RamTstSuspendApi Suspend API 启用
RamTstResumeApi Resume API 启用
RamTstSelectAlgParamsApi SelectAlgParams API 启用
RamTstChangeNumberOfTestedCellsApi ChangeNumberOfTestedCells API 启用
RamTstRunFullTestApi RunFullTest API 启用
RamTstRunPartialTestApi RunPartialTest API 启用
RamTstTestCompletedNotification 测试完成回调
RamTstErrorNotification 错误回调
RamTstMainFunctionPeriod 主函数周期

10.2.5 RamTstAlgorithms

测试算法配置:

参数 描述
RamTstLowCoverage 低覆盖率算法
RamTstMediumCoverage 中覆盖率算法
RamTstHighCoverage 高覆盖率算法
RamTstAlgorithmVendorSpecific 厂商特定算法

10.2.6 RamTstConfigParams

配置参数:

参数 描述
RamTstNumberOfTestedCells 默认被测试单元数
RamTstNumberOfBlocks 块数量
RamTstTestMode 破坏性/非破坏性

10.2.7 RamTstAlgParams

每算法参数:

参数 描述
RamTstAlgParamsId 算法参数 ID
RamTstAlgorithm 使用的算法
RamTstAlgorithmCoverage 覆盖率级别

10.2.8 RamTstBlockParams

每个 RAM 块参数:

参数 描述
RamTstBlockId 块 ID
RamTstStartAddress 起始地址
RamTstEndAddress 结束地址
RamTstTestAlgorithm 应用的算法

10.3 已发布参数

RamTstPublishedInformation

版本信息等。

10.4 实现特定信息和参数

可由实现者提供额外参数。


11 不适用需求

[SWS_RamTst_00999] ⌈这些需求不适用于本规范。⌋ 涉及多个 SRS_BSW_* 和 SRS_SPAL_* 需求,详见原文 PDF。


翻译说明

  • 本文档完整翻译自 AUTOSAR_SWS_RAMTest v4.4.0(Document ID 076,83 页)。
  • 保留所有需求 ID(SWS_RamTst_xxxxx、SRS_RamTst_xxxxx、ECUC_RamTst_xxxxx)。
  • 保留 AUTOSAR 方框符 ⌈⌋。
  • 模块缩写(RamTst、ECU、DEM、DET、CRC、ECC 等)和 API 函数名保持英文。
  • 详细配置参数和示例请参考原文 PDF 第 10 章。