DEENESPTFRRUARHIKOZHNL

NVRAM Manager (NvM)

ModulNvM (NVRAM Manager)
BSW-Modul-ID20
Standard-Header#include "NvM.h"
SWS-SpezifikationAUTOSAR_SWS_NVRAMManager.pdf
ClusterMemory Services

模块指南人工智能生成

管理非易失性数据块,并在 RAM 与非易失性存储器之间进行异步同步。
AI 生成 未审核 模型: claude-opus-5-5 · 推理强度: high · 温度: 不可控 · 提示词: 1d912b11517a 来源 未决问题(1)
因果锚点:R20-11 自 R20-11 起有效 为此规范版本重新合成。
译自德文指南AI 生成gemini-3.8-flash-low · 2026-10-13 · 德文原文

管理非易失性数据块,并在 RAM 与非易失性存储器之间进行异步同步。

NVRAM 管理器(NvM)是非易失性存储器的唯一访问入口。它在 RAM 与非易失性存储器之间隐式复制 NVRAM 块[SWS_NvM_00038]。启动时,由 BswM 触发的NvM_ReadAll填充 RAM 块;关机时,NvM_WriteAll保存已更改的块。诸如NvM_WriteBlock之类的单个请求被异步排队、按优先级处理,并通过状态或回调进行确认[SWS_NvM_00185]。NvM 通过重试、冗余副本和默认数据来截获读取错误;用户仍必须自行检查块状态。

NVRAM 管理器(NvM)是非易失性存储器的唯一访问入口[SWS_NvM_00384]。它在 NVRAM 与 RAM 之间隐式复制块;应用程序直接使用 RAM 数据[SWS_NvM_00038]。向下它使用带有 Fee 或 Ea 的 Memory Abstraction Interface[SWS_NvM_00051]。它向 BswM 报告状态,向 DEM 和 DET 报告错误[SWS_NvM_00745][SWS_NvM_00592]。

kontext nutzer NvM 用户 (通过 RTE 的 SW-C、BSW 模块) nvm NvM (NVRAM Manager) nutzer->nvm 单个作业 NvM_ReadBlock、NvM_WriteBlock、… bswm BswM bswm->nvm NvM_Init, NvM_ReadAll, NvM_WriteAll, NvM_CancelWriteAll nvm->nutzer SingleBlock、InitBlock 与镜像回调 nvm->bswm BswM_NvM_CurrentJobMode, BswM_NvM_CurrentBlockMode memif MemIf nvm->memif 读/写作业, MemIf_GetJobResult dem Dem nvm->dem Produktionsfehler det Det nvm->det Entwicklungsfehler crc Crc nvm->crc CRC-Berechnung fee Fee / Ea memif->fee 转发 fee->nvm NvM_JobEndNotification, NvM_JobErrorNotification

上下文图:NvM 嵌入在用户、BswM、MemIf/Fee/Ea 以及 DEM 和 DET 之间。来源:[SWS_NvM_00384][SWS_NvM_00465][SWS_NvM_00746]

每个 NVRAM 块由 NV 块、RAM 块和管理块组成,可选用包含默认数据的 ROM 块进行补充[SWS_NvM_00138]。存在 Native、Redundant 和 Dataset 类型;它们在 NV 块和 ROM 块的数量上有所不同[SWS_NvM_00557][SWS_NvM_00558][SWS_NvM_00559]。NvM 隐式直接同步 RAM 块,或通过带有回调的 RAM 镜像进行显式同步[SWS_NvM_00511]。

生命周期分为三个步骤:

诸如NvM_WriteBlock之类的单个请求被排队,随后处于NVM_REQ_PENDING状态[SWS_NvM_00185]。可选地,NvM 为立即请求使用专用队列[SWS_NvM_00378]。结果由NvM_GetErrorStatus或配置的回调提供[SWS_NvM_00015][SWS_NvM_00740]。

带反馈的异步单块作业NvM-AnwenderNvMBswMBSW-TaskMemIfNvM_WriteBlock(BlockId, NvM_SrcPtr)einreihen, Blockergebnis:NVM_REQ_PENDINGoptNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, NVM_REQ_PENDING)E_OKloop直到写作业完成NvM_MainFunction()Schreibauftrag / Status abfragenJob-ErgebnisoptNvMSingleBlockCallback konfiguriertNvM_SingleBlockCallbackFunction(NVM_WRITE_BLOCK, JobResult)optNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, Ergebnis)NvM_GetErrorStatus(BlockId, RequestResultPtr)E_OK, Ergebnis

时序图:异步写入请求被排队,在NvM_MainFunction中处理,并通过回调、BswM 消息和状态查询进行确认。来源:[SWS_NvM_00185][SWS_NvM_00347][SWS_NvM_00891],SWS NvM 第160页

NvM 通过三个阶段截获读取错误:

解释:各阶段的顺序可能遵循 Error Description 中的列举。 问题 Q-027e7f981e4d0a43 (未决)NvM 重复写入错误直至NVM_MAX_NUM_OF_WRITE_RETRIES,然后向 DEM 报告NVM_E_REQ_FAILED[SWS_NvM_00684]。用户自行检查其块的状态[SWS_NvM_00694]。

在存储栈中的角色:非易失性存储器的唯一访问入口

NVRAM 管理器(NvM)统管对非易失性数据的访问。外部环境仅通过 NvM 访问非易失性存储器,NvM 为此提供了回调接口[SWS_NvM_00384]。该访问是隐式的:NvM 在 NVRAM 与共享 RAM 之间复制块。应用程序在遵守同步规则的前提下直接使用 RAM 数据[SWS_NvM_00038][SWS_NvM_00692]。块通过其配置的块 ID 进行选择[SWS_NvM_00069][SWS_NvM_00471]。上层为此仅包含NvM.h[SWS_NvM_00691]。关于隐式更新的图表展示了分工:基础软件的其他部分根据 ECU 状态触发所有块的保存和恢复。SW-C 仅访问其 RAM 块的内容(SWS NvM 第121页)。

向下,NvM 面向 Memory Abstraction Interface 工作。它与 Fee 或 Ea 一起提供虚拟的线性 32 位地址空间[SWS_NvM_00051][SWS_NvM_00465]。NvM 通过 Crc 模块生成校验和[SWS_NvM_00466]。它通过两种途径获知下层作业的结束:

生产错误发送至 DEM[SWS_NvM_00592],开发错误发送至 DET[SWS_NvM_00614]。NvM 向 BswM 报告作业状态[SWS_NvM_00745][SWS_NvM_00746]。

kontext nutzer NvM 用户 (通过 RTE 的 SW-C、BSW 模块) nvm NvM (NVRAM Manager) nutzer->nvm 单个作业 NvM_ReadBlock、NvM_WriteBlock、… bswm BswM bswm->nvm NvM_Init, NvM_ReadAll, NvM_WriteAll, NvM_CancelWriteAll nvm->nutzer SingleBlock、InitBlock 与镜像回调 nvm->bswm BswM_NvM_CurrentJobMode, BswM_NvM_CurrentBlockMode memif MemIf nvm->memif 读/写作业, MemIf_GetJobResult dem Dem nvm->dem Produktionsfehler det Det nvm->det Entwicklungsfehler crc Crc nvm->crc CRC-Berechnung fee Fee / Ea memif->fee 转发 fee->nvm NvM_JobEndNotification, NvM_JobErrorNotification

上下文图:NvM 一方面在用户与 BswM 之间协调,另一方面在 MemIf/Fee/Ea 之间协调。它向 DEM 和 DET 报告错误。来源:[SWS_NvM_00384][SWS_NvM_00745][SWS_NvM_00746][SWS_NvM_00465][SWS_NvM_00466],Error Description 第43页

NVRAM 块的结构与三种管理类型

一个 NVRAM 块由必选组成部分 NV 块、RAM 块和管理块构成。带有默认数据的 ROM 块是可选的[SWS_NvM_00138][SWS_NvM_00139][SWS_NvM_00020]。其组成由块描述符在配置时确定[SWS_NvM_00140]。各个组成部分:

NvM 支持类型NVM_BLOCK_NATIVE、NVM_BLOCK_REDUNDANT和NVM_BLOCK_DATASET[SWS_NvM_00137]。它们在 NV 块和 ROM 块的数量上有所不同[SWS_NvM_00557][SWS_NvM_00558][SWS_NvM_00559](SWS NvM 第10页)。对于 Dataset 块:

blockaufbau nvram NVRAM-Block (BlockId, Verwaltungstyp) nv NV-Block Header (opt.), Daten, CRC (opt.) nvram->nv NATIVE: 1 REDUNDANT: 2 DATASET: 1..m ram RAM 块: 永久、临时或 RAM 镜像 nvram->ram genau 1 rom ROM-Block (optional) Defaultdaten nvram->rom NATIVE/REDUNDANT: 0..1 DATASET: 0..n adm Administrative Block Index, Attribute, Fehler-/Status nvram->adm genau 1

协作图(块结构):NVRAM 块的必选和可选组成部分以及每种管理类型的基数。来源:[SWS_NvM_00138][SWS_NvM_00557][SWS_NvM_00558][SWS_NvM_00559][SWS_NvM_00134],SWS NvM 第10页

生命周期:NvM_Init、NvM_ReadAll 和 NvM_WriteAll

BswM 独占调用NvM_Init[SWS_NvM_00693]。NvM_Init重置队列和状态机,并在内部发出“INIT DONE”信号[SWS_NvM_00399]。它既不初始化 RAM 块,也不初始化下层模块[SWS_NvM_00091][SWS_NvM_00193]。配置指针始终为NULL_PTR[SWS_NvM_00881]。此后NvM_MainFunction才处理请求[SWS_NvM_00257]。

随后NvM_ReadAll填充 RAM 块[SWS_NvM_00718]。该调用仅通知请求。处理过程将被推迟,直至单块请求处理完毕[SWS_NvM_00243]。随后该作业分三步运行:

  1. 首先,它比较存储的配置 ID 与编译的配置 ID[SWS_NvM_00073]。若有偏差,行为取决于NvMDynamicConfiguration:使用NvMDynamicConfiguration == FALSE时,偏差将被忽略[SWS_NvM_00248]。否则,非抗变更块将获得默认数据[SWS_NvM_00249][SWS_NvM_00674](NV Data Handling 第15页)。
  2. 然后,它遍历除块 ID 0 和 1 之外的用户块[SWS_NvM_00244]。在此过程中,它仅处理具有永久 RAM 块或显式同步的块[SWS_NvM_00118]。
  3. 最后,它将总体结果设置为NVM_REQ_OK或NVM_REQ_NOT_OK[SWS_NvM_00895][SWS_NvM_00301]。

在模式管理示例中,BswM 规则NvMReadAllFinished仅在NvM_ReadAll完成后才启动其余的初始化(Mode Management Guide 第31页)。

启动:NvM_Init 与 NvM_ReadAllBSW-TaskBswMNvMMemIf / Fee / EaUse Case: InitialisierungNvM_Init(NULL_PTR)复位队列和状态,“INIT DONE”——RAM 块保持不变NvM_Init()Use Case: Multiblock-Auftrag NvM_ReadAllNvM_ReadAll()NvM_ReadAll()optNvMBswMMultiBlockJobStatusInformation == TRUEBswM_NvM_CurrentJobMode(ReadAll, NVM_REQ_PENDING)NvM_MainFunction()第一步:保存的与kompilierte Konfigurations-ID vergleichenloop针对用于 NvM_ReadAll 的每个用户块(不含块 ID 0 和 1)NvM_MainFunction()NV-Block lesenJob-Ergebnis填充 RAM 块或镜像,Blockergebnis setzenoptNvMBswMMultiBlockJobStatusInformation == TRUEBswM_NvM_CurrentJobMode(ReadAll, Ergebnis)BswM_MainFunction()Regel NvMReadAllFinished:restliche BSW-Initialisierung

时序图:使用NvM_Init、NvM_ReadAll的异步启动,并将多块状态反馈给 BswM。来源:[SWS_NvM_00693][SWS_NvM_00243][SWS_NvM_00073][SWS_NvM_00888][SWS_NvM_00889],NV Data Handling 第20页

关机时,BswM 调用NvM_WriteAll[SWS_NvM_00092]。该作业的行为如下:

只要 API 已启用,用户就可以使用NvM_SetRamBlockStatus(…, TRUE)标记已更改的块[SWS_NvM_00406][SWS_NvM_00408]。对于 Dirty-Flag 块,由 RTE 执行此调用(NV Data Handling 第41页)。

NvM_CancelWriteAll保留给 BswM[SWS_NvM_00703],且在没有正在运行的NvM_WriteAll时不起作用[SWS_NvM_00233]。当前块以非破坏性方式完成[SWS_NvM_00238]。其余块和多块结果被赋予NVM_REQ_CANCELED[SWS_NvM_00236][SWS_NvM_00237](SWS NvM 第161页)。

另外两个多块请求完善了生命周期:

所有多块请求的队列长度均为一[SWS_NvM_00380]。

关闭:NvM_WriteAll 与 NvM_CancelWriteAllBSW-TaskBswMNvMNvM_WriteAll()NvM_WriteAll()loop针对每个具有永久 RAM 或显式同步的块NvM_MainFunction()检查“valid/modified”;跳过受保护与被锁定的块;写入altAbbruch angefordertNvM_CancelWriteAll()NvM_CancelWriteAll()NvM_MainFunction()非破坏性地终止当前块,其余块:NVM_REQ_CANCELEDBswM_NvM_CurrentJobMode(WriteAll, NVM_REQ_CANCELED)正常结束BswM_NvM_CurrentJobMode(WriteAll, Ergebnis)Regel NvMWriteAllFinished:EcuM_GoDown

时序图:使用NvM_WriteAll的关机以及通过NvM_CancelWriteAll的可选中止。来源:[SWS_NvM_00092][SWS_NvM_00682][SWS_NvM_00238][SWS_NvM_00237][SWS_NvM_00889],Mode Management Guide 第37页

单项请求:队列、优先级与反馈

诸如NvM_ReadBlock、NvM_WriteBlock或NvM_RestoreBlockDefaults之类的单块请求是异步的。函数接收参数,将请求排队并返回[SWS_NvM_00195][SWS_NvM_00208][SWS_NvM_00224]。随后块结果处于NVM_REQ_PENDING状态[SWS_NvM_00185]。在队列溢出时,函数返回E_NOT_OK[SWS_NvM_00184]。仅当块尚未处于挂起状态或未在处理中时,才会被排队[SWS_NvM_00385]。

其他服务在调用者上下文中同步生效,例如NvM_SetDataIndex[SWS_NvM_00448]和NvM_GetErrorStatus(SWS NvM 第158页)。NvM_CancelJobs移除某块挂起的请求;但是正在运行的作业将继续执行[SWS_NvM_00536][SWS_NvM_00537]。

处理按优先级串行进行[SWS_NvM_00162]。如果NvMJobPrioritization处于激活状态,NvM 将使用两个队列,其中一个用于立即写入请求(碰撞数据)[SWS_NvM_00564][SWS_NvM_00378]。这样的NvM_WriteBlock会破坏性地中止正在挂起的作业[SWS_NvM_00300]。随后NvM_MainFunction重新启动被中止的作业[SWS_NvM_00258]。在未配置优先级的情况下,NvM 按到达顺序工作,不含立即作业[SWS_NvM_00379]。在多块请求期间到达的请求将被排队并在随后执行[SWS_NvM_00568][SWS_NvM_00569]。

每个异步请求都将其结果存放在错误/状态字段中[SWS_NvM_00175]。NvM_GetErrorStatus读取该字段[SWS_NvM_00015]。此外,还有两条可选的反馈途径:

带反馈的异步单块作业NvM-AnwenderNvMBswMBSW-TaskMemIfNvM_WriteBlock(BlockId, NvM_SrcPtr)einreihen, Blockergebnis:NVM_REQ_PENDINGoptNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, NVM_REQ_PENDING)E_OKloop直到写作业完成NvM_MainFunction()Schreibauftrag / Status abfragenJob-ErgebnisoptNvMSingleBlockCallback konfiguriertNvM_SingleBlockCallbackFunction(NVM_WRITE_BLOCK, JobResult)optNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, Ergebnis)NvM_GetErrorStatus(BlockId, RequestResultPtr)E_OK, Ergebnis

时序图:包含 BswM 状态通知、回调和状态查询的异步写入请求。来源:[SWS_NvM_00185][SWS_NvM_00347][SWS_NvM_00740][SWS_NvM_00890][SWS_NvM_00891],SWS NvM 第160页

RAM 块同步与块状态

NvM 具有两种与应用程序的 RAM 块同步数据的方式。在隐式同步中,它直接在应用程序的该 RAM 块上操作。应用程序提供该块,并在请求结束前不再访问它[SWS_NvM_00698][SWS_NvM_00699]。若传递NULL_PTR,NvM 将使用永久 RAM 块[SWS_NvM_00898][SWS_NvM_00900]。通过指针使用临时块仍然是可行的[SWS_NvM_00278]。PRAM 服务始终在永久 RAM 块上操作[SWS_NvM_00765][SWS_NvM_00794]。在 RTE 场景中,该块是一个 Per-Instance-Memory(NV Data Handling 第32页)。

在显式同步(NvMBlockUseSyncMechanism)中,数据交换通过内部 RAM 镜像进行[SWS_NvM_00511]。该镜像恰好只有一个,按涉及的最大块确定大小[SWS_NvM_00513]。NvM 调用NvMWriteRamBlockToNvCallback或NvMReadRamBlockFromNvCallback[SWS_NvM_00515][SWS_NvM_00516]。如果回调返回E_NOT_OK,它将在下一个周期重试调用,最多重试NvMRepeatMirrorOperations次[SWS_NvM_00579][SWS_NvM_00840]。在回调发生之前,应用程序仍可修改 RAM 块[SWS_NvM_00705]。一个块要么使用显式同步,要么使用永久 RAM 块,不能二者兼具[SWS_NvM_00904]。该机制允许通过 NvBlockSwComponentType 共享块(NV Data Handling 第12页)。

带显式同步的写入Anwendung (SW-C/RTE)NvMBSW-TaskMemIf用数据填充 RAM 块NvM_WriteBlock(BlockId, NULL_PTR)E_OKRAM 块在回调发生前仍允许被修改NvM_MainFunction()NvM_WriteRamBlockToNvm(NvMBuffer)(NvMWriteRamBlockToNvCallback)RAM-Block in RAM-Mirror kopierenalt返回 E_OKE_OKMirror-Inhalt in NV-Block schreiben返回 E_NOT_OKE_NOT_OK在下一个 NvM_MainFunction 中回调erneut aufrufen (max. NvMRepeatMirrorOperations)

时序图:通过 RAM 镜像进行显式同步的写入请求,包括在返回E_NOT_OK时的重试。来源:[SWS_NvM_00515][SWS_NvM_00705][SWS_NvM_00579][SWS_NvM_00840],NV Data Handling 第27页

对于永久 RAM 块或镜像,NvM 维护“valid”/“invalid”状态[SWS_NvM_00128][SWS_NvM_00132]。具体的状态转换如下:

blockzustand invalid INVALID unchanged VALID / UNCHANGED invalid->unchanged NV-Daten erfolgreich gelesen changed VALID / CHANGED invalid->changed Defaultdaten geladen unchanged->invalid NvM_ReadBlock angenommen (permanenter RAM) unchanged->changed NvM_SetRamBlockStatus(TRUE) 或 NvM_ValidateAll changed->invalid NvM_ReadBlock angenommen (permanenter RAM) changed->unchanged erfolgreich in NV geschrieben

状态图:RAM 块状态及其触发事件。来源:[SWS_NvM_00198][SWS_NvM_00200][SWS_NvM_00366][SWS_NvM_00406][SWS_NvM_00472][SWS_NvM_00856]

配置、保护机制与分区关联

对于受限资源,提供了三个 API 配置类[SWS_NvM_00149]。类别 1 不支持 Dataset 块[SWS_NvM_00365]。描述符表通过生成获得[SWS_NvM_00143]。用户在配置时声明内存需求[SWS_NvM_00030]。BSW 模块通过NvBlockNeeds完成此声明(BSWMD Template 第241页)。ECU 集成商由此推导 NvM 配置(Methodology 第444页)。

针对单个块,提供了多种保护机制:

在存在分区的情况下,NvM 在相应分配的分区上下文中调用接口。通用功能在主分区中运行[SWS_NvM_00969]。NvM_ReadAll和NvM_WriteAll仅由主分区提供[SWS_NvM_00970][SWS_NvM_00971][SWS_NvM_CONSTR00974]。SW-C 通过与块相关的端口访问 NvM:

发生错误时的行为

读取时,NvM 对 MemIf 的消息进行不同处理:

随后有多个恢复阶段生效:

  1. 发生 CRC 错误时,接下来执行配置的读取重试[SWS_NvM_00526]。
  2. 对于冗余块,NvM 读取第二个副本并尝试恢复冗余性[SWS_NvM_00199][SWS_NvM_00531]。若失败,它将报告NVM_E_LOSS_OF_REDUNDANCY[SWS_NvM_00546]。
  3. 最后,NvM 加载默认数据,结果为NVM_REQ_RESTORED_DEFAULTS[SWS_NvM_00202]。NV 内容在此过程中保持不变[SWS_NvM_00172]。

如果缺少默认数据,RAM 块仍保持无效[SWS_NvM_00658][SWS_NvM_00204]。解释:各阶段的顺序可能遵循 Error Description 中的列举(Error Description 第62页)。 问题 (未决)该来源在两点上偏离了 Requirements。它提及NVM_REQ_RESTORED_FROM_ROM而非NVM_REQ_RESTORED_DEFAULTS。此外,它将最终失败笼统地归纳为NVM_E_REQ_FAILED。以上述 Requirements 为规范准则。

lesefehler lesen 通过 MemIf 读取 NV 块 pruef MemIf 与 CRC 校验 的结果? lesen->pruef erfolg NVM_REQ_OK RAM-Block VALID / UNCHANGED pruef->erfolg in Ordnung inv NVM_REQ_NV_INVALIDATED 不向 Dem 报告 pruef->inv MEMIF_BLOCK_INVALID retry Lesewiederholung (NVM_MAX_NUM_OF_READ_RETRIES) pruef->retry 出错,仍有重试次数 red NVM_BLOCK_REDUNDANT? pruef->red 出错,重试次数已耗尽 retry->lesen zweit zweiten NV-Block lesen red->zweit 是 def Defaultdaten vorhanden? (ROM-Block / Init-Callback) red->def 不 zweitok zweite Kopie in Ordnung? zweit->zweitok wieder 恢复冗余; 若失败则报 NVM_E_LOSS_OF_REDUNDANCY zweitok->wieder 是 zweitok->def 不 wieder->erfolg restore Defaults in RAM laden NVM_REQ_RESTORED_DEFAULTS def->restore 是 fail RAM 块保持无效 NVM_REQ_INTEGRITY_FAILED / NVM_REQ_NOT_OK 向 Dem 报告 def->fail 不

活动图:从重试、冗余副本到默认数据的读取错误处理。解释:该顺序遵循 Error Description 的列举。来源:[SWS_NvM_00526][SWS_NvM_00199][SWS_NvM_00202][SWS_NvM_00341][SWS_NvM_00658],Error Description 第62页

写入时,NvM 统计负面反馈,直至达到NVM_MAX_NUM_OF_WRITE_RETRIES[SWS_NvM_00213][SWS_NvM_00216]。如果超过该限制,它将设置NVM_REQ_NOT_OK并报告NVM_E_REQ_FAILED[SWS_NvM_00683][SWS_NvM_00684](Error Description 第43页)。另外两种错误情况:

在开发错误检测处于激活状态时,NvM 会向 DET 报告误操作。示例包括NVM_E_UNINIT和NVM_E_BLOCK_PENDING[SWS_NvM_00614][SWS_NvM_00615]以及NVM_E_WRITE_PROTECTED[SWS_NvM_00962]。一旦单个块失败,多块请求即以NVM_REQ_NOT_OK结束[SWS_NvM_00318]。用户自行检查其块的状态[SWS_NvM_00694]。读取失败后,用户需在下次写入前提供有效数据[SWS_NvM_00696]。

进一步详细证据

基于 R20-11 要求及相关文档章节的 AI 生成指南。来自其他版本的文档章节仅作为补充。已链接的规范文本始终具有权威性。

NVRAM Manager (NvM)

Provides synchronous and asynchronous block-based data management for non-volatile storage (EEPROM, Flash).

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

函数 NvM_Init [SWS_NvM_00447] 📄 PDF

void NvM_Init (const NvM_ConfigType* ConfigPtr);

Service for resetting all internal variables.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: d241ed15a825 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

函数 NvM_Init 用于同步重置 NVRAM 管理器的所有内部变量 [SWS_NvM_00447]。它期望将指向所选配置数据集的指针作为传递参数 ConfigPtr,并且没有返回值 [SWS_NvM_00447]。作为类型 4 的 API,它是配置类别 2 和 3 的组成部分 [SWS_NvM_00560]、[SWS_NvM_00561]。该函数不可重入,且仅允许由 BSW Mode Manager 调用 [SWS_NvM_00447]、[SWS_NvM_00693]。

初始化任务

在调用期间,该函数执行以下操作:

  • 将所有内部变量(包括状态机、作业队列和请求标志)重置为其初始值 [SWS_NvM_00399]。
  • 将类型为 NVM_BLOCK_DATASET 的所有 NVRAM 块的数据集索引设置为零 [SWS_NvM_00192]。
  • 在内部设置信号“INIT DONE”,该信号是模块中进行作业处理、队列管理和 CRC 重新计算的前提条件 [SWS_NvM_00257]、[SWS_NvM_00399]。

限制与交互

由于对 ECU 启动时间的严格要求,NvM_Init 不初始化任何已配置的 NVRAM 块 [SWS_NvM_00091]。不更改永久 RAM 块内容,也不调用同步回调;这是函数 NvM_ReadAll 专有的功能 [SWS_NvM_00400]。此外,NvM_Init 既不初始化底层驱动程序,也不初始化存储器硬件抽象或第三方模块,因为它们由 BSW Mode Manager 负责初始化被假定为前提条件 [SWS_NvM_00157]、[SWS_NvM_00193]。

本使用说明基于 AUTOSAR 规范 R20-11 自动生成。

实现者指南即将推出(复杂度 I2)

函数 NvM_SetBlockProtection [SWS_NvM_00450] 📄 PDF

Std_ReturnType NvM_SetBlockProtection (NvM_BlockIdType BlockId, boolean ProtectionEnabled);

Service for setting/ resetting the write protection for a NV block. Availabl e via Nv M.h

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: f3fd900b11e8 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

同步且可重入的函数 NvM_SetBlockProtection 用于通过管理块中的相应属性来设置或重置 NVRAM 块的写保护 [SWS_NvM_00450]、[SWS_NvM_00016]。它被分配给 API 配置类别 3 [SWS_NvM_00560]。NvM 模块的环境可以通过参数 ProtectionEnabled 定向启用或禁用写保护 [SWS_NvM_00578]。该函数在成功执行时返回 E_OK,在发生错误时返回 E_NOT_OK [SWS_NvM_00450]。

限制与并发性

仅当块的 NvMWriteBlockOnce 配置为 FALSE 时,才允许更改写保护,无论参数 NvMBlockWriteProt 的值如何 [SWS_NvM_00325]。如果 NvMWriteBlockOnce 配置为 TRUE,则既不允许启用也不允许禁用写保护 [SWS_NvM_00398]、[SWS_NvM_00577];即使在读取操作之后,该保护也无法解除 [SWS_NvM_00314]、[SWS_NvM_00316]、[SWS_NvM_00784]。此外,通过 NvM_SetBlockLockStatus 设置的锁定状态不能通过 NvM_SetBlockProtection 进行修改 [SWS_NvM_00754]。只要针对同一块的单块作业处于激活状态或已排队,该调用就是不允许的 [SWS_NvM_00704]。

错误处理

在启用开发错误检测(DET)时,该函数报告特定的错误状态:

  • NVM_E_UNINIT,如果 NvM 模块尚未初始化 [SWS_NvM_00606]。
  • NVM_E_PARAM_BLOCK_ID:如果传入的 BlockId 超出有效范围 [SWS_NvM_00609]。
  • NVM_E_BLOCK_PENDING,如果该块已有操作处于活动状态或排队中 [SWS_NvM_00607]。
  • NVM_E_BLOCK_CONFIG,如果该块配置为 NvMWriteBlockOnce = TRUE [SWS_NvM_00608]。
  • NVM_E_BLOCK_LOCKED,如果该块已被锁定 [SWS_NvM_00759]。

本使用说明基于 AUTOSAR Classic R20-11 中 NVRAM 管理器的规范。

实现者指南即将推出(复杂度 I2)

函数 NvM_GetErrorStatus [SWS_NvM_00451] 📄 PDF

Std_ReturnType NvM_GetErrorStatus (NvM_BlockIdType BlockId, NvM_RequestResultType* RequestResultPtr);

Service to read the block dependent error/ status information.

函数 NvM_SetRamBlockStatus [SWS_NvM_00453] 📄 PDF

Std_ReturnType NvM_SetRamBlockStatus (NvM_BlockIdType BlockId, boolean BlockChanged);

Service for setting the RAM block status of a permanent RAM block or the status of the explicit synchronization of a NVRAM block.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: f2f026a0e790 来源
译自德文指南AI 生成gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的函数 NvM_SetRamBlockStatus 用于为永久 RAM 块或具有显式同步的块设置 RAM 块状态 [SWS_NvM_00453]。只要通过配置参数 NvMSetRamBlockStatusApi 启用了该函数,它便在 API 配置类别 2 和 3 中可用 [SWS_NvM_00561]、[SWS_NvM_00560] [SWS_NvM_00408]。

通过参数 BlockChanged 控制是将块标记为有效且已更改(TRUE),还是标记为无效且未更改(FALSE)[SWS_NvM_00453]、[SWS_NvM_00406]。在传递 TRUE 时,该模块假定数据有效 [SWS_NvM_00241]。该函数在状态更改成功时返回 E_OK,在出错时返回 E_NOT_OK [SWS_NvM_00453]。

如果将 BlockChanged 设置为 TRUE,且如果配置了 NvMCalcRamBlockCrc,则该函数在后台请求在 NvM_MainFunction 中重新计算校验和 [SWS_NvM_00121]。对于具有显式同步的无永久 RAM 块,该作业使用写回调来获取数据 [SWS_NvM_00906]。如果写回调失败,则在每次调用 NvM_MainFunction 时执行配置的重试 [SWS_NvM_00907]、[SWS_NvM_00908]。如果所有尝试均不成功,该作业仍被视为已结束,并且该块保持标记为已更改 [SWS_NvM_00909]。

在调用之前,NvM 模块必须已经初始化 [SWS_NvM_00711]。当开发错误检测处于激活状态时,如果模块未初始化,该函数报告 NVM_E_UNINIT [SWS_NvM_00643];如果 BlockId 无效,报告 NVM_E_PARAM_BLOCK_ID [SWS_NvM_00645];如果作业已在运行或排队,报告 NVM_E_BLOCK_PENDING [SWS_NvM_00644]。只要单块作业处于激活状态,就不得针对该块调用此函数 [SWS_NvM_00704]。通过 NvM_SetBlockLockStatus 设置的块锁定无法据此更改 [SWS_NvM_00754]。

本使用说明基于 AUTOSAR 规范 R20-11 自动生成。

实现者指南即将推出(复杂度 I2)

函数 NvM_SetBlockLockStatus [SWS_NvM_00548] 📄 PDF

void NvM_SetBlockLockStatus (NvM_BlockIdType BlockId, boolean BlockLocked);

Service for setting the lock status of a permanent RAM block or of the explicit synchronization of a NVRAM block.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 9c1d841bb0f7 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

同步且可重入的函数 NvM_SetBlockLockStatus 用于锁定(BlockLocked = TRUE)或解锁(BlockLocked = FALSE)永久配置的 RAM 块或 NVRAM 块的显式同步 [SWS_NvM_00548]。它属于 API 配置类 2 和 3 的功能范围 [SWS_NvM_00561]、[SWS_NvM_00560]。该函数未包含在 ServicePort 接口中,主要由 DCM 以及复杂设备驱动程序(CDD)调用 [SWS_NvM_00732]。

限制与交互

该调用仅对具有永久 RAM 块或配置了显式同步的 NVRAM 块有效;对于所有其他块则不起作用 [SWS_NvM_00732]。若锁定某个块(BlockLocked = TRUE),NvM 确保关联的 NV 数据不被修改:该块在 NvM_WriteAll 时被跳过,且服务 NvM_WriteBlock、NvM_WritePRAMBlock、NvM_InvalidateNvBlock 以及 NvM_EraseNvBlock 被拒绝 [SWS_NvM_00751]。在下一次启动时,NvM 在 NvM_ReadBlock 或 NvM_ReadPRAMBlock 时保证从 NV 存储器加载该块 [SWS_NvM_00752]。已设置的锁定状态既不能通过 NvM_SetRamBlockStatus 也不能通过 NvM_SetBlockProtection 进行修改 [SWS_NvM_00754]。传递 BlockLocked = FALSE 可恢复常规处理 [SWS_NvM_00753]。

错误处理

在开发检测(DET)激活时,该函数报告特定的开发错误:

  • NVM_E_UNINIT:若在调用时 NvM 模块尚未初始化 [SWS_NvM_00728]。
  • NVM_E_PARAM_BLOCK_ID:当参数 BlockId 超出允许范围时 [SWS_NvM_00731]。
  • NVM_E_BLOCK_CONFIG:只要引用的 NVRAM 块配置了参数 NvMWriteBlockOnce = TRUE [SWS_NvM_00730]。

本使用说明基于 AUTOSAR Classic 规范 R20-11,总结了该 API 在调用、保护作用和错误处理方面的要求。

实现者指南即将推出(复杂度 I2)

函数 NvM_CancelJobs [SWS_NvM_00535] 📄 PDF

Std_ReturnType NvM_CancelJobs (NvM_BlockIdType BlockId);

Service to cancel all jobs pending for a NV block.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 692d02b963f0 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

通过 NvM.h 提供的函数 NvM_CancelJobs 用于同步中止针对特定 NVRAM 块在队列中挂起的所有作业 [SWS_NvM_00535]、[SWS_NvM_00536]。该函数设计为可重入,并期望接收 BlockId 作为参数,该参数唯一标识相关 NVRAM 块的块描述符 [SWS_NvM_00535]。若能成功从队列中移除挂起的作业,调用将返回 E_OK;若在队列中未找到指定块的作业,则返回 E_NOT_OK [SWS_NvM_00535]。

流程与并发性

在函数调用时若某个作业已处于活动处理状态,则该作业不会被 NvM_CancelJobs 中断,而是继续运行直至结束 [SWS_NvM_00537]。只要针对等待作业的中止请求被接受,该服务就会预先将块特定的请求结果置为 NVM_REQ_CANCELED [SWS_NvM_00225]、[SWS_NvM_00536]。这种清理的目的在于,例如在分区终止或重启时清空队列,从而阻止针对已完成作业的后续通知 [SWS_NvM_00225]。

错误处理与配置

在开发检测(DET)激活时,该函数检查前置条件:若模块尚未初始化,则报告错误 NVM_E_UNINIT [SWS_NvM_00648]。若传递的 BlockId 超出有效范围,则发出 DET 报告 NVM_E_PARAM_BLOCK_ID [SWS_NvM_00649]。NvM_CancelJobs 被归类为类型 2 API,并在 API 配置类 2 和 3 中可用 [SWS_NvM_00561]、[SWS_NvM_00560]。

此使用说明基于AUTOSAR规范自动生成。

实现者指南即将推出(复杂度 I2)

函数 NvM_ReadBlock [SWS_NvM_00454] 📄 PDF

Std_ReturnType NvM_ReadBlock (NvM_BlockIdType BlockId, void* NvM_DstPtr);

Service to copy the data of the NV block to its corresponding RAM block.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 423f54bb75f5 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

函数 NvM_ReadBlock 用于将有效数据从 NV 存储器异步复制到关联的 RAM 块中 [SWS_NvM_00010]、[SWS_NvM_00454]。该调用是可重入的 [SWS_NvM_00454]。它接收参数,将读取作业排入内部作业队列,并在成功接收时立即返回 E_OK,在拒绝时立即返回 E_NOT_OK [SWS_NvM_00195]、[SWS_NvM_00454]。

若传递了指针 NvM_DstPtr,则可以不同于块配置将数据读取到临时 RAM 缓冲区中;在这种情况下,非法的 NULL 指针会导致 DET 错误 [SWS_NvM_00196]、[SWS_NvM_00278]。已配置的永久 RAM 块在排队时或在作业处理开始时直接被标记为无效 [SWS_NvM_00198]。只有在成功完成复制过程后,RAM 块才被视为有效且未更改 [SWS_NvM_00200],并且作业结果变为 NVM_REQ_OK [SWS_NvM_00206]。

错误处理与数据完整性

如果为该块启用了校验和(NvMCalRamBlockCrC == TRUE),则作业在复制后会请求重新计算 [SWS_NvM_00201]:

  • 在发生 CRC 错误时,将 NVM_E_INTEGRITY_FAILED 报告给 DEM [SWS_NvM_00203]。如果存在默认值,则加载默认值并将结果设置为 NVM_REQ_RESTORED_DEFAULTS [SWS_NvM_00202]。若缺少 ROM 数据和初始化回调,则导致 NVM_REQ_INTEGRITY_FAILED [SWS_NvM_00204]。
  • 若存储器驱动报告 MEMIF_JOB_FAILED 且没有替代值可用,则作业以 NVM_REQ_NOT_OK 结束 [SWS_NvM_00359]。

块类型的特殊特性

  • Redundant:若读取第一份副本失败,则自动使用第二份 NV 副本 [SWS_NvM_00199]。如果两份副本均无效,则整个块被作废 [SWS_NvM_00317]。
  • Dataset:如果通过数据集索引选择的块被标记为无效,则不会复制到 RAM 中 [SWS_NvM_00355]。
  • Write-Once:一致读取且设置了 NVM_WRITE_BLOCK_ONCE 的块将被永久写保护 [SWS_NvM_00316]。

本文档由 AI 生成,完全基于 Release R20-11 的规范。

实现者指南即将推出(复杂度 I2)

函数 NvM_WriteBlock [SWS_NvM_00455] 📄 PDF

Std_ReturnType NvM_WriteBlock (NvM_BlockIdType BlockId, const void* NvM_SrcPtr);

Service to copy the data of the RAM block to its corresponding NV block. Available vi a Nv M.h

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: d2775f30ff1b 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 NvM_WriteBlock 用于将 RAM 块的数据复制到分配的 NV 块中 [SWS_NvM_00455]、[SWS_NvM_00410]。该调用以可重入和异步方式执行:该函数接收传递的参数 BlockId 以及 NvM_SrcPtr,将写入作业排入内部作业队列,并立即返回 [SWS_NvM_00208]。返回值通过 E_OK 表示作业已被成功接收,或通过 E_NOT_OK 表示作业已被拒绝 [SWS_NvM_00455]。

关于参数化和数据源,适用以下规定:

  • 如果通过 NvM_SrcPtr 传递了有效的 RAM 地址,写入作业将使用此缓冲区 [SWS_NvM_00210]。这也允许在实际配置为永久块或具有显式同步的块中备份临时 RAM 块 [SWS_NvM_00280]。
  • 配置的永久 RAM 块被假定为有效,或者在复制过程之前自动进行有效性验证 [SWS_NvM_00303]。
  • 如果为 NV 块配置了校验和,则作业在写入过程之前请求重新计算 CRC [SWS_NvM_00212]。
  • 对于数据集块(NVM_BLOCK_DATASET),通过管理块中保存的数据索引选择目标 [SWS_NvM_00338]。
  • 对于冗余块(NVM_BLOCK_REDUNDANT),一旦至少有一个副本成功写入,作业即以 NVM_REQ_OK 结束 [SWS_NvM_00284]。
  • 若设置了 NvMWriteBlockOnce == TRUE,则作业在成功写入后立即激活管理块中的写保护 [SWS_NvM_00328]。
  • 针对保留块 ID 1 的写作业仅在激活 NvMDynamicConfiguration 时允许 [SWS_NvM_00311]。

错误处理与并发性:

  • 若开发错误检测处于激活状态,当模块未初始化时 NvM_WriteBlock 报告 DET 错误 NVM_E_UNINIT [SWS_NvM_00619];若同一块已在处理中或已排队,则报告 NVM_E_BLOCK_PENDING [SWS_NvM_00620]。临时缓冲区缺少源指针会导致 DET 参数错误 [SWS_NvM_00280]。
  • 存储接口的负反馈会增加重试计数器;超过 NVM_MAX_NUM_OF_WRITE_RETRIES 后,作业以 NVM_REQ_NOT_OK 结束 [SWS_NvM_00213],[SWS_NvM_00216]。
  • 若该块配置了立即优先级,NvM_WriteBlock 会破坏性地中止当前正在运行的作业,以便接下来处理写请求 [SWS_NvM_00300]。

此使用说明基于 AUTOSAR 规范自动生成。

实现者指南即将推出(复杂度 I2)

函数 NvM_RestoreBlockDefaults [SWS_NvM_00456] 📄 PDF

Std_ReturnType NvM_RestoreBlockDefaults (NvM_BlockIdType BlockId, void* NvM_DestPtr);

Service to restore the default data to its corr esponding RAM block.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 01efa016ebb0 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

函数 NvM_RestoreBlockDefaults 在分配的 RAM 块中恢复默认数据([SWS_NvM_00456]、[SWS_NvM_00012])。它采用异步工作方式:调用后接收参数,将请求排入内部作业队列,并在成功接收时立即返回 E_OK,在拒绝时返回 E_NOT_OK([SWS_NvM_00456]、[SWS_NvM_00224])。若通过输出参数 NvM_DestPtr 传递了有效的 RAM 地址,则将其用作目标地址([SWS_NvM_00435])。为了在配置了永久 RAM 块或同步回调的情况下将 ROM 数据复制到临时 RAM 块中,调用方必须强制传递不等于 NULL 的指针([SWS_NvM_00436])。

错误处理与边界条件

该函数为不可重入([SWS_NvM_00456]),属于 API 配置类 2 和 3([SWS_NvM_00561]、[SWS_NvM_00560])。若开发错误检测(DET)处于激活状态,当模块尚未初始化时它会报告 NVM_E_UNINIT([SWS_NvM_00625]),当 BlockId 无效时报告 NVM_E_PARAM_BLOCK_ID([SWS_NvM_00630]),以及当针对永久配置的块进行临时复制而未传递有效目标指针时报告参数错误([SWS_NvM_00436])。当块属于类型 NVM_BLOCK_DATASET、存在至少一个 ROM 块且当前数据索引指向 NV 块时,该函数同步失败并返回 E_NOT_OK([SWS_NvM_00353])。

作业处理与协同交互

作为异步作业处理的一部分,该服务从配置的 ROM 块中加载默认值([SWS_NvM_00267])。如果请求了永久 RAM 块或使用了显式同步回调(NvMReadRamBlockFromNvCallback),则在复制过程之前或在调用回调之前将 RAM 块作废([SWS_NvM_00227])。在复制过程成功之后或在同步回调返回 E_OK 之后,RAM 块被验证并标记为已更改([SWS_NvM_00228])。如果为该块配置了校验和,则作业最后会请求重新计算 CRC([SWS_NvM_00229])。NvM_ReadBlock 和 NvM_ReadAll 也使用相同的恢复逻辑,作为存储器读取访问错误或 CRC 错误时的后备机制([SWS_NvM_00202]、[SWS_NvM_00293]、[SWS_NvM_00657])。

此使用说明基于 AUTOSAR Classic R20-11 规范自动生成。

实现者指南即将推出(复杂度 I2)

函数 NvM_EraseNvBlock [SWS_NvM_00457] 📄 PDF

Std_ReturnType NvM_EraseNvBlock (NvM_BlockIdType BlockId);

Service to erase a NV block.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: e5129c2997d6 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

API 配置类 3([SWS_NvM_00560])的可重入异步函数 NvM_EraseNvBlock([SWS_NvM_00457])用于根据传入的 BlockId 删除非易失性存储块。只要写保护未处于活动状态,该函数就会接收参数,将删除作业排入内部作业队列并立即返回([SWS_NvM_00231]、[SWS_NvM_00418])。返回值 E_OK 表示成功接收作业,而 E_NOT_OK 表示被拒绝([SWS_NvM_00457])。

在调用之前,NvM 模块必须已完全初始化([SWS_NvM_00715])。在排队之后,从队列中取出作业之前不会再次检查写保护([SWS_NvM_00662])。对于类型为 NVM_BLOCK_REDUNDANT 的冗余块,仅当两个冗余 NV 块均已删除时,删除过程才被视为成功([SWS_NvM_00269])。所分配 RAM 块的数据内容在作业处理过程中始终保持不变([SWS_NvM_00416])。

如果寻址了数据集块的 ROM 块([SWS_NvM_00661])或者通过 NvM_SetBlockLockStatus 禁用了该块([SWS_NvM_00751]),则调用将被拒绝。当开发错误检测(DET)激活时,该函数在模块未初始化时报告 NVM_E_UNINIT([SWS_NvM_00631]),在 BlockId 无效时报告 NVM_E_PARAM_BLOCK_ID([SWS_NvM_00635]),并在块被阻塞时报告 NVM_E_BLOCK_LOCKED([SWS_NvM_00757])。如果该块不具有立即优先级(“immediate priority”)或配置了标准优先级,则在 DET 激活时会报告错误 NVM_E_BLOCK_CONFIG 并返回 E_NOT_OK([SWS_NvM_00357]、[SWS_NvM_00636])。如果随后的异步执行失败,则请求状态被设置为 NVM_REQ_NOT_OK([SWS_NvM_00271]),并将 NVM_E_REQ_FAILED 报告给 DEM([SWS_NvM_00663])。

本使用说明基于规范自动生成。

实现者指南即将推出(复杂度 I2)

函数 NvM_InvalidateNvBlock [SWS_NvM_00459] 📄 PDF

Std_ReturnType NvM_InvalidateNvBlock (NvM_BlockIdType BlockId);

Service to invalidate a NV block.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: a20887273850 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 NvM_InvalidateNvBlock 是 API 配置类 3 的一个异步且可重入服务,用于使 NV 块无效 [SWS_NvM_00459]、[SWS_NvM_00560]。其调用条件是:NvM 模块必须事先已由模块环境初始化 [SWS_NvM_00717]。该调用接收参数 BlockId,在写保护禁用的情况下将请求排入队列,并返回 E_OK [SWS_NvM_00239]、[SWS_NvM_00424]。若无法接受该作业,则函数返回 E_NOT_OK [SWS_NvM_00459]。

如果通过 BlockId 指定了数据集块(Dataset)的 ROM 块,则调用将被同步拒绝并返回 E_NOT_OK [SWS_NvM_00664]。若该块此前已通过 NvM_SetBlockLockStatus 锁定,NvM 将拒绝该作业 [SWS_NvM_00751],并在开发接口激活时报告 DET 错误 NVM_E_BLOCK_LOCKED [SWS_NvM_00756]。若该块已排队或正在执行,则发出 DET 报告 NVM_E_BLOCK_PENDING [SWS_NvM_00639]。

实际的异步作业在考虑以下约束条件的前提下使引用的 NV 块无效 [SWS_NvM_00421]:

  • 对于冗余块(NVM_BLOCK_REDUNDANT),只有当两个冗余 NV 块均成功失效后,作业结果才会被置为 NVM_REQ_OK [SWS_NvM_00274];相同的机制也应用于 NvM_FirstInitAll [SWS_NvM_00919]、[SWS_NvM_00920]。
  • 对于具有 NVM_WRITE_BLOCK_ONCE 的块,作业保持写保护不变 [SWS_NvM_00960]。若此前未进行读取过程,作业将报告 DET 错误 NVM_E_WRITE_ONCE_STATUS_UNKNOWN [SWS_NvM_00958]。
  • 若在异步处理期间发生错误,请求结果将被置为 NVM_REQ_NOT_OK [SWS_NvM_00275],并将生产错误 NVM_E_REQ_FAILED 发送至 DEM [SWS_NvM_00666]。

本使用说明由 AI 生成,完全基于 AUTOSAR R20-11 的规范数据。

实现者指南即将推出(复杂度 I2)

函数 NvM_ReadPRAMBlock [SWS_NvM_00764] 📄 PDF

Std_ReturnType NvM_ReadPRAMBlock (NvM_BlockIdType BlockId);

Service to copy the data of the NV block to its corresponding permanent RAM block.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 657ec2501bdc 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

异步且可重入的函数 [SWS_NvM_00764] 用于将 NV 块的数据复制到关联的永久 RAM 块中。该调用接收 BlockId,将读取请求排入内部作业队列并立即返回 [SWS_NvM_00766]。返回值 E_OK 确认接受作业,而 E_NOT_OK 表示拒绝 [SWS_NvM_00764]。该函数属于 API 配置类 2 和 3 的功能范围 [SWS_NvM_00560]、[SWS_NvM_00561]。

流程与同步

随着作业成功排队或处理开始,永久 RAM 块立即失效 [SWS_NvM_00767]。若为该块设置了显式同步,应用程序可以在同步例程到达之前修改 RAM 块;在此情况下,失效操作直接在调用 NvMReadRamBlockFromNvCallback 之前执行 [SWS_NvM_00706]、[SWS_NvM_00767]。若 NV 数据无错误地传输到 RAM 中,作业以状态 NVM_REQ_OK 结束 [SWS_NvM_00765]、[SWS_NvM_00775]。

错误处理与冗余

对于类型为 NVM_BLOCK_REDUNDANT 的块,若第一次读取尝试失败,作业会自动在第二个块上启动读取尝试 [SWS_NvM_00768]。对于数据集(NVM_BLOCK_DATASET),若通过索引选择的 NV 块不一致,则阻止复制 [SWS_NvM_00771];若索引指向 ROM 数据,则加载该数据并将结果置为 NVM_REQ_OK [SWS_NvM_00772]。若配置了默认数据且在 RAM 状态无效时 NV 块不可读,则执行隐式恢复 [SWS_NvM_00575],该恢复将 RAM 块归类为有效且已更改 [SWS_NvM_00774];若未配置预设值,则不执行恢复 [SWS_NvM_00572]。若此前 NvM_SetBlockLockStatus 处于活动状态,则强制从 NV 存储器重新加载 [SWS_NvM_00752]。

本使用说明是基于 AUTOSAR CP R20-11 规范版本自动生成的。

实现者指南即将推出(复杂度 I2)

函数 NvM_WritePRAMBlock [SWS_NvM_00793] 📄 PDF

Std_ReturnType NvM_WritePRAMBlock (NvM_BlockIdType BlockId);

Service to copy the data of the permanent RAM block to its corresponding NV block.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 5a26959f15b3 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

可重入的异步函数 NvM_WritePRAMBlock 触发将永久 RAM 块的数据写入关联的 NV 块 [SWS_NvM_00793]、[SWS_NvM_00794]。该函数在 API 配置类 2 和 3 中可用 [SWS_NvM_00561]、[SWS_NvM_00560]。仅当 NvMDynamicConfiguration 设置为 TRUE 时,才允许传递保留的块 ID 1 [SWS_NvM_00311]。

在传递时,函数在成功接受时返回 E_OK,否则返回 E_NOT_OK [SWS_NvM_00793]。若引用的块被锁定,调用失败并返回 E_NOT_OK,且模块报告 DET 错误 [SWS_NvM_00797]。块保护在排入作业队列时即被检查,在作业执行前不再重新验证 [SWS_NvM_00799]。若 NVRAM 块具有即时优先级(immediate priority),则当前正在运行的作业被立即破坏性中止,且该写作业作为下一个作业被处理 [SWS_NvM_00800]。

在实际传输到 NV 存储器之前,若块配置了 CRC,作业会请求 CRC 重新计算 [SWS_NvM_00801]。尚无效的永久 RAM 块将自动验证为有效 [SWS_NvM_00803]。对于冗余块(NVM_BLOCK_REDUNDANT),将对两个 NV 块进行写入,从先前读取作业中未读取的那个块开始 [SWS_NvM_00807]、[SWS_NvM_00808]。在发生写入错误时,重试次数受 NVM_MAX_NUM_OF_WRITE_RETRIES 限制 [SWS_NvM_00806];若发生溢出,NvM 将作业结果置为 NVM_REQ_NOT_OK [SWS_NvM_00804] 并向 DEM 报告 NVM_E_REQ_FAILED [SWS_NvM_00805]。

关于并发性:在隐式同步时,应用程序在调用后直至作业结束不得再修改缓冲区数据,读取访问仍被允许 [SWS_NvM_00698]。在显式同步时,允许修改缓冲区,直到回调例程 NvMWriteRamBlockToNvCallback 被调用 [SWS_NvM_00705]。

本段文本由 AI 生成,用于依据规范提供技术参考。

实现者指南即将推出(复杂度 I2)

函数 NvM_RestorePRAMBlockDefaults [SWS_NvM_00813] 📄 PDF

Std_ReturnType NvM_RestorePRAMBlockDefaults (NvM_BlockIdType BlockId);

Service to restore the default data to its corresponding permanent RAM block.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: ffad126a6872 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

函数 NvM_RestorePRAMBlockDefaults 在关联的永久 RAM 块中恢复默认数据([SWS_NvM_00813]、[SWS_NvM_00814])。该服务异步工作,并通过参数 BlockId 接收 NVRAM 块描述符的标识符([SWS_NvM_00813])。调用时,请求被排入内部作业队列中([SWS_NvM_00815])。返回值 E_OK 表示成功接受,而 E_NOT_OK 表示拒绝([SWS_NvM_00813])。若配置了 ROM 块,则在异步处理的框架下从中加载数据([SWS_NvM_00816])。

错误处理与边界条件

若既未为该块指定 ROM 默认数据,也未指定回调例程 NvMInitBlockCallback,则块状态保持不变,且调用返回 E_NOT_OK([SWS_NvM_00884])。在开发检测(DET)激活时,报告特定错误:

  • NVM_E_UNINIT:模块尚未初始化([SWS_NvM_00831])。
  • NVM_E_PARAM_BLOCK_ID:传入的 BlockId 超出有效范围([SWS_NvM_00834])。
  • NVM_E_BLOCK_PENDING:该块 ID 已有作业排队或正在处理([SWS_NvM_00832])。
  • NVM_E_BLOCK_WITHOUT_DEFAULTS:既不存在 ROM 默认数据也不存在初始化回调([SWS_NvM_00886])。
  • NVM_E_PARAM_ADDRESS:既未配置永久 RAM 块也未配置显式同步([SWS_NvM_00894])。

并发性与交互

该服务被指定为不可重入([SWS_NvM_00813]),并在 API 配置类 2 和 3 中可用([SWS_NvM_00561]、[SWS_NvM_00560])。若底层读取过程失败,相同的恢复逻辑还会在内部应用于 NvM_ReadPRAMBlock([SWS_NvM_00789]、[SWS_NvM_00882])。

本使用说明基于 AUTOSAR Classic Release R20-11 的规范。

实现者指南即将推出(复杂度 I2)

函数 NvM_ReadAll [SWS_NvM_00460] 📄 PDF

void NvM_ReadAll (void);

Initiates a multi block read request.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: d6aaa62b8e91 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 NvM_ReadAll 异步触发多块读作业以初始化 RAM 数据块 [SWS_NvM_00460]、[SWS_NvM_00158]。它没有参数,不提供返回值,并且不可重入 [SWS_NvM_00460]。该调用向 NvM 模块发出请求信号并立即返回;但实际处理会延迟,直到所有单块作业队列为空 [SWS_NvM_00243]。

在开始时,该作业在系统启动期间通过比较存储的值与编译的值来验证配置 ID [SWS_NvM_00073]、[SWS_NvM_00246]:

  • 若一致,则对所有已配置的块执行常规准备 [SWS_NvM_00247]。
  • 若设置了 NvMDynamicConfiguration == FALSE,则配置差异将被忽略 [SWS_NvM_00248]。
  • 若 NvMDynamicConfiguration == TRUE 且 NvMResistantToChangedSw == FALSE,则在不一致时执行扩展准备 [SWS_NvM_00249]。

随后,该作业遍历所有用户块,从最低的块 ID 开始(保留 ID 0 和 1 除外)[SWS_NvM_00244]。只要配置了 NvmSelectBlockForReadall == TRUE,就会考虑永久 RAM 块或配置了同步回调的块 NvM_ReadRamBlockFromNvm [SWS_NvM_00118]。未读取但被选中的块将获得结果 NVM_REQ_BLOCK_SKIPPED [SWS_NvM_00287]。

对于冗余块(NVM_BLOCK_REDUNDANT),若第一次读取尝试失败,将自动读取第二个 NV 块 [SWS_NvM_00288]。成功加载到 RAM 后,块状态设置为“valid/unmodified”,且作业结果设置为 NVM_REQ_OK [SWS_NvM_00251]、[SWS_NvM_00290]、[SWS_NvM_00291]。对于带有 NvMCalRamBlockCrC == TRUE 的块,作业会请求重新计算 CRC [SWS_NvM_00292]。如果已配置,将对每个块调用 NvMSingleBlockCallback,并在最后一个块之后调用 MultiBlockCallback [SWS_NvM_00281]。

本使用说明基于 AUTOSAR Classic R20-11 的规范要求。

实现者指南即将推出(复杂度 I1)

函数 NvM_WriteAll [SWS_NvM_00461] 📄 PDF

void NvM_WriteAll (void);

Initiates a multi block write request.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: a7a2e73b7711 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

函数 NvM_WriteAll 异步触发多块写作业,既没有参数也没有返回值 [SWS_NvM_00461]。调用后,该函数向 NvM 模块发出请求信号并立即返回 [SWS_NvM_00254]。实际处理被推迟,直到单块作业的所有队列完全处理完毕 [SWS_NvM_00254]。该调用通常在 BSW Mode Manager 执行的基本关闭过程(Shutdown)框架内进行 [SWS_NvM_00092]。

流程与块处理

在关闭期间,该作业将永久 RAM 块与关联的 NV 块同步,或执行显式同步回调 NvM_WriteRamBlockToNvm [SWS_NvM_00018]。此时仅考虑配置参数 NvMSelectBlockForWriteAll 设置为 true 的块 [SWS_NvM_00252],以及在动态配置处于激活状态且配置 ID 不一致情况下的块 1 [SWS_NvM_00310]。如果为 NVRAM 块配置了 CRC,则作业在写入过程之前请求重新计算并更新校验和 [SWS_NvM_00253]。对于带有 NvMWriteBlockOnce == TRUE 的块,作业在成功写入后立即在管理块中设置写保护标志 [SWS_NvM_00329]。

并发与错误处理

  • 重入性:该函数不可重入 [SWS_NvM_00461]。
  • 错误监控:为了避免死循环,重试计数器会在 MemIf 模块返回未成功反馈时监控重试尝试 [SWS_NvM_00296]。
  • 作业结果:若至少一个块的处理失败,则总结果设置为 NVM_REQ_NOT_OK [SWS_NvM_00318]。对于已配置但未写入的块,单个结果设置为 NVM_REQ_BLOCK_SKIPPED [SWS_NvM_00298]。对于冗余块(NVM_BLOCK_REDUNDANT),一旦成功写入至少一个 NV 块,单项作业即视为 NVM_REQ_OK [SWS_NvM_00337]。
  • 中止:正在运行的作业可以通过 NvM_CancelWriteAll 中止 [SWS_NvM_00019]。这会导致总结果为 NVM_REQ_CANCELED [SWS_NvM_00237],其中当前正在处理的块将以非破坏性且数据一致的方式完成 [SWS_NvM_00238]。

本文本由 AI 生成,仅供参考。一切以 AUTOSAR 规范为准。

实现者指南即将推出(复杂度 I1)

函数 NvM_CancelWriteAll [SWS_NvM_00458] 📄 PDF

void NvM_CancelWriteAll (void);

Service to cancel a running Nv M_ Write All request.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 2a47a7f76a8b 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与语义

函数 NvM_CancelWriteAll 用于提前中止正在运行的多块写操作(NvM_WriteAll)[SWS_NvM_00458]、[SWS_NvM_00019]。该调用为异步、不可重入,不接收任何参数,且不提供返回值 [SWS_NvM_00458]。该函数直接向模块发出中止请求信号并立即返回 [SWS_NvM_00232]。该请求不会排入作业队列;始终只能有一个此类型的请求挂起 [SWS_NvM_00420]。如果在调用时没有操作处于活动状态,则该调用不起任何作用 [SWS_NvM_00233]。

流程与数据一致性

中止的执行方式使得中止时正在处理的 NVRAM 块的数据一致性不受影响 [SWS_NvM_00019]。该模块正常结束此活动块,并根据成功与否将其状态属性设置为 NVM_REQ_OK 或 NVM_REQ_NOT_OK,而所有剩余的待处理块均被设置为 NVM_REQ_CANCELED [SWS_NvM_00236]。总结果由已中止操作的结果隐式给定 [SWS_NvM_00235],存储在单独的变量中 [SWS_NvM_00393],并且可以通过指定保留的块 ID 0 经由 NvM_GetErrorStatus 查询 [SWS_NvM_00394]。此外,可以选择通知上层回调(NvMMultiBlockCallback)[SWS_NvM_00260]。如果通过 NvMDrvModeSwitch 配置,该作业将在中止后将存储设备切换到慢速运行模式(“slow-mode”)[SWS_NvM_00681]。

限制与错误处理

NvM_CancelWriteAll 的调用受到功能限制,仅允许由 BSW 模式管理器(BswM)执行 [SWS_NvM_00703]。此外,该函数属于 API 配置类 2 [SWS_NvM_00561]。该模块在调用前必须已经初始化 [SWS_NvM_00716];当开发错误检测(DET)激活时,在未初始化状态下调用会导致错误消息 NVM_E_UNINIT [SWS_NvM_00637]。

本使用说明基于 AUTOSAR 规范 R20-11 自动生成。

实现者指南即将推出(复杂度 I1)

函数 NvM_ValidateAll [SWS_NvM_00855] 📄 PDF

void NvM_ValidateAll (void);

Initiates a multi block validation request.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 234ca1eec615 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 NvM_ValidateAll 发起对多个 NVRAM 块的异步验证([SWS_NvM_00855]),并属于 API 配置类 3([SWS_NvM_00560])。它是不可重入的,不期望参数且不提供返回值([SWS_NvM_00855])。在调用之前,NvM 模块必须已初始化([SWS_NvM_00859])。

调用时,该函数向模块发出请求信号并立即返回([SWS_NvM_00858])。然而,实际处理会延迟到所有单块作业队列完全处理完毕([SWS_NvM_00858])。在作业队列中总共仅有一个位置可用于多块作业([SWS_NvM_00380])。异步作业的总体结果保存在一个单独的状态变量中([SWS_NvM_00393])。

在作业处理的框架下,预先将多块结果以及受影响单块的结果均置为 NVM_REQ_PENDING([SWS_NvM_00861])。处理仅考虑将 NvMBlockUseAutoValidation 配置为 TRUE 的块([SWS_NvM_00856]、[SWS_NvM_00860]):

  • 处理永久 RAM 块或通过回调 NvM_WriteRamBlockToNvm 执行显式同步([SWS_NvM_00860])。
  • RAM 块状态被置为“VALID / CHANGED”([SWS_NvM_00856])。
  • 若在 RAM 中另外配置了 CRC 计算,该作业在后台请求重新计算,该计算通过 NvM_MainFunction 处理([SWS_NvM_00857])。
  • 在成功验证 RAM 块后,块特定结果变为 NVM_REQ_OK([SWS_NvM_00862])。

本使用说明基于 AUTOSAR 规范 R20-11 自动生成。

实现者指南即将推出(复杂度 I1)

函数 NvM_FirstInitAll [SWS_NvM_91001] 📄 PDF

void NvM_FirstInitAll (void);

The function initiates a multi block first initialization request. The job of the function does not care if a block exists in the non - volatile memory or not OR if it is valid (i.e. not corrupted) or not, when processing it.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 97732570bd55 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 NvM_FirstInitAll 发起对多个已配置块的异步初次初始化([SWS_NvM_91001])。该服务不可重入,不期望参数且不提供返回值([SWS_NvM_91001])。在处理时不考虑非易失性存储器中的块是否已存在、有效或损坏([SWS_NvM_91001])。多块作业(包括来自 NvM_FirstInitAll 的作业)的队列长度为 1,因此同时只能排队一个多块作业([SWS_NvM_00380])。

处理方式根据块的管理类型而有所不同:

  • NATIVE:若存在默认数据,则使用其写入 NV 块([SWS_NvM_00913])。若块具有永久 RAM 或显式同步,则像 NvM_RestoreBlockDefaults 一样使用默认数据(ROM 或初始化回调)更新 RAM([SWS_NvM_00915]);在没有永久 RAM 且没有显式同步的情况下,NvM 内部缓冲区用作 RAM,此时 RAM 状态保持不变([SWS_NvM_00914])。若缺少默认数据([SWS_NvM_00919])或配置的初始化回调因返回值不等于 E_OK 而失败([SWS_NvM_00921]),则该块被失效。
  • REDUNDANT:若存在默认数据,则使用其写入两个块实例([SWS_NvM_00916]),并在存在永久 RAM 或显式同步时更新 RAM([SWS_NvM_00918]);否则使用内部缓冲区([SWS_NvM_00917])。若初始化回调未返回 E_OK,则两个实例均失效([SWS_NvM_00922])。
  • DATASET:为此处理配置的所有该类型块或 NV 块实例无一例外地失效([SWS_NvM_00923]、[SWS_NvM_00924])。

若使用默认数据写入 NATIVE 块([SWS_NvM_00925])、使 NATIVE 块失效([SWS_NvM_00927])或写入 REDUNDANT 块的两个实例([SWS_NvM_00926])失败,作业将总体结果置为 NVM_REQ_NOT_OK。

本段文本由 AI 基于规范 R20-11 生成。

实现者指南即将推出(复杂度 I1)

函数 NvM_JobEndNotification [SWS_NvM_00462] 📄 PDF

void NvM_JobEndNotification (void);

Function to be used by the underlying memory abstraction to signal end of job without error.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 44e91f5e39db 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步回调函数 NvM_JobEndNotification 由底层存储器抽象调用,以向 NVRAM 管理器通知作业的无错误结束 [SWS_NvM_00462]。该函数既无参数也无返回值,可通过头文件 NvM_MemIf.h 获取,服务 ID 为 0x11 [SWS_NvM_00462]。存储器抽象的成功通知包括无错误完成的读取、写入或擦除操作 [SWS_NvM_00111]。

并发性与限制

该接口被指定为不可重入 [SWS_NvM_00462]。取决于存储器抽象内部的调用函数,该例程可以在中断上下文中执行 [SWS_NvM_00111]。存储器抽象的所有模块应配置为一致地使用相同的模式——回调或轮询 [SWS_NvM_00111]。

配置与交互

仅当通过配置参数 NvMPollingMode 禁用轮询模式时,NvM 模块才提供回调函数 NvM_JobEndNotification [SWS_NvM_00440]。此外,该函数受通用 NvM 配置参数的影响 [SWS_NvM_00440]。

此使用说明基于 AUTOSAR 规范 R20-11。

实现者指南即将推出(复杂度 I1)

函数 NvM_JobErrorNotification [SWS_NvM_00463] 📄 PDF

void NvM_JobErrorNotification (void);

Function to be used by the underlying memory abstraction to signal end of job with error.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: aca80117b4e4 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

回调函数 NvM_JobErrorNotification([SWS_NvM_00463])用于底层存储器抽象层向 NVRAM 管理器模块(NvM)通知异步作业的有错误结束。调用为同步进行,并被指定为不可重入([SWS_NvM_00463])。

使用与签名

  • 接口:函数声明通过头文件 NvM_MemIf.h 提供([SWS_NvM_00463])。
  • 签名:根据 void NvM_JobErrorNotification(void),该函数既无输入、输出也无输入/输出参数,且不提供返回值([SWS_NvM_00463])。
  • 服务 ID:该函数通过十六进制标识符 0x12 进行标识([SWS_NvM_00463])。

配置依赖性与交互

模块 NvM 仅在通过配置参数 NvMPollingMode 禁用轮询模式时才提供回调函数 NvM_JobErrorNotification([SWS_NvM_00441])。若使用轮询,则省略该通知机制。此外,该函数受符合 [SWS_NvM_00028] 原文尚未导入 的通用配置参数影响([SWS_NvM_00441])。

错误处理与并发

该函数仅用于作业的错误通知,既不定义自身的错误码,也不定义 DET 或 DEM 反馈([SWS_NvM_00463])。由于其分类为 Non Reentrant,推测应由存储器抽象中的调用方确保不发生重叠或打断的调用([SWS_NvM_00463])。 问题 Q-5f72d9d605c25922 (未决)

此使用说明基于 AUTOSAR Classic R20-11 规范自动生成。

实现者指南即将推出(复杂度 I1)

函数 NvM_MainFunction [SWS_NvM_00464] 📄 PDF

void NvM_MainFunction (void);

Service for performing the processing of the Nv M jobs.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: e37fc51f7baf 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

函数 NvM_MainFunction 既无传递参数也无返回值(void NvM_MainFunction(void)),并通过 SchM_NvM.h 声明([SWS_NvM_00464])。它用于处理 NVRAM 管理器作业([SWS_NvM_00464]、[SWS_NvM_00256])。在异步服务完成后,它执行配置的回调例程以通知上层([SWS_NvM_00347])。此外,它在后台负责所请求的 NVRAM 块 CRC 重新计算([SWS_NvM_00333]),例如由 NvM_SetRamBlockStatus([SWS_NvM_00121])或 NvM_ValidateAll([SWS_NvM_00857])引起的重新计算。

流程控制与优先级排序

若进行了配置,该函数会监视即时优先级队列以获取具有即时优先级的请求([SWS_NvM_00259])。若某个常规请求被即时作业破坏性中止,NvM_MainFunction 会在其完成后重新启动该请求([SWS_NvM_00258])。在轮询模式激活时,它检查传递给下层的作业的状态([SWS_NvM_00346])。在处理 NvM_WriteAll 期间,它通过 MemIf_GetStatus 针对 MEMIF_BROADCAST_ID 周期性查询存储驱动程序抽象的状态,并且只要报告 MEMIF_BUSY_INTERNAL 就暂扣发送给上层的回调([SWS_NvM_00350])。

错误处理与重试

若应用程序特定的回调失败,NvM_MainFunction 控制重试尝试:

  • 若 NvMReadRamBlockFromNvCallback 返回值 E_NOT_OK,模块将在 NvM_MainFunction 的下一个周期中重复调用([SWS_NvM_00839])。
  • 若 NvMWriteRamBlockToNvCallback 返回 E_NOT_OK,重试同样在 NvM_MainFunction 的下一次调用中进行([SWS_NvM_00840])。
  • 若显式同步回调在 NvM_SetRamBlockStatus 时返回 E_NOT_OK,模块将执行配置的重试,每次调用 NvM_MainFunction 进行一次尝试([SWS_NvM_00908])。

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I2)

函数 NvM_SingleBlockCallbackFunction [SWS_NvM_00467] 📄 PDF

Std_ReturnType NvM_SingleBlockCallbackFunction (NvM_BlockRequestType BlockRequest, NvM_RequestResultType JobResult);

Per block callback routine to notify the upper layer that an asynchronous single block request has been finished.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: f9058239e263 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

回调例程 NvM_SingleBlockCallbackFunction 同步通知上层此前发起的异步单块请求已完成 [SWS_NvM_00467]。

该函数处理两个传递参数 [SWS_NvM_00467]:

  • BlockRequest(类型 NvM_BlockRequestType):传递此前执行的块请求类型,例如读取或写入操作 [SWS_NvM_00467]。
  • JobResult(类型 NvM_RequestResultType):报告已处理块作业的总体结果 [SWS_NvM_00467]。

作为返回值,该函数提供类型 Std_ReturnType [SWS_NvM_00467]。回调的成功处理通过返回 E_OK 来表示;任何其他返回值均表示执行不成功 [SWS_NvM_00467]。

错误处理与并发

该接口未指定自身的 DET 或 DEM 错误报告 [SWS_NvM_00467]。先前作业的结果通过参数 JobResult 传递,而回调处理本身的错误则通过函数返回值报告 [SWS_NvM_00467]。

关于并发性,该例程被声明为不可重入(Non Reentrant)[SWS_NvM_00467]。它通过头文件 NvM_Externals.h 提供 [SWS_NvM_00467]。推测 NvM 模块的调用是在周期性 NvM 作业处理的任务上下文中同步进行的(解释)。 问题 Q-f50640211851274f (未决)

本使用说明由 AI 基于 AUTOSAR R20-11 规范生成。

实现者指南即将推出(复杂度 I1)

函数 NvM_MultiBlockCallbackFunction [SWS_NvM_00468] 📄 PDF

Std_ReturnType NvM_MultiBlockCallbackFunction (NvM_MultiBlockRequestType MultiBlockRequest, NvM_RequestResultType JobResult);

Common callback routine to notify the upper layer that an asynchronous multi block request has been finished. Available v ia Nv M_ Externals.h

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: a3c38e2b6191 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

回调例程 NvM_MultiBlockCallbackFunction 向上层通知此前发起的异步多块作业已完成 [SWS_NvM_00468]。该函数的声明通过头文件 NvM_Externals.h 提供 [SWS_NvM_00468]。

调用上下文与参数

NVRAM 管理器的调用与处理流程中的执行同步进行 [SWS_NvM_00468]。调用时向该例程传递两个参数:

  • MultiBlockRequest(类型 NvM_MultiBlockRequestType):表示此前处理的多块作业的具体请求类型,例如读取或写入访问 [SWS_NvM_00468]。
  • JobResult(类型 NvM_RequestResultType):将先前多块作业处理的最终结果传输至上层 [SWS_NvM_00468]。

返回值与错误处理

该例程向调用模块返回类型为 Std_ReturnType 的值 [SWS_NvM_00468]。返回值 E_OK 表示回调函数能够成功处理;反之,任何其他返回值均表示处理失败 [SWS_NvM_00468]。规范范围中未为此函数定义具体的错误码、DET 或 DEM 报告。解释:返回值不等于 E_OK 的具体后果推测是特定于实现的,因为标准未规定后续的错误处理。 问题 Q-462dea7f3074ae9c (未决)

并发性与限制

该函数被指定为不可重入(Non Reentrant)[SWS_NvM_00468]。因此在调用系统中必须确保不发生对此回调接口的并发或中断性多次调用。

本文本由 AI 基于规范生成。

实现者指南即将推出(复杂度 I1)

函数 NvM_InitBlockCallbackFunction [SWS_NvM_00469] 📄 PDF

Std_ReturnType NvM_InitBlockCallbackFunction (NvM_InitBlockRequestType InitBlockRequest);

Per block callback routine which shall be called by the Nv M module when default data needs to be restored in RAM, and a RO M block is not configured. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_NVRAMManager

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 6fa779cf7b62 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

当必须在 RAM 中恢复 NVRAM 块的默认数据且未配置相应的 ROM 块时,NvM 模块将调用用户特定的回调例程 NvM_InitBlockCallbackFunction [SWS_NvM_00469]。调用同步进行,且该接口通过头文件 NvM_Externals.h 声明 [SWS_NvM_00469]。

作为传递参数,函数接收类型为 NvM_InitBlockRequestType 的 InitBlockRequest [SWS_NvM_00469]。该值向例程告知当前处理块的具体请求类型,例如读取或恢复数据(read、restore)[SWS_NvM_00469]。

返回值与错误处理

该例程返回类型为 Std_ReturnType 的状态值 [SWS_NvM_00469]:

  • E_OK:向 NvM 模块表示回调函数已成功初始化并处理了 RAM 中的数据 [SWS_NvM_00469]。
  • 任何其他返回值:表示初始化未能成功完成 [SWS_NvM_00469]。

针对该接口本身未指定 DET 或 DEM 的具体错误码 [SWS_NvM_00469]。

并发性与执行限制

该接口被定为同步且不可重入(Non Reentrant)[SWS_NvM_00469]。由于 NVRAM 管理器同步等待该函数返回,例程内部的阻塞执行推测会直接暂停 NvM 的后续处理(解释)。 问题 Q-c0e43c9871c4f2d0 (未决)

此使用说明由 AI 基于 AUTOSAR R20-11 规范生成。

实现者指南即将推出(复杂度 I1)

函数 NvM_WriteRamBlockToNvm [SWS_NvM_00539] 📄 PDF

Std_ReturnType NvM_WriteRamBlockToNvm (void* NvMBuffer);

Block specific callback routine which shall be called in order to let the application copy data from RAM block to Nv M module's mirror.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 5243b53cfd03 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

块特定的回调函数 NvM_WriteRamBlockToNvm 用于显式同步,以将应用程序数据从 RAM 块复制到 NvM 模块的内部 RAM 镜像中 [SWS_NvM_00539]。它声明性地通过 NvM_Externals.h 可用,并由 NvM 同步调用 [SWS_NvM_00539]。

用法与参数

该函数将指针 NvMBuffer 作为输出参数传递,该指针表示必须向其写入数据的 NvM 镜像的目标地址 [SWS_NvM_00539]。作为返回值,回调例程在成功处理时返回 E_OK,在发生错误时返回任何其他值 [SWS_NvM_00539]。

并发性与限制

根据规范,NvM_WriteRamBlockToNvm 被设计为不可重入(Non Reentrant)[SWS_NvM_00539]。

模块内的相互作用

  • 在关机时,只要 NVRAM 块的参数 NvMSelectBlockForWriteAll 配置为 true [SWS_NvM_00252],作业 NvM_WriteAll 便会同步永久 RAM 块或调用用于显式同步的回调例程 NvM_WriteRamBlockToNvm [SWS_NvM_00018]。
  • 写作业 NvM_WriteBlock [SWS_NvM_00303] 和 NvM_WritePRAMBlock [SWS_NvM_00803] 在调用 NvM_WriteRamBlockToNvm 后自动使尚无效的永久 RAM 块有效。

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I1)

函数 NvM_ReadRamBlockFromNvm [SWS_NvM_00540] 📄 PDF

Std_ReturnType NvM_ReadRamBlockFromNvm (const void* NvMBuffer);

Block specific callback routine which shall be called in order to let the application copy data from Nv M module's mirror to RAM block.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 1b2c937c4017 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 NvM_ReadRamBlockFromNvm 是一个块特定的回调例程,通过 NvM_Externals.h 声明 [SWS_NvM_00540]。其目的在于允许应用程序将数据从 NvM 模块的内部镜像缓冲区复制到关联的 RAM 块中,以执行显式同步 [SWS_NvM_00540]、[SWS_NvM_00118]。

用法与语义

  • 调用上下文与并发性:调用同步进行,并被指定为不可重入(Non Reentrant)[SWS_NvM_00540]。
  • 参数:指针 NvMBuffer(类型 const void*)用作传递参数。它传递可以从中读取数据并复制到 RAM 块中的缓冲区地址 [SWS_NvM_00540]。
  • 返回值与错误处理:回调函数返回一个 Std_ReturnType。返回值 E_OK 表示成功处理;任何其他返回值均表示处理不成功 [SWS_NvM_00540]。

相互作用

在多块服务 NvM_ReadAll 的框架下,针对进行了相应配置且 NvmSelectBlockForReadall == TRUE 适用的那些 NVRAM 块调用 NvM_ReadRamBlockFromNvm 以进行显式同步 [SWS_NvM_00118]、[SWS_NvM_00356]。这构成了直接复制到永久 RAM 块的替代方案,而 NvM_ReadAll 则初始化块的管理数据 [SWS_NvM_00356]。

本段文本由 AI 系统基于规范要求生成。

实现者指南即将推出(复杂度 I1)

类型 NvM_MultiBlockRequestType [SWS_NvM_91003] 📄 PDF

Identifies the type of request performed on multi block when signaled via the callback function or when reporting to Bsw M

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: e84ff8330bcb 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

枚举类型 NvM_MultiBlockRequestType 通过头文件 NvM.h 提供,用于唯一标识已执行的多块请求 [SWS_NvM_91003]。当通过回调函数指示多块操作的结果或状态,或者向模块 BswM 报告时,使用该类型 [SWS_NvM_91003]。

值范围与语义

该枚举定义了以下值以区分多块作业 [SWS_NvM_91003]:

  • NVM_READ_ALL(0x00):指示已执行 NvM_ReadAll。
  • NVM_WRITE_ALL(0x01):指示已执行 NvM_WriteAll。
  • NVM_VALIDATE_ALL(0x02):指示已执行 NvM_ValidateAll。
  • NVM_FIRST_INIT_ALL(0x03):指示已执行 NvM_FirstInitAll。
  • NVM_CANCEL_WRITE_ALL(0x04):指示已执行 NvM_CancelWriteAll。

相互作用

通过传递该类型,被调用的回调以及 BswM 能够确定具体是哪一个多块服务触发了通知。解释:推测向 BswM 的反馈用于将整个系统中的后续动作或状态转换与特定多块服务的完成相挂钩。 问题 Q-69b4d985301acfeb (未决)

本段文本由 AI 生成并用作参考指南。以引用的规范为准。

实现者指南即将推出(复杂度 I1)

类型 NvM_RequestResultType [SWS_NvM_00470] 📄 PDF

Type NvM_RequestResultType.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 49d0056a8c31 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

类型 NvM_RequestResultType 基于 uint8,通过 Rte_NvM_Type.h 提供,并反映 NVRAM 管理器的读、写和控制作业的异步请求结果 [SWS_NvM_00470]。该结果主要通过 API 服务 NvM_GetErrorStatus 查询,此外还可以通过配置的回调函数发出信号 [SWS_NvM_00470]。

取值范围反映了不同的执行状态和错误情况 [SWS_NvM_00470]:

  • NVM_REQ_OK(0x00):上一个异步作业已成功完成;这同时也是复位后的默认值。
  • NVM_REQ_NOT_OK(0x01):异步读、写或控制请求未成功完成。
  • NVM_REQ_PENDING(0x02):异步请求当前仍在处理中。
  • NVM_REQ_INTEGRITY_FAILED(0x03):NvM_ReadBlock 或 NvM_ReadAll 时的数据完整性错误。在 NvM_ReadBlock 的情况下,RAM 块的内容已被更改,但已变为无效;应用程序负责更新并验证其内容。
  • NVM_REQ_BLOCK_SKIPPED(0x04):引用的块在 NvM_ReadAll 或 NvM_WriteAll 期间被跳过(例如 NvM_ReadAll 时的 Dataset-NVRAM 块或未配置永久 RAM 块的块)。
  • NVM_REQ_NV_INVALIDATED(0x05):引用的 NV 块已失效。
  • NVM_REQ_CANCELED(0x06):通过 NvM_CancelWriteAll 中止 NvM_WriteAll,或通过 NvM_CancelJobs 中止单块作业(NvM_ReadBlock、NvM_WriteBlock、NvM_EraseNvBlock、NvM_InvalidateNvBlock、NvM_RestoreBlockDefaults)。
  • NVM_REQ_RESTORED_DEFAULTS(0x08):默认值已成功复制到 RAM 镜像中。

在与冗余块(NVM_BLOCK_REDUNDANT)配合使用时,函数 NvM_InvalidateNvBlock 仅在两个 NV 块均已失效时,才将请求结果 NvM_RequestResultType 设置为 NVM_REQ_OK [SWS_NvM_00274]。

该文本为自动生成。所有说明均仅基于 AUTOSAR 版本 R20-11 的规范要求。

实现者指南即将推出(复杂度 I1)

类型 NvM_BlockIdType [SWS_NvM_00471] 📄 PDF

Identification of a NVRAM block via a unique block identifier. Reserved NVRAM block IDs: 0 - > to derive multi block request results via Nv M_ Get Error Status 1 - > redundant NVRAM block which holds the configuration ID

类型 NvM_InitBlockRequestType [SWS_NvM_91123] 📄 PDF

Identifies the type of request performed on a block when signaled via the callback function

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: f4f68ded6ba5 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

数据类型 NvM_InitBlockRequestType 基于 uint8,并通过头文件 Rte_NvM_Type.h 提供 [SWS_NvM_91123]。当通过相应的回调函数发出通知时,它用于标识在 NVRAM 块上执行的请求类型 [SWS_NvM_91123]。

允许的值范围包括四种请求类型 [SWS_NvM_91123]:

  • NVM_INIT_READ_BLOCK (0x00):指示已为该块请求了 NvM_ReadBlock 或 NvM_ReadPRAMBlock [SWS_NvM_91123]。
  • NVM_INIT_RESTORE_BLOCK_DEFAULTS (0x01):指示已为该块请求了 NvM_RestoreBlockDefaults 或 NvM_RestorePRAMBlockDefaults [SWS_NvM_91123]。
  • NVM_INIT_READ_ALL_BLOCK (0x02):指示该块的处理在 NvM_ReadAll 的范围内进行 [SWS_NvM_91123]。
  • NVM_INIT_FIRST_INIT_ALL (0x03):标识在 NvM_FirstInitAll 的执行过程中的块处理 [SWS_NvM_91123]。

被调用的应用逻辑可以根据此枚举值区分是显式的单个块请求(读取或恢复默认值),还是系统启动期间的全局批处理操作 [SWS_NvM_91123]。Interpretation:该类型推测会作为参数传递给与块相关的初始化回调,以便应用程序能够根据具体情况提供默认数据或进行特定准备。 问题 Q-42d0d469e305728e (未决)

本使用说明基于 AUTOSAR Classic Release R20-11 规范。

实现者指南即将推出(复杂度 I1)

类型 NvM_BlockRequestType [SWS_NvM_91002] 📄 PDF

Identifies the type of reques t performed on a block when signaled via the callback function

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 68d31eddd2e0 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

枚举类型 NvM_BlockRequestType 基于 uint8,并通过头文件 Rte_NvM_Type.h 提供 [SWS_NvM_91002]。它用于在通过回调函数进行通知时,传递先前在 NVRAM 块上执行的请求类型 [SWS_NvM_91002]。

值范围包括六个特定的块请求 [SWS_NvM_91002]:

  • NVM_READ_BLOCK(0x00):表示已对该块执行了 NvM_ReadBlock 或 NvM_ReadPRAMBlock [SWS_NvM_91002]。
  • NVM_WRITE_BLOCK(0x01):表示已对该块执行了 NvM_WriteBlock 或 NvM_WritePRAMBlock [SWS_NvM_91002]。
  • NVM_RESTORE_BLOCK_DEFAULTS(0x02):表示已执行了 NvM_RestoreBlockDefaults 或 NvM_RestorePRAMBlockDefaults [SWS_NvM_91002]。
  • NVM_ERASE_NV_BLOCK(0x03):表示已在该块上执行了 NvM_EraseNvBlock [SWS_NvM_91002]。
  • NVM_INVALIDATE_NV_BLOCK(0x04):表示已在该块上执行了 NvM_InvalidateNvBlock [SWS_NvM_91002]。
  • NVM_READ_ALL_BLOCK(0x05):表示 NvM_ReadAll 已完成对该块的处理 [SWS_NvM_91002]。

在应用架构中,该值推测作为参数在回调例程中被评估,以向下分化地通知上层软件组件关于特定块操作的结束 [SWS_NvM_91002]。 问题 Q-467801b6b5e898a2 (未决)由于有效载荷中缺少关于错误码或并发性的进一步规定,规范细节仅限于类型定义和值范围 [SWS_NvM_91002]。

本文由 AI 创建;无法保证准确性。

实现者指南即将推出(复杂度 I1)

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_NvM
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_NvM@rel:R20-11#f5d7cc73
Content hash
f5d7cc73
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_NVRAMManager.pdf#nameddest=SWS_NvM_00447

初始化与状态

Service to get the version information of the Nv M module.

void NvM_GetVersionInfo (Std_VersionInfoType* versioninfo);
NvM_Init 函数

Service for resetting all internal variables.

void NvM_Init (const NvM_ConfigType* ConfigPtr);

服务 · Read…

Initiates a multi block read request.

void NvM_ReadAll (void);

Service to copy the data of the NV block to its corresponding RAM block.

Std_ReturnType NvM_ReadBlock (NvM_BlockIdType BlockId, void* NvM_DstPtr);

Service to copy the data of the NV block to its corresponding permanent RAM block.

Std_ReturnType NvM_ReadPRAMBlock (NvM_BlockIdType BlockId);

Block specific callback routine which shall be called in order to let the application copy data from Nv M module's mirror to RAM block.

Std_ReturnType NvM_ReadRamBlockFromNvm (const void* NvMBuffer);

服务 · Set…

Service for setting the lock status of a permanent RAM block or of the explicit synchronization of a NVRAM block.

void NvM_SetBlockLockStatus (NvM_BlockIdType BlockId, boolean BlockLocked);

Service for setting/ resetting the write protection for a NV block. Availabl e via Nv M.h

Std_ReturnType NvM_SetBlockProtection (NvM_BlockIdType BlockId, boolean ProtectionEnabled);

Service for setting the Data Inde x of a dataset NVRAM block.

Std_ReturnType NvM_SetDataIndex (NvM_BlockIdType BlockId, uint8 DataIndex);

Service for setting the RAM block status of a permanent RAM block or the status of the explicit synchronization of a NVRAM block.

Std_ReturnType NvM_SetRamBlockStatus (NvM_BlockIdType BlockId, boolean BlockChanged);

服务 · Write…

Initiates a multi block write request.

void NvM_WriteAll (void);

Service to copy the data of the RAM block to its corresponding NV block. Available vi a Nv M.h

Std_ReturnType NvM_WriteBlock (NvM_BlockIdType BlockId, const void* NvM_SrcPtr);

Service to copy the data of the permanent RAM block to its corresponding NV block.

Std_ReturnType NvM_WritePRAMBlock (NvM_BlockIdType BlockId);

Block specific callback routine which shall be called in order to let the application copy data from RAM block to Nv M module's mirror.

Std_ReturnType NvM_WriteRamBlockToNvm (void* NvMBuffer);

服务 · Cancel…

Service to cancel all jobs pending for a NV block.

Std_ReturnType NvM_CancelJobs (NvM_BlockIdType BlockId);

Service to cancel a running Nv M_ Write All request.

void NvM_CancelWriteAll (void);

服务 · Get…

Service for getting the currently set Data Index of a datase t NVRAM block

Std_ReturnType NvM_GetDataIndex (NvM_BlockIdType BlockId, uint8* DataIndexPtr);

Service to read the block dependent error/ status information.

Std_ReturnType NvM_GetErrorStatus (NvM_BlockIdType BlockId, NvM_RequestResultType* RequestResultPtr);

服务 · Job…

Function to be used by the underlying memory abstraction to signal end of job without error.

void NvM_JobEndNotification (void);

Function to be used by the underlying memory abstraction to signal end of job with error.

void NvM_JobErrorNotification (void);

服务 · Restore…

Service to restore the default data to its corr esponding RAM block.

Std_ReturnType NvM_RestoreBlockDefaults (NvM_BlockIdType BlockId, void* NvM_DestPtr);

Service to restore the default data to its corresponding permanent RAM block.

Std_ReturnType NvM_RestorePRAMBlockDefaults (NvM_BlockIdType BlockId);

服务 · 其他

Service to erase a NV block.

Std_ReturnType NvM_EraseNvBlock (NvM_BlockIdType BlockId);

The function initiates a multi block first initialization request. The job of the function does not care if a block exists in the non - volatile memory or not OR if it is valid (i.e. not corrupted) or not, when processing it.

void NvM_FirstInitAll (void);

Per block callback routine which shall be called by the Nv M module when default data needs to be restored in RAM, and a RO M block is not configured. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_NVRAMManager

Std_ReturnType NvM_InitBlockCallbackFunction (NvM_InitBlockRequestType InitBlockRequest);

Service to invalidate a NV block.

Std_ReturnType NvM_InvalidateNvBlock (NvM_BlockIdType BlockId);

Common callback routine to notify the upper layer that an asynchronous multi block request has been finished. Available v ia Nv M_ Externals.h

Std_ReturnType NvM_MultiBlockCallbackFunction (NvM_MultiBlockRequestType MultiBlockRequest, NvM_RequestResultType JobResult);

Per block callback routine to notify the upper layer that an asynchronous single block request has been finished.

Std_ReturnType NvM_SingleBlockCallbackFunction (NvM_BlockRequestType BlockRequest, NvM_RequestResultType JobResult);

Initiates a multi block validation request.

void NvM_ValidateAll (void);

周期性

Service for performing the processing of the Nv M jobs.

void NvM_MainFunction (void);

类型

Identification of a NVRAM block via a unique block identifier. Reserved NVRAM block IDs: 0 - > to derive multi block request results via Nv M_ Get Error Status 1 - > redundant NVRAM block which holds the configuration ID

Identifies the type of reques t performed on a block when signaled via the callback function

Configuration data structure of the Nv M module.

Identifies the type of request performed on a block when signaled via the callback function

Identifies the type of request performed on multi block when signaled via the callback function or when reporting to Bsw M

Type NvM_RequestResultType.