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 介绍与功能概述
本规范描述 RAM Test 模块的功能、API 和配置。
RAM Test 模块的任务是通过软件测试 RAM 内存区域,以检测永久故障。
主要特性:
- 后台 RAM 测试(Background):周期性执行,可中断,异步服务
- 前台 RAM 测试(Foreground):由用户调用,同步,可执行完整或部分测试
- 支持低、中、高诊断覆盖率的多种测试算法
- 非破坏性和破坏性两种模式
- 可配置的测试单元数
模块阶段:
- 初始化(Init)
- 后台测试运行(Run)
- 暂停(Suspend)/恢复(Resume)
- 停止(Stop)/允许(Allow)
- 反初始化(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 章。