AUTOSAR_SWS_NVRAMManager 中文翻译

文档编号:091 | 状态:Final | 发布于:AUTOSAR CP Release 4.4.0
所属标准:AUTOSAR Classic Platform | 文档责任方:AUTOSAR

本翻译覆盖原文档 1-187 页正文(约 2.36 MB,AUTOSAR 4.4 翻译项目最重单篇)。
原文为软件规范(SWS),定义 NVRAM 管理器(NvM)模块的 API 与配置——含 36+ 个 API 函数(含 4 个通知回调 + 1 个单块回调 + 1 个调度函数)+ 多个开发错误 + 多个 SWS_NvM_NNNNN 规范项。NvM 是 AUTOSAR 内存栈的核心模块,管理应用非易失性数据的存储与加载。


1 引言与功能概述

NvM(NVRAM Manager)位于 AUTOSAR 内存栈的顶端,提供:

2 缩略语与缩写

缩略语描述
NvMNVRAM Manager(非易失性存储管理器)
MemIfMemory Abstraction Interface(内存抽象接口)
Ea / FeeEEPROM Abstraction / Flash EEPROM Emulation
NV BlockNon-Volatile Block(非易失性块)
CRCCyclic Redundancy Check(循环冗余校验)
DET / DEMDefault Error Tracer / Diagnostic Event Manager
RTERuntime Environment(运行时环境)

3 相关文档

4 约束与假设

NvM 仅支持 AUTOSAR 中预定义的 CRC 算法(CRC8/CRC16/CRC32);加密算法委托给 CSM;多块队列最大长度可配置。

5 与其他模块的依赖

NvM 依赖 MemIf(向上)、Ea/Fee(向下)、DET、DEM、RTE(用于应用层 API)、SchM(用于临界区)、CSM(用于加密)。

6 需求可追溯性

SWS_NvM_NNNNN 规范项 ID 约 200+ 条(编号范围 00001-91001)。

7 功能规范

7.1 预配置

块数、块大小、块到设备映射、CRC 算法、加密设置、写保护、立即数据、ReadAll/WriteAll 选择、回调函数、RomBlock 地址、RamBlock 地址、Config Block、镜像 Block、CRC Buffer 长度、最大块数、多块队列长度、API 配置开关等。

7.2 通用行为

NvM 提供基于队列的异步处理:NvM_ReadBlock → 入队 → NvM_MainFunction 调度 → 异步通过 MemIf 读 → CRC 校验 → 写入 RAM 块 → 通知单块回调。

7.3 错误分类

7.3.1 开发错误

错误码含义
NVM_E_UNINITNvM 未初始化
NVM_E_ALREADY_INITIALIZED已初始化
NVM_E_BLOCK_CONFIG块配置不一致
NVM_E_PARAM_BLOCK_ID无效的块 ID
NVM_E_PARAM_BLOCK_TYPE无效的块类型
NVM_E_PARAM_ADDRESS无效的地址
NVM_E_PARAM_DATA无效的数据指针
NVM_E_PARAM_POINTER无效的指针
NVM_E_LIST_OVERFLOW队列已满
NVM_E_NV_WRITE_PROTECTED写保护启用

7.3.2 运行时错误

错误码含义
NVM_E_HARDWARE_ERROR硬件错误
NVM_E_BLOCK_CHECKSUM_FAILEDCRC 校验失败
NVM_E_QUEUE_OVERFLOW队列溢出

7.3.3 瞬态故障

无。

7.3.4 生产错误

错误码含义
NVM_E_INTEGRITY_FAILED完整性失败(CRC)
NVM_E_REQ_FAILED请求失败

7.3.5 扩展生产错误

无。

8 API 规范

8.1 导入类型

Std_ReturnTypeStd_VersionInfoTypeStd_ConfigType

8.2 类型定义

类型描述
NvM_ConfigTypeNvM 抽象配置
NvM_BlockIdType块 ID(uint16)
NvM_BlockRequestType块请求类型(NVM_BLOCK_NATIVE/NVM_BLOCK_REDUNDANT/NVM_BLOCK_DATASET
NvM_RamBlockStatusTypeRAM 块状态(VALID/CHANGED/UNCHANGED)
NvM_RequestResultType请求结果(OK/NOT_OK/PENDING/INTEGRITY_FAILED/...)
NvM_BlockProtectionType块保护状态(TRUE/FALSE)

8.3 函数定义

API功能
NvM_Init初始化 NvM
NvM_SetDataIndex设置数据集索引
NvM_GetDataIndex获取数据集索引
NvM_SetBlockProtection设置块写保护
NvM_GetErrorStatus获取错误状态
NvM_GetVersionInfo获取版本信息
NvM_SetRamBlockStatus设置 RAM 块状态(VALID/CHANGED)
NvM_SetBlockLockStatus设置块锁状态(用于排他访问)
NvM_CancelJobs取消所有作业
NvM_ReadBlock读单个块
NvM_WriteBlock写单个块
NvM_RestoreBlockDefaults恢复块默认值(从 ROM)
NvM_EraseNvBlock擦除 NV 块
NvM_InvalidateNvBlock失效 NV 块
NvM_ReadPRAMBlock读 PRAM 块(永久 RAM)
NvM_WritePRAMBlock写 PRAM 块
NvM_RestorePRAMBlockDefaults恢复 PRAM 块默认值
NvM_ReadAll读所有块(启动时)
NvM_WriteAll写所有块(关闭时)
NvM_CancelWriteAll取消写所有
NvM_ValidateAll验证所有块
NvM_FirstInitAll首次初始化所有块
NvM_JobEndNotification作业结束通知回调(应用实现)
NvM_JobErrorNotification作业错误通知回调(应用实现)
NvM_MainFunction主函数(队列处理)
NvM_SingleBlockCallbackFunction单块回调(应用实现,配置在块描述符)

共 26+ API 函数 + 1 个主函数 + 2 个通知 + 1 个单块回调模板。

9 序列图

  1. 单块读:应用 → NvM_ReadBlock(BlockId, RamAddr) → NvM 入队 → NvM_MainFunction() → MemIf 读 → CRC 校验 → 写入 RAM → 单块回调;
  2. 单块写:应用 → NvM_WriteBlock(BlockId, RamAddr) → NvM 入队 → NvM_MainFunction() → MemIf 写 → 通知;
  3. 读所有:EcuM → NvM_ReadAll() → NvM 依次处理所有配置 ReadAll 的块;
  4. 写所有:EcuM → NvM_WriteAll() → NvM 依次处理所有配置 WriteAll 的块;
  5. 立即数据:应用写 RAM 块 → NvM 立即同步到 NV → 通知;
  6. 取消:应用 → NvM_CancelJobs() → NvM 取消队列中的所有作业。

10 配置规范

10.1 容器与配置参数

容器描述
NvM根容器(开发错误检测、版本 API、API 开关、多核分区等)
NvMCommon通用配置(最大块数、队列大小、CRC 算法、回调、Dem 配置)
NvMBlockDescriptor块描述符(每个 NV 块的完整配置)
NvMRamBlockDataAddressRAM 块数据地址(应用提供)
NvMRomBlockDataAddressROM 块数据地址(默认数据)
NvMNvBlockDataAddressNV 块数据地址(提供方接口)
NvMNvMBlockNeeds块需求(CRC/加密/写保护/立即数据等开关)
NvMPublishedInformation发布信息

共 8 个 ECUC 容器,含 50+ 配置参数。

10.2 发布信息

发布信息包括 NvM 模块版本、配置变体、块数、最大块大小、队列大小、支持的 CRC 算法等。


📋 校对记录

校对轮次:L1 自动校对(2026-06-13)