DEENESPTFRRUARHIKOZHNL

NVRAM Manager (NvM)

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

Guía del móduloGENERADO POR IA

Gestiona bloques de datos no volátiles y los sincroniza de forma asíncrona entre la RAM y la memoria NV.
GENERADO POR IA no revisado Modelo: claude-opus-5-5 · Esfuerzo: high · Temperatura: no controlable · Prompt: 1d912b11517a Procedencia Preguntas abiertas (1)
Ancla causal: R20-11 Válido desde R20-11 Sintetizado para esta versión de especificación.
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Gestiona bloques de datos no volátiles y los sincroniza de forma asíncrona entre la RAM y la memoria NV.

El NVRAM Manager (NvM) es el único acceso a la memoria no volátil. Copia bloques de NVRAM de forma implícita entre la RAM y la memoria NV [SWS_NvM_00038]. En el arranque, NvM_ReadAll, iniciado por el BswM, llena los bloques de RAM; en el shutdown, NvM_WriteAll guarda los bloques modificados. Las peticiones individuales como NvM_WriteBlock se encolan de forma asíncrona, se procesan por prioridad y se confirman mediante estado o callback [SWS_NvM_00185]. El NvM subsana los errores de lectura mediante reintentos, copias redundantes y datos por defecto; no obstante, los usuarios deben comprobar ellos mismos el estado del bloque.

El NVRAM Manager (NvM) es el único acceso a la memoria no volátil [SWS_NvM_00384]. Copia bloques de forma implícita entre la NVRAM y la RAM; la aplicación trabaja directamente con los datos de la RAM [SWS_NvM_00038]. Hacia abajo utiliza la Memory Abstraction Interface con Fee o Ea [SWS_NvM_00051]. Notifica los estados al BswM y los errores al DEM y al DET [SWS_NvM_00745] [SWS_NvM_00592].

kontext nutzer usuarios de NvM (SW-C mediante RTE, módulos BSW) nvm NvM (NVRAM Manager) nutzer->nvm trabajos individuales NvM_ReadBlock, NvM_WriteBlock, … bswm BswM bswm->nvm NvM_Init, NvM_ReadAll, NvM_WriteAll, NvM_CancelWriteAll nvm->nutzer callbacks SingleBlock, InitBlock y de mirror nvm->bswm BswM_NvM_CurrentJobMode, BswM_NvM_CurrentBlockMode memif MemIf nvm->memif trabajos de lectura/escritura, MemIf_GetJobResult dem Dem nvm->dem Produktionsfehler det Det nvm->det Entwicklungsfehler crc Crc nvm->crc CRC-Berechnung fee Fee / Ea memif->fee Reenvío fee->nvm NvM_JobEndNotification, NvM_JobErrorNotification

Diagrama de contexto: integración del NvM entre usuarios, BswM, MemIf/Fee/Ea así como DEM y DET. Fuentes: [SWS_NvM_00384] [SWS_NvM_00465] [SWS_NvM_00746]

Cada bloque de NVRAM consta de un bloque NV, un bloque de RAM y un Administrative Block, complementado opcionalmente con un bloque ROM con datos por defecto [SWS_NvM_00138]. Existen los tipos Native, Redundant y Dataset; se diferencian en el número de bloques NV y ROM [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559]. El NvM sincroniza el bloque de RAM de forma implícita directamente o de forma explícita a través de un RAM mirror con callbacks [SWS_NvM_00511].

El ciclo de vida transcurre en tres pasos:

Las peticiones individuales como NvM_WriteBlock se encolan y pasan a estar en NVM_REQ_PENDING [SWS_NvM_00185]. Opcionalmente, el NvM utiliza una cola propia para peticiones Immediate [SWS_NvM_00378]. El resultado lo proporciona NvM_GetErrorStatus o un callback configurado [SWS_NvM_00015] [SWS_NvM_00740].

trabajo asíncrono de un solo bloque con notificaciónNvM-AnwenderNvMBswMBSW-TaskMemIfNvM_WriteBlock(BlockId, NvM_SrcPtr)einreihen, Blockergebnis:NVM_REQ_PENDINGoptNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, NVM_REQ_PENDING)E_OKloophasta que el trabajo de escritura haya finalizadoNvM_MainFunction()Schreibauftrag / Status abfragenJob-ErgebnisoptNvMSingleBlockCallback konfiguriertNvM_SingleBlockCallbackFunction(NVM_WRITE_BLOCK, JobResult)optNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, Ergebnis)NvM_GetErrorStatus(BlockId, RequestResultPtr)E_OK, Ergebnis

Diagrama de secuencia: se encola una petición de escritura asíncrona, se procesa en NvM_MainFunction y se confirma mediante callback, notificación al BswM y consulta de estado. Fuentes: [SWS_NvM_00185] [SWS_NvM_00347] [SWS_NvM_00891], SWS NvM p. 160

El NvM subsana los errores de lectura a través de tres niveles:

Interpretación: es probable que el orden de los niveles siga la enumeración de la Error Description. Pregunta Q-027e7f981e4d0a43 (abierta) El NvM reintenta los errores de escritura hasta NVM_MAX_NUM_OF_WRITE_RETRIES y después notifica NVM_E_REQ_FAILED al DEM [SWS_NvM_00684]. Los usuarios comprueban ellos mismos el estado de sus bloques [SWS_NvM_00694].

Rol en la pila de memoria: único acceso a la memoria no volátil

El NVRAM Manager (NvM) centraliza el acceso a los datos no volátiles. El entorno accede a la memoria no volátil exclusivamente a través del NvM, que proporciona para ello una interfaz de callback [SWS_NvM_00384]. El acceso es implícito: el NvM copia bloques entre la NVRAM y la RAM compartida. La aplicación trabaja directamente con los datos de la RAM respetando las reglas de sincronización [SWS_NvM_00038] [SWS_NvM_00692]. Un bloque se selecciona mediante su Block ID configurado [SWS_NvM_00069] [SWS_NvM_00471]. Las capas superiores solo incluyen para ello NvM.h [SWS_NvM_00691]. El gráfico sobre la actualización implícita muestra la división del trabajo: otras partes del software básico activan el guardado y la restauración de todos los bloques en función del estado de la ECU. La SW-C solo accede al contenido de sus bloques de RAM (SWS NvM p. 121).

Hacia abajo, el NvM trabaja contra la Memory Abstraction Interface. Junto con Fee o Ea, proporciona un espacio de direcciones virtual lineal de 32 bits [SWS_NvM_00051] [SWS_NvM_00465]. El NvM genera sumas de comprobación a través del módulo Crc [SWS_NvM_00466]. Se informa de la finalización de un trabajo de la capa inferior por dos vías:

Los errores de producción se envían al DEM [SWS_NvM_00592] y los errores de desarrollo al DET [SWS_NvM_00614]. El NvM notifica los estados de las peticiones al BswM [SWS_NvM_00745] [SWS_NvM_00746].

kontext nutzer usuarios de NvM (SW-C mediante RTE, módulos BSW) nvm NvM (NVRAM Manager) nutzer->nvm trabajos individuales NvM_ReadBlock, NvM_WriteBlock, … bswm BswM bswm->nvm NvM_Init, NvM_ReadAll, NvM_WriteAll, NvM_CancelWriteAll nvm->nutzer callbacks SingleBlock, InitBlock y de mirror nvm->bswm BswM_NvM_CurrentJobMode, BswM_NvM_CurrentBlockMode memif MemIf nvm->memif trabajos de lectura/escritura, MemIf_GetJobResult dem Dem nvm->dem Produktionsfehler det Det nvm->det Entwicklungsfehler crc Crc nvm->crc CRC-Berechnung fee Fee / Ea memif->fee Reenvío fee->nvm NvM_JobEndNotification, NvM_JobErrorNotification

Diagrama de contexto: el NvM intermedia entre los usuarios y el BswM por un lado y MemIf/Fee/Ea por el otro. Notifica los errores a DEM y DET. Fuentes: [SWS_NvM_00384] [SWS_NvM_00745] [SWS_NvM_00746] [SWS_NvM_00465] [SWS_NvM_00466], Error Description p. 43

Estructura de un bloque de NVRAM y los tres tipos de gestión

Un bloque de NVRAM consta de los componentes obligatorios bloque NV, bloque de RAM y Administrative Block. Un bloque ROM con datos por defecto es opcional [SWS_NvM_00138] [SWS_NvM_00139] [SWS_NvM_00020]. La composición la define el descriptor de bloque en tiempo de configuración [SWS_NvM_00140]. Los componentes individuales:

El NvM admite los tipos NVM_BLOCK_NATIVE, NVM_BLOCK_REDUNDANT y NVM_BLOCK_DATASET [SWS_NvM_00137]. Se diferencian en el número de bloques NV y ROM [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559] (SWS NvM p. 10). En los bloques de Dataset se aplica lo siguiente:

blockaufbau nvram NVRAM-Block (BlockId, Verwaltungstyp) nv NV-Block Header (opt.), Daten, CRC (opt.) nvram->nv NATIVE: 1 REDUNDANT: 2 DATASET: 1..m ram bloque RAM permanente, temporal o RAM-Mirror 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

Diagrama de colaboración (estructura de bloques): componentes obligatorios y opcionales de un bloque de NVRAM con cardinalidades por cada tipo de gestión. Fuentes: [SWS_NvM_00138] [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559] [SWS_NvM_00134], SWS NvM p. 10

Ciclo de vida: NvM_Init, NvM_ReadAll y NvM_WriteAll

El BswM llama a NvM_Init en exclusiva [SWS_NvM_00693]. NvM_Init restablece colas y máquinas de estados y señaliza internamente «INIT DONE» [SWS_NvM_00399]. No inicializa ni bloques de RAM ni módulos subordinados [SWS_NvM_00091] [SWS_NvM_00193]. El puntero de configuración es siempre NULL_PTR [SWS_NvM_00881]. Solo después de esto NvM_MainFunction procesa peticiones [SWS_NvM_00257].

A continuación, NvM_ReadAll llena los bloques de RAM [SWS_NvM_00718]. La llamada solo señaliza la petición. El procesamiento se pospone hasta que se completen las peticiones de bloque individuales [SWS_NvM_00243]. Después, el trabajo se ejecuta en tres pasos:

  1. Primero compara el ID de configuración guardado con el compilado [SWS_NvM_00073]. En caso de discrepancia, el comportamiento depende de NvMDynamicConfiguration: con NvMDynamicConfiguration == FALSE se ignora la discrepancia [SWS_NvM_00248]. De lo contrario, los bloques no resistentes a cambios reciben datos por defecto [SWS_NvM_00249] [SWS_NvM_00674] (NV Data Handling p. 15).
  2. Luego itera sobre los bloques de usuario excepto los Block ID 0 y 1 [SWS_NvM_00244]. Durante esto, solo procesa bloques con bloque de RAM permanente o sincronización explícita [SWS_NvM_00118].
  3. Por último, establece el resultado global en NVM_REQ_OK o NVM_REQ_NOT_OK [SWS_NvM_00895] [SWS_NvM_00301].

En el ejemplo de gestión de modos, la regla de BswM NvMReadAllFinished inicia el resto de la inicialización solo tras finalizar NvM_ReadAll (Mode Management Guide p. 31).

inicio: NvM_Init y NvM_ReadAllBSW-TaskBswMNvMMemIf / Fee / EaUse Case: InitialisierungNvM_Init(NULL_PTR)restablecer colas y estados,«INIT DONE» – bloques RAM sin cambiosNvM_Init()Use Case: Multiblock-Auftrag NvM_ReadAllNvM_ReadAll()NvM_ReadAll()optNvMBswMMultiBlockJobStatusInformation == TRUEBswM_NvM_CurrentJobMode(ReadAll, NVM_REQ_PENDING)NvM_MainFunction()primer paso: almacenados ykompilierte Konfigurations-ID vergleichenlooppor cada bloque de usuario para NvM_ReadAll (sin ID de bloque 0 y 1)NvM_MainFunction()NV-Block lesenJob-Ergebnisrellenar el bloque RAM o mirror,Blockergebnis setzenoptNvMBswMMultiBlockJobStatusInformation == TRUEBswM_NvM_CurrentJobMode(ReadAll, Ergebnis)BswM_MainFunction()Regel NvMReadAllFinished:restliche BSW-Initialisierung

Diagrama de secuencia: inicio asíncrono con NvM_Init, NvM_ReadAll y notificación del estado multibloque al BswM. Fuentes: [SWS_NvM_00693] [SWS_NvM_00243] [SWS_NvM_00073] [SWS_NvM_00888] [SWS_NvM_00889], NV Data Handling p. 20

Para el shutdown, el BswM llama a NvM_WriteAll [SWS_NvM_00092]. El trabajo se comporta de la siguiente manera:

Los usuarios marcan los bloques modificados con NvM_SetRamBlockStatus(…, TRUE), siempre que la API esté habilitada [SWS_NvM_00406] [SWS_NvM_00408]. En los bloques con dirty flag, la RTE asume esta llamada (NV Data Handling p. 41).

NvM_CancelWriteAll está reservado para el BswM [SWS_NvM_00703] y no tiene efecto si no hay un NvM_WriteAll en ejecución [SWS_NvM_00233]. El bloque actual se finaliza de forma no destructiva [SWS_NvM_00238]. Los bloques restantes y el resultado multibloque reciben NVM_REQ_CANCELED [SWS_NvM_00236] [SWS_NvM_00237] (SWS NvM p. 161).

Otras dos peticiones multibloque complementan el ciclo de vida:

  • NvM_ValidateAll establece los bloques con validación automática en «VALID / CHANGED» [SWS_NvM_00856].
  • NvM_FirstInitAll sobrescribe los bloques con datos por defecto o los invalida si no hay ninguno disponible [SWS_NvM_00913] [SWS_NvM_00919].

Para todas las peticiones multibloque se aplica una longitud de cola de uno [SWS_NvM_00380].

apagado: NvM_WriteAll y NvM_CancelWriteAllBSW-TaskBswMNvMNvM_WriteAll()NvM_WriteAll()looppor cada bloque con RAM permanente o sincronización explícitaNvM_MainFunction()comprobar «valid/modified»; omitir bloquesprotegidos y bloqueados; escribiraltAbbruch angefordertNvM_CancelWriteAll()NvM_CancelWriteAll()NvM_MainFunction()finalizar el bloque actual de forma no destructiva,bloques restantes: NVM_REQ_CANCELEDBswM_NvM_CurrentJobMode(WriteAll, NVM_REQ_CANCELED)finalización regularBswM_NvM_CurrentJobMode(WriteAll, Ergebnis)Regel NvMWriteAllFinished:EcuM_GoDown

Diagrama de secuencia: shutdown con NvM_WriteAll y cancelación opcional mediante NvM_CancelWriteAll. Fuentes: [SWS_NvM_00092] [SWS_NvM_00682] [SWS_NvM_00238] [SWS_NvM_00237] [SWS_NvM_00889], Mode Management Guide p. 37

Peticiones individuales: colas, prioridades y confirmación

Las peticiones de bloque individual como NvM_ReadBlock, NvM_WriteBlock o NvM_RestoreBlockDefaults son asíncronas. La función toma los parámetros, encola la petición y retorna [SWS_NvM_00195] [SWS_NvM_00208] [SWS_NvM_00224]. Después, el resultado del bloque se encuentra en NVM_REQ_PENDING [SWS_NvM_00185]. En caso de desbordamiento de la cola, la función devuelve E_NOT_OK [SWS_NvM_00184]. Un bloque solo se encola si no está ya pendiente o siendo procesado [SWS_NvM_00385].

Otros servicios operan de forma síncrona en el contexto del llamante, como NvM_SetDataIndex [SWS_NvM_00448] y NvM_GetErrorStatus (SWS NvM p. 158). NvM_CancelJobs elimina las peticiones pendientes de un bloque; sin embargo, un trabajo en ejecución continúa [SWS_NvM_00536] [SWS_NvM_00537].

El procesamiento se realiza serializado según la prioridad [SWS_NvM_00162]. Si NvMJobPrioritization está activo, el NvM utiliza dos colas, una de ellas para peticiones de escritura Immediate (datos de colisión) [SWS_NvM_00564] [SWS_NvM_00378]. Dicho NvM_WriteBlock cancela destructivamente un trabajo pendiente [SWS_NvM_00300]. A continuación, NvM_MainFunction reinicia el trabajo cancelado [SWS_NvM_00258]. Sin priorización, el NvM trabaja en orden de llegada, sin trabajos Immediate [SWS_NvM_00379]. Las peticiones que llegan durante una petición multibloque se encolan y se ejecutan a continuación [SWS_NvM_00568] [SWS_NvM_00569].

Cada petición asíncrona guarda su resultado en el campo de error/estado [SWS_NvM_00175]. NvM_GetErrorStatus lee este campo [SWS_NvM_00015]. Además, existen dos vías de notificación opcionales:

trabajo asíncrono de un solo bloque con notificaciónNvM-AnwenderNvMBswMBSW-TaskMemIfNvM_WriteBlock(BlockId, NvM_SrcPtr)einreihen, Blockergebnis:NVM_REQ_PENDINGoptNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, NVM_REQ_PENDING)E_OKloophasta que el trabajo de escritura haya finalizadoNvM_MainFunction()Schreibauftrag / Status abfragenJob-ErgebnisoptNvMSingleBlockCallback konfiguriertNvM_SingleBlockCallbackFunction(NVM_WRITE_BLOCK, JobResult)optNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, Ergebnis)NvM_GetErrorStatus(BlockId, RequestResultPtr)E_OK, Ergebnis

Diagrama de secuencia: petición de escritura asíncrona con notificaciones de estado al BswM, callback y consulta de estado. Fuentes: [SWS_NvM_00185] [SWS_NvM_00347] [SWS_NvM_00740] [SWS_NvM_00890] [SWS_NvM_00891], SWS NvM p. 160

Sincronización del bloque de RAM y estado del bloque

El NvM dispone de dos formas de sincronizar datos con el bloque de RAM de la aplicación. Con la sincronización implícita, opera directamente sobre este bloque de RAM. La aplicación proporciona el bloque y no accede a él hasta el final de la petición [SWS_NvM_00698] [SWS_NvM_00699]. Si pasa NULL_PTR, el NvM utiliza el bloque de RAM permanente [SWS_NvM_00898] [SWS_NvM_00900]. Aun así, es posible utilizar un bloque temporal mediante puntero [SWS_NvM_00278]. Los servicios PRAM operan siempre sobre el bloque de RAM permanente [SWS_NvM_00765] [SWS_NvM_00794]. En el escenario RTE, este bloque es una Per-Instance-Memory (NV Data Handling p. 32).

Con la sincronización explícita (NvMBlockUseSyncMechanism), el intercambio se realiza a través de un RAM mirror interno [SWS_NvM_00511]. Existe exactamente uno de ellos, dimensionado según el bloque afectado más grande [SWS_NvM_00513]. El NvM llama a NvMWriteRamBlockToNvCallback o NvMReadRamBlockFromNvCallback [SWS_NvM_00515] [SWS_NvM_00516]. Si un callback devuelve E_NOT_OK, repite la llamada en el siguiente ciclo, hasta NvMRepeatMirrorOperations veces [SWS_NvM_00579] [SWS_NvM_00840]. Hasta el callback, la aplicación aún puede modificar el bloque de RAM [SWS_NvM_00705]. Un bloque utiliza o bien sincronización explícita o bien un bloque de RAM permanente, no ambos [SWS_NvM_00904]. El mecanismo permite bloques compartidos a través de un NvBlockSwComponentType (NV Data Handling p. 12).

escritura con sincronización explícitaAnwendung (SW-C/RTE)NvMBSW-TaskMemIfrellenar el bloque RAM con datosNvM_WriteBlock(BlockId, NULL_PTR)E_OKel bloque RAM aún puede modificarsehasta el callbackNvM_MainFunction()NvM_WriteRamBlockToNvm(NvMBuffer)(NvMWriteRamBlockToNvCallback)RAM-Block in RAM-Mirror kopierenaltRetorno E_OKE_OKMirror-Inhalt in NV-Block schreibenRetorno E_NOT_OKE_NOT_OKcallback en la siguiente NvM_MainFunctionerneut aufrufen (max. NvMRepeatMirrorOperations)

Diagrama de secuencia: petición de escritura con sincronización explícita a través del RAM mirror, incluida la repetición en caso de E_NOT_OK. Fuentes: [SWS_NvM_00515] [SWS_NvM_00705] [SWS_NvM_00579] [SWS_NvM_00840], NV Data Handling p. 27

Para los bloques de RAM permanentes o el mirror, el NvM mantiene un estado «valid»/«invalid» [SWS_NvM_00128] [SWS_NvM_00132]. Las transiciones en detalle:

  • NvM_ReadBlock invalida el bloque de RAM permanente ya en el momento de encolarlo [SWS_NvM_00198].
  • Tras una lectura correcta, pasa a estar «valid/unchanged» [SWS_NvM_00200].
  • Tras cargar datos por defecto, pasa a estar «valid/changed» [SWS_NvM_00366].
  • NvM_SetRamBlockStatus(…, TRUE) lo marca como modificado y desencadena un nuevo cálculo del CRC en segundo plano [SWS_NvM_00406] [SWS_NvM_00121].
  • Tras una escritura correcta, se considera «valid/unmodified» [SWS_NvM_00472].
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) o NvM_ValidateAll changed->invalid NvM_ReadBlock angenommen (permanenter RAM) changed->unchanged erfolgreich in NV geschrieben

Diagrama de estados: estados del bloque de RAM y los eventos desencadenantes. Fuentes: [SWS_NvM_00198] [SWS_NvM_00200] [SWS_NvM_00366] [SWS_NvM_00406] [SWS_NvM_00472] [SWS_NvM_00856]

Configuración, mecanismos de protección y relación con particiones

Para recursos limitados existen tres clases de configuración de la API [SWS_NvM_00149]. La clase 1 no admite bloques Dataset [SWS_NvM_00365]. Las tablas de descriptores se generan [SWS_NvM_00143]. Los usuarios declaran las necesidades de memoria en tiempo de configuración [SWS_NvM_00030]. Los módulos BSW lo hacen a través de NvBlockNeeds (BSWMD Template p. 241). El integrador de la ECU deriva de ello la configuración del NvM (Methodology p. 444).

Para bloques individuales se dispone de varios mecanismos de protección:

  • Un campo de atributos gestiona la protección contra escritura [SWS_NvM_00054]; NvMBlockWriteProt la activa por defecto [SWS_NvM_00326].
  • Los bloques con NvMWriteBlockOnce solo se escriben una vez [SWS_NvM_00397]. El NvM rechaza las peticiones de escritura anteriores a la primera lectura [SWS_NvM_00952].
  • Para bloques bloqueados (NvM_SetBlockLockStatus), NvM_WriteBlock devuelve E_NOT_OK [SWS_NvM_00749]. El bloqueo no lo modifican ni NvM_SetRamBlockStatus ni NvM_SetBlockProtection [SWS_NvM_00754].
  • También son opcionales una cabecera Static Block ID [SWS_NvM_00522], una comparación de CRC para evitar escrituras innecesarias [SWS_NvM_00849] y cifrado a través del CSM [SWS_NvM_00976].

En caso de particionamiento, el NvM llama a las interfaces en el contexto de la partición asignada respectivamente. Las funciones generales se ejecutan en la partición maestra [SWS_NvM_00969]. NvM_ReadAll y NvM_WriteAll solo las ofrece el maestro [SWS_NvM_00970] [SWS_NvM_00971] [SWS_NvM_CONSTR00974]. Las SW-C acceden al NvM a través de puertos vinculados a bloques:

Comportamiento en caso de error

Durante la lectura, el NvM evalúa los mensajes de la MemIf de forma diferenciada:

A continuación intervienen varios niveles de recuperación:

  1. En caso de errores de CRC, se producen los reintentos de lectura configurados [SWS_NvM_00526].
  2. En los bloques redundantes, el NvM lee la segunda copia e intenta restaurar la redundancia [SWS_NvM_00199] [SWS_NvM_00531]. Si esto falla, notifica NVM_E_LOSS_OF_REDUNDANCY [SWS_NvM_00546].
  3. Por último, el NvM carga datos por defecto con el resultado NVM_REQ_RESTORED_DEFAULTS [SWS_NvM_00202]. El contenido de NV permanece inalterado [SWS_NvM_00172].

Si faltan datos por defecto, el bloque de RAM permanece no válido [SWS_NvM_00658] [SWS_NvM_00204]. Interpretación: es probable que el orden de los niveles siga la enumeración de la Error Description (Error Description p. 62). Pregunta (abierta) Esta fuente discrepa en dos puntos respecto a los requisitos. Menciona NVM_REQ_RESTORED_FROM_ROM en lugar de NVM_REQ_RESTORED_DEFAULTS. Además, resume el fallo definitivo de forma genérica como NVM_E_REQ_FAILED. Tienen carácter normativo los requisitos citados anteriormente.

lesefehler lesen leer bloque NV a través de MemIf pruef ¿resultado de MemIf y verificación de CRC? lesen->pruef erfolg NVM_REQ_OK RAM-Block VALID / UNCHANGED pruef->erfolg in Ordnung inv NVM_REQ_NV_INVALIDATED sin notificación a Dem pruef->inv MEMIF_BLOCK_INVALID retry Lesewiederholung (NVM_MAX_NUM_OF_READ_RETRIES) pruef->retry error, quedan reintentos red NVM_BLOCK_REDUNDANT? pruef->red error, reintentos agotados retry->lesen zweit zweiten NV-Block lesen red->zweit Sí def Defaultdaten vorhanden? (ROM-Block / Init-Callback) red->def No zweitok zweite Kopie in Ordnung? zweit->zweitok wieder restaurar redundancia; en caso de fallo, NVM_E_LOSS_OF_REDUNDANCY zweitok->wieder Sí zweitok->def No wieder->erfolg restore Defaults in RAM laden NVM_REQ_RESTORED_DEFAULTS def->restore Sí fail el bloque RAM permanece no válido NVM_REQ_INTEGRITY_FAILED / NVM_REQ_NOT_OK notificación a Dem def->fail No

Diagrama de actividades: tratamiento de errores de lectura desde el reintento hasta los datos por defecto, pasando por la copia redundante. Interpretación: el orden sigue la enumeración de la Error Description. Fuentes: [SWS_NvM_00526] [SWS_NvM_00199] [SWS_NvM_00202] [SWS_NvM_00341] [SWS_NvM_00658], Error Description p. 62

Durante la escritura, el NvM cuenta las respuestas negativas hasta NVM_MAX_NUM_OF_WRITE_RETRIES [SWS_NvM_00213] [SWS_NvM_00216]. Si se supera el límite, establece NVM_REQ_NOT_OK y notifica NVM_E_REQ_FAILED [SWS_NvM_00683] [SWS_NvM_00684] (Error Description p. 43). Otros dos patrones de error:

  • Si falla la verificación de escritura, el NvM notifica NVM_E_VERIFY_FAILED y repite la escritura [SWS_NvM_00528] [SWS_NvM_00529].
  • Un bloque redundante se considera escrito en cuanto una copia ha sido correcta [SWS_NvM_00284].

En caso de manejo incorrecto, el NvM notifica al DET si la detección de errores de desarrollo está habilitada. Ejemplos de ello son NVM_E_UNINIT y NVM_E_BLOCK_PENDING [SWS_NvM_00614] [SWS_NvM_00615], así como NVM_E_WRITE_PROTECTED [SWS_NvM_00962]. Una petición multibloque finaliza con NVM_REQ_NOT_OK en cuanto falla un solo bloque [SWS_NvM_00318]. Los usuarios comprueban ellos mismos el estado de sus bloques [SWS_NvM_00694]. Tras una lectura fallida, proporcionan datos válidos antes de la siguiente escritura [SWS_NvM_00696].

Más evidencia detallada

Guía generada por IA sobre la base de los requisitos de R20-11 y pasajes de documentos asociados. Los pasajes de documentos de otros releases son complementarios. Tienen carácter vinculante los textos de especificación enlazados.

NVRAM Manager (NvM)

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

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

función NvM_Init [SWS_NvM_00447] 📄 PDF

void NvM_Init (const NvM_ConfigType* ConfigPtr);

Service for resetting all internal variables.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: d241ed15a825 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y contexto de llamada

La función NvM_Init sirve para el restablecimiento síncrono de todas las variables internas del NVRAM Manager [SWS_NvM_00447]. Espera como parámetro de transferencia ConfigPtr un puntero al conjunto de datos de configuración seleccionado y no posee ningún valor de retorno [SWS_NvM_00447]. Como API de tipo 4, forma parte de las clases de configuración 2 y 3 [SWS_NvM_00560], [SWS_NvM_00561]. La función no es reentrante y solo debe ser llamada por el BSW Mode Manager [SWS_NvM_00447], [SWS_NvM_00693].

Tareas de inicialización

Durante la llamada, la función ejecuta las siguientes acciones:

  • Restablecimiento de todas las variables internas, entre ellas máquinas de estados, colas de órdenes e indicadores de solicitud, a sus valores iniciales [SWS_NvM_00399].
  • Puesta a cero del índice de registro de todos los bloques NVRAM del tipo NVM_BLOCK_DATASET [SWS_NvM_00192].
  • Fijación interna de la señal «INIT DONE», la cual constituye el requisito para el procesamiento de órdenes, la gestión de colas y el recálculo de CRC en el módulo [SWS_NvM_00257], [SWS_NvM_00399].

Restricciones e interacción

Debido a los estrictos requisitos para el tiempo de arranque de la unidad de control, NvM_Init no inicializa ningún bloque NVRAM configurado [SWS_NvM_00091]. El contenido de los bloques RAM permanentes no se modifica y las retrollamadas de sincronización no se invocan; esto queda reservado a la función NvM_ReadAll [SWS_NvM_00400]. Además, NvM_Init no inicializa ni los controladores subyacentes ni la abstracción de hardware de memoria ni módulos ajenos, dado que su inicialización por parte del BSW Mode Manager se da por sentada [SWS_NvM_00157], [SWS_NvM_00193].

Esta nota de uso se generó de forma automatizada sobre la base de la especificación AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I2)

función 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

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: f3fd900b11e8 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y semántica

La función síncrona y reentrante NvM_SetBlockProtection sirve para activar o restablecer la protección contra escritura para un bloque NVRAM a través del atributo correspondiente en el bloque administrativo [SWS_NvM_00450], [SWS_NvM_00016]. Está asignada a la clase de configuración de API 3 [SWS_NvM_00560]. El entorno del módulo NvM puede activar o desactivar de forma dirigida la protección contra escritura a través del parámetro ProtectionEnabled [SWS_NvM_00578]. La función devuelve E_OK en caso de ejecución correcta y E_NOT_OK en caso de error [SWS_NvM_00450].

Restricciones y concurrencia

La modificación de la protección contra escritura solo está permitida para bloques en los que NvMWriteBlockOnce esté configurado como FALSE, independientemente del valor del parámetro NvMBlockWriteProt [SWS_NvM_00325]. Si NvMWriteBlockOnce está configurado como TRUE, la protección contra escritura no se puede activar ni desactivar [SWS_NvM_00398], [SWS_NvM_00577]; esta protección tampoco se puede anular después de operaciones de lectura [SWS_NvM_00314], [SWS_NvM_00316], [SWS_NvM_00784]. Además, un estado de bloqueo establecido mediante NvM_SetBlockLockStatus no puede ser modificado por NvM_SetBlockProtection [SWS_NvM_00754]. Mientras una orden de bloque individual esté activa o encolada para el mismo bloque, la llamada no está permitida [SWS_NvM_00704].

Manejo de errores

Con la detección de desarrollo (DET) activada, la función notifica estados de error específicos:

  • NVM_E_UNINIT, si el módulo NvM aún no está inicializado [SWS_NvM_00606].
  • NVM_E_PARAM_BLOCK_ID, si el BlockId transferido se encuentra fuera del rango válido [SWS_NvM_00609].
  • NVM_E_BLOCK_PENDING, en caso de que para el bloque ya esté activo o encolado un proceso [SWS_NvM_00607].
  • NVM_E_BLOCK_CONFIG, si el bloque está configurado con NvMWriteBlockOnce = TRUE [SWS_NvM_00608].
  • NVM_E_BLOCK_LOCKED, si el bloque está bloqueado [SWS_NvM_00759].

Esta nota de uso se basa en la especificación del NVRAM Manager en AUTOSAR Classic R20-11.

Guía del implementador pendiente (complejidad I2)

función 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.

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: f2f026a0e790 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función síncrona y reentrante NvM_SetRamBlockStatus sirve para establecer el estado de bloque RAM para bloques RAM permanentes o para bloques con sincronización explícita [SWS_NvM_00453]. Está disponible en las clases de configuración de API 2 y 3 [SWS_NvM_00561], [SWS_NvM_00560], siempre que haya sido activada mediante el parámetro de configuración NvMSetRamBlockStatusApi [SWS_NvM_00408].

A través del parámetro BlockChanged se controla si el bloque se marca como válido y modificado (TRUE) o como no válido y no modificado (FALSE) [SWS_NvM_00453], [SWS_NvM_00406]. Al pasar TRUE, el módulo asume la validez de los datos [SWS_NvM_00241]. La función devuelve E_OK en caso de cambio de estado exitoso y E_NOT_OK en caso de error [SWS_NvM_00453].

Si BlockChanged se establece en TRUE, la función solicita en segundo plano un nuevo cálculo de la suma de comprobación en NvM_MainFunction si NvMCalcRamBlockCrc está configurado [SWS_NvM_00121]. En bloques sin RAM permanente con sincronización explícita, este trabajo utiliza la retrollamada de escritura para la obtención de datos [SWS_NvM_00906]. Si esta falla, se realizan los reintentos configurados por cada llamada a NvM_MainFunction [SWS_NvM_00907], [SWS_NvM_00908]. Si todos los intentos resultan infructuosos, el trabajo se considera aun así finalizado y el bloque permanece marcado como modificado [SWS_NvM_00909].

Antes de la llamada, el módulo NvM debe estar inicializado [SWS_NvM_00711]. Si la detección de errores de desarrollo está activa, la función notifica NVM_E_UNINIT en caso de módulo no inicializado [SWS_NvM_00643], NVM_E_PARAM_BLOCK_ID en caso de BlockId no válida [SWS_NvM_00645] y NVM_E_BLOCK_PENDING si ya hay órdenes en ejecución o encoladas [SWS_NvM_00644]. Mientras una orden de bloque individual esté activa, la función no debe llamarse para dicho bloque [SWS_NvM_00704]. Un bloqueo establecido mediante NvM_SetBlockLockStatus no puede modificarse por este medio [SWS_NvM_00754].

Esta nota de uso se generó de forma automatizada sobre la base de la especificación AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I2)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 9c1d841bb0f7 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y contexto de llamada

La función síncrona y reentrante NvM_SetBlockLockStatus sirve para bloquear (BlockLocked = TRUE) o desbloquear (BlockLocked = FALSE) un bloque RAM configurado de forma permanente o la sincronización explícita de un bloque de NVRAM [SWS_NvM_00548]. Pertenece al alcance funcional de las clases de configuración de API 2 y 3 [SWS_NvM_00561], [SWS_NvM_00560]. La función no está contenida en la interfaz ServicePort y es invocada principalmente por el DCM, así como por controladores de dispositivos complejos (CDD) [SWS_NvM_00732].

Restricciones e interacción

La llamada actúa exclusivamente sobre bloques de NVRAM con bloque RAM permanente o sincronización explícita configurada; en todos los demás bloques carece de efecto [SWS_NvM_00732]. Si se bloquea un bloque (BlockLocked = TRUE), el NvM garantiza que los datos NV asociados no se modifiquen: el bloque se omite en NvM_WriteAll y se rechazan los servicios NvM_WriteBlock, NvM_WritePRAMBlock, NvM_InvalidateNvBlock y NvM_EraseNvBlock [SWS_NvM_00751]. En el siguiente arranque, el NvM carga el bloque garantizadamente desde la memoria NV durante NvM_ReadBlock o NvM_ReadPRAMBlock [SWS_NvM_00752]. El estado de bloqueo establecido no puede modificarse mediante NvM_SetRamBlockStatus ni a través de NvM_SetBlockProtection [SWS_NvM_00754]. La transferencia de BlockLocked = FALSE restablece el procesamiento regular [SWS_NvM_00753].

Manejo de errores

Con la detección de desarrollo (DET) activada, la función notifica errores de desarrollo específicos:

  • NVM_E_UNINIT, si el módulo NvM aún no está inicializado en el momento de la llamada [SWS_NvM_00728].
  • NVM_E_PARAM_BLOCK_ID, si el parámetro BlockId se encuentra fuera del rango permitido [SWS_NvM_00731].
  • NVM_E_BLOCK_CONFIG, siempre que el bloque de NVRAM referenciado esté configurado con el parámetro NvMWriteBlockOnce = TRUE [SWS_NvM_00730].

Esta nota de uso se basa en la especificación AUTOSAR Classic R20-11 y resume los requisitos relativos a la llamada, el efecto de protección y el tratamiento de errores de la API.

Guía del implementador pendiente (complejidad I2)

función NvM_CancelJobs [SWS_NvM_00535] 📄 PDF

Std_ReturnType NvM_CancelJobs (NvM_BlockIdType BlockId);

Service to cancel all jobs pending for a NV block.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 692d02b963f0 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y semántica

La función NvM_CancelJobs disponible a través de NvM.h sirve para cancelar de forma síncrona todas las órdenes pendientes en la cola para un determinado bloque de NVRAM [SWS_NvM_00535], [SWS_NvM_00536]. La función está diseñada como reentrante y espera como parámetro el BlockId, el cual identifica unívocamente el descriptor de bloque del bloque de NVRAM en cuestión [SWS_NvM_00535]. La llamada devuelve E_OK si las órdenes pendientes pudieron eliminarse con éxito de la cola, y E_NOT_OK en caso de que no fuera posible encontrar ninguna orden en la cola para el bloque especificado [SWS_NvM_00535].

Flujo y concurrencia

Una orden que ya se esté procesando activamente en el momento de la llamada a la función no es interrumpida por NvM_CancelJobs, sino que continúa ejecutándose hasta el final [SWS_NvM_00537]. Siempre que se acepte la solicitud de cancelación para órdenes en espera, el servicio establece previamente el resultado de solicitud específico del bloque en NVM_REQ_CANCELED [SWS_NvM_00225], [SWS_NvM_00536]. El propósito de esta limpieza es vaciar la cola, por ejemplo al terminar o reiniciar una partición, y evitar así notificaciones posteriores sobre trabajos completados [SWS_NvM_00225].

Tratamiento de errores y configuración

Con la detección de desarrollo (DET) activada, la función comprueba las precondiciones: Si el módulo aún no está inicializado, se notifica el error NVM_E_UNINIT [SWS_NvM_00648]. Si el BlockId transferido está fuera del rango válido, se emite el mensaje DET NVM_E_PARAM_BLOCK_ID [SWS_NvM_00649]. NvM_CancelJobs está clasificada como API de tipo 2 y está disponible en las clases de configuración de API 2 y 3 [SWS_NvM_00561], [SWS_NvM_00560].

Esta nota de uso se ha generado automáticamente a partir de la especificación de AUTOSAR.

Guía del implementador pendiente (complejidad I2)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 423f54bb75f5 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y semántica

La función NvM_ReadBlock sirve para la copia asíncrona de datos útiles desde la memoria NV al bloque de RAM correspondiente [SWS_NvM_00010], [SWS_NvM_00454]. La llamada es reentrante [SWS_NvM_00454]. Adopta los parámetros, encola la petición de lectura en la cola interna de trabajos y devuelve inmediatamente E_OK en caso de aceptación correcta o E_NOT_OK en caso de rechazo [SWS_NvM_00195], [SWS_NvM_00454].

Si se transfiere un puntero NvM_DstPtr, se pueden leer datos en un búfer de RAM temporal difiriendo de la configuración del bloque; un puntero NULL no permitido provoca en este escenario un error DET [SWS_NvM_00196], [SWS_NvM_00278]. Un bloque de RAM permanente configurado se marca como no válido directamente al encolar o al inicio del procesamiento del trabajo [SWS_NvM_00198]. Solo tras un proceso de copia correcto se considera que el bloque de RAM es válido e inalterado [SWS_NvM_00200], y el resultado del trabajo cambia a NVM_REQ_OK [SWS_NvM_00206].

Tratamiento de errores e integridad de datos

Si se ha activado una suma de comprobación para el bloque (NvMCalRamBlockCrC == TRUE), el trabajo solicita un nuevo cálculo tras la copia [SWS_NvM_00201]:

  • En caso de errores de CRC se notifica NVM_E_INTEGRITY_FAILED al DEM [SWS_NvM_00203]. Si existen, se cargan valores por defecto y el resultado se ajusta a NVM_REQ_RESTORED_DEFAULTS [SWS_NvM_00202]. Si faltan datos de ROM y callbacks de inicialización, resulta NVM_REQ_INTEGRITY_FAILED [SWS_NvM_00204].
  • Si el controlador de memoria notifica MEMIF_JOB_FAILED y no hay valores de sustitución disponibles, el trabajo finaliza con NVM_REQ_NOT_OK [SWS_NvM_00359].

Particularidades de los tipos de bloques

  • Redundant: si la lectura de la primera copia falla, se recurre automáticamente a la segunda copia NV [SWS_NvM_00199]. Si ambas copias son no válidas, se invalida el bloque completo [SWS_NvM_00317].
  • Dataset: si el bloque seleccionado mediante el índice de conjunto de datos está marcado como no válido, no se realiza la copia en la RAM [SWS_NvM_00355].
  • Write-Once: los bloques leídos de manera consistente con NVM_WRITE_BLOCK_ONCE activado quedan permanentemente protegidos contra escritura [SWS_NvM_00316].

Este texto ha sido generado por una IA y se basa exclusivamente en las especificaciones de la versión R20-11.

Guía del implementador pendiente (complejidad I2)

función 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

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: d2775f30ff1b Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función NvM_WriteBlock sirve para copiar datos de un bloque de RAM al bloque NV asignado [SWS_NvM_00455], [SWS_NvM_00410]. La llamada se ejecuta de forma reentrante y asíncrona: la función acepta los parámetros pasados BlockId y NvM_SrcPtr, encola la orden de escritura en la cola interna de trabajos y retorna inmediatamente [SWS_NvM_00208]. El valor de retorno indica con E_OK la aceptación correcta o con E_NOT_OK el rechazo de la orden [SWS_NvM_00455].

En cuanto a la parametrización y la fuente de datos, se aplican las siguientes directrices:

  • Si se pasa una dirección de RAM válida mediante NvM_SrcPtr, la orden de escritura utiliza este búfer [SWS_NvM_00210]. Esto permite también guardar bloques de RAM temporales en bloques configurados originalmente como permanentes o con sincronización explícita [SWS_NvM_00280].
  • Se presupone válido un bloque de RAM permanente configurado o bien se valida automáticamente antes de la operación de copia [SWS_NvM_00303].
  • Si se ha configurado una suma de comprobación para el bloque NV, el trabajo solicita un nuevo cálculo de CRC antes de la operación de escritura [SWS_NvM_00212].
  • En bloques de conjunto de datos (NVM_BLOCK_DATASET), el destino se selecciona a través del índice de datos guardado en el bloque administrativo [SWS_NvM_00338].
  • En bloques redundantes (NVM_BLOCK_REDUNDANT), el trabajo finaliza con NVM_REQ_OK en cuanto al menos una copia se haya escrito correctamente [SWS_NvM_00284].
  • Si NvMWriteBlockOnce == TRUE está establecido, el trabajo activa inmediatamente tras una escritura correcta la protección contra escritura en el bloque administrativo [SWS_NvM_00328].
  • Las órdenes de escritura para el ID de bloque reservado 1 solo están permitidas si NvMDynamicConfiguration está activado [SWS_NvM_00311].

Tratamiento de errores y concurrencia:

  • Si la detección de desarrollo está activa, NvM_WriteBlock notifica el error DET NVM_E_UNINIT en caso de módulo no inicializado [SWS_NvM_00619], así como NVM_E_BLOCK_PENDING si el mismo bloque ya está en procesamiento o encolado [SWS_NvM_00620]. La falta de un puntero de origen en búferes temporales provoca un error de parámetro DET [SWS_NvM_00280].
  • Las respuestas negativas de la interfaz de memoria incrementan el contador de reintentos; tras superar NVM_MAX_NUM_OF_WRITE_RETRIES, el trabajo finaliza con NVM_REQ_NOT_OK [SWS_NvM_00213], [SWS_NvM_00216].
  • Si el bloque está configurado con prioridad inmediata, NvM_WriteBlock cancela de forma destructiva un trabajo actualmente en ejecución para que la orden de escritura se procese a continuación [SWS_NvM_00300].

Esta nota de uso se ha generado automáticamente a partir de la especificación de AUTOSAR.

Guía del implementador pendiente (complejidad I2)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 01efa016ebb0 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y semántica

La función NvM_RestoreBlockDefaults restaura datos estándar en el bloque de RAM asignado ([SWS_NvM_00456], [SWS_NvM_00012]). Opera de forma asíncrona: tras la llamada, toma los parámetros, encola la solicitud en la cola de peticiones interna y regresa de inmediato con E_OK en caso de aceptación correcta o con E_NOT_OK en caso de rechazo ([SWS_NvM_00456], [SWS_NvM_00224]). Si a través del parámetro de salida NvM_DestPtr se transfiere una dirección de RAM válida, esta se utiliza como dirección de destino ([SWS_NvM_00435]). Para copiar datos de ROM a un bloque de RAM temporal a pesar de estar configurados un bloque de RAM permanente o callbacks de sincronización, el invocador debe transferir obligatoriamente un puntero distinto de NULL ([SWS_NvM_00436]).

Tratamiento de errores y condiciones límite

La función no es reentrante ([SWS_NvM_00456]) y forma parte de las clases de configuración de API 2 y 3 ([SWS_NvM_00561], [SWS_NvM_00560]). Si la detección de desarrollo (DET) está activa, notifica NVM_E_UNINIT si el módulo aún no está inicializado ([SWS_NvM_00625]), NVM_E_PARAM_BLOCK_ID en caso de BlockId no válida ([SWS_NvM_00630]), así como un error de parámetro si no se transfiere un puntero de destino válido en bloques configurados como permanentes para una copia temporal ([SWS_NvM_00436]). La función falla síncronamente con E_NOT_OK si el bloque es del tipo NVM_BLOCK_DATASET, existe al menos un bloque de ROM y el índice de datos actual apunta a un bloque NV ([SWS_NvM_00353]).

Procesamiento de trabajos e interacción

En el marco del procesamiento asíncrono de trabajos, el servicio carga valores estándar desde un bloque de ROM configurado ([SWS_NvM_00267]). Si se ha solicitado un bloque de RAM permanente o se utiliza un callback de sincronización explícito (NvMReadRamBlockFromNvCallback), el bloque de RAM se invalida antes del proceso de copia o antes de la llamada al callback ([SWS_NvM_00227]). Tras un proceso de copia correcto o tras el retorno del callback de sincronización con E_OK, el bloque de RAM se valida y se marca como modificado ([SWS_NvM_00228]). Si se ha configurado una suma de comprobación para el bloque, el trabajo solicita finalmente un nuevo cálculo del CRC ([SWS_NvM_00229]). Esta misma lógica de restauración la utilizan también NvM_ReadBlock y NvM_ReadAll como mecanismo de respaldo ante accesos fallidos de lectura de memoria o errores de CRC ([SWS_NvM_00202], [SWS_NvM_00293], [SWS_NvM_00657]).

Esta nota de uso ha sido generada de forma automatizada sobre la base de la especificación AUTOSAR Classic R20-11.

Guía del implementador pendiente (complejidad I2)

función NvM_EraseNvBlock [SWS_NvM_00457] 📄 PDF

Std_ReturnType NvM_EraseNvBlock (NvM_BlockIdType BlockId);

Service to erase a NV block.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: e5129c2997d6 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función reentrante y asíncrona NvM_EraseNvBlock ([SWS_NvM_00457]) de la clase de configuración de API 3 ([SWS_NvM_00560]) sirve para borrar un bloque de memoria no volátil en función del BlockId transferido. Siempre que no esté activa ninguna protección contra escritura, la función adopta los parámetros, encola la petición de borrado en la cola interna de trabajos y regresa inmediatamente ([SWS_NvM_00231], [SWS_NvM_00418]). El valor de retorno E_OK señala la aceptación correcta del trabajo, mientras que E_NOT_OK indica el rechazo ([SWS_NvM_00457]).

Antes de la llamada, el módulo NvM debe estar completamente inicializado ([SWS_NvM_00715]). Tras el encolado, la protección contra escritura no se vuelve a comprobar antes de extraer el trabajo de la cola ([SWS_NvM_00662]). En bloques redundantes del tipo NVM_BLOCK_REDUNDANT, el proceso de borrado solo se considera correcto una vez que se han borrado ambos bloques NV redundantes ([SWS_NvM_00269]). El contenido de datos de un bloque de RAM asignado permanece siempre inalterado mediante el procesamiento del trabajo ([SWS_NvM_00416]).

Una llamada se rechaza si se direcciona un bloque de ROM de un bloque de conjunto de datos ([SWS_NvM_00661]) o si el bloque está bloqueado mediante NvM_SetBlockLockStatus ([SWS_NvM_00751]). Con la detección de desarrollo (DET) activada, la función notifica NVM_E_UNINIT en caso de módulo no inicializado ([SWS_NvM_00631]), NVM_E_PARAM_BLOCK_ID en caso de BlockId no válida ([SWS_NvM_00635]), así como NVM_E_BLOCK_LOCKED en caso de bloque bloqueado ([SWS_NvM_00757]). Si el bloque no posee prioridad inmediata («immediate priority») o está configurada una prioridad estándar, con el DET activo se notifica el error NVM_E_BLOCK_CONFIG y se devuelve E_NOT_OK ([SWS_NvM_00357], [SWS_NvM_00636]). Si la posterior ejecución asíncrona falla, el estado de la solicitud se ajusta a NVM_REQ_NOT_OK ([SWS_NvM_00271]) y se notifica NVM_E_REQ_FAILED al DEM ([SWS_NvM_00663]).

Esta nota de uso se generó de forma automatizada sobre la base de la especificación.

Guía del implementador pendiente (complejidad I2)

función NvM_InvalidateNvBlock [SWS_NvM_00459] 📄 PDF

Std_ReturnType NvM_InvalidateNvBlock (NvM_BlockIdType BlockId);

Service to invalidate a NV block.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: a20887273850 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función NvM_InvalidateNvBlock es un servicio asíncrono y reentrante de la clase de configuración de API 3 para invalidar un bloque NV [SWS_NvM_00459], [SWS_NvM_00560]. Como condición de llamada, el módulo NvM debe haber sido inicializado previamente por el entorno del módulo [SWS_NvM_00717]. La llamada adopta el parámetro BlockId, encola la solicitud en la cola de peticiones si la protección contra escritura está desactivada y regresa con E_OK [SWS_NvM_00239], [SWS_NvM_00424]. Si la solicitud no puede aceptarse, la función devuelve E_NOT_OK [SWS_NvM_00459].

Una llamada se rechaza síncronamente con E_NOT_OK si a través de BlockId se indicó un bloque de ROM de un bloque de conjunto de datos (Dataset) [SWS_NvM_00664]. Si el bloque se bloqueó previamente mediante NvM_SetBlockLockStatus, NvM rechaza el trabajo [SWS_NvM_00751] y notifica el error DET NVM_E_BLOCK_LOCKED con la interfaz de desarrollo activa [SWS_NvM_00756]. Si el bloque ya está encolado o en ejecución, se produce la notificación DET NVM_E_BLOCK_PENDING [SWS_NvM_00639].

El trabajo asíncrono propiamente dicho invalida el bloque NV referenciado [SWS_NvM_00421] teniendo en cuenta las siguientes condiciones de contorno:

  • En bloques redundantes (NVM_BLOCK_REDUNDANT), el resultado del trabajo solo se ajusta a NVM_REQ_OK una vez que ambos bloques NV redundantes se hayan invalidado correctamente [SWS_NvM_00274]; este mismo mecanismo se aplica también en NvM_FirstInitAll [SWS_NvM_00919], [SWS_NvM_00920].
  • Para bloques con NVM_WRITE_BLOCK_ONCE, el trabajo deja la protección contra escritura inalterada [SWS_NvM_00960]. Si no precedió ningún proceso de lectura, el trabajo notifica el error DET NVM_E_WRITE_ONCE_STATUS_UNKNOWN [SWS_NvM_00958].
  • Si se produce un error durante el procesamiento asíncrono, el resultado de la solicitud se ajusta a NVM_REQ_NOT_OK [SWS_NvM_00275] y se transmite el error de producción NVM_E_REQ_FAILED al DEM [SWS_NvM_00666].

Esta nota de uso se ha generado mediante una IA y se basa exclusivamente en los datos de especificación de AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I2)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 657ec2501bdc Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

La función asíncrona y reentrante [SWS_NvM_00764] sirve para copiar datos de un bloque NV en el bloque RAM permanente asignado. La llamada acepta el BlockId, encola la solicitud de lectura en la cola de órdenes interna y retorna inmediatamente [SWS_NvM_00766]. El valor de retorno E_OK confirma la aceptación de la orden, mientras que E_NOT_OK señaliza un rechazo [SWS_NvM_00764]. La función pertenece al alcance funcional de las clases de configuración de API 2 y 3 [SWS_NvM_00560], [SWS_NvM_00561].

Flujo y sincronización

Tras la puesta en cola exitosa de la orden o el inicio del procesamiento, el bloque de RAM permanente se invalida de inmediato [SWS_NvM_00767]. Si se ha configurado una sincronización explícita para el bloque, la aplicación puede modificar el bloque de RAM hasta la llegada de la rutina de sincronización; en este caso, la invalidación tiene lugar directamente antes de la llamada a NvMReadRamBlockFromNvCallback [SWS_NvM_00706], [SWS_NvM_00767]. Si los datos NV se transfirieron a la RAM sin errores, la orden concluye con el estado NVM_REQ_OK [SWS_NvM_00765], [SWS_NvM_00775].

Tratamiento de errores y redundancia

En bloques del tipo NVM_BLOCK_REDUNDANT, la orden inicia automáticamente un intento de lectura en el segundo bloque siempre que falle el primer intento de lectura [SWS_NvM_00768]. En datasets (NVM_BLOCK_DATASET), se impide la copia si el bloque NV seleccionado mediante el índice es inconsistente [SWS_NvM_00771]; si el índice hace referencia a datos en ROM, estos se cargan y el resultado se establece en NVM_REQ_OK [SWS_NvM_00772]. Si hay configurados datos por defecto y el bloque NV no se puede leer con un estado de RAM no válido, se produce una restauración implícita [SWS_NvM_00575], la cual clasifica el bloque de RAM como válido y modificado [SWS_NvM_00774]; sin valores predeterminados configurados, la restauración se omite [SWS_NvM_00572]. Si previamente estuvo activo NvM_SetBlockLockStatus, se fuerza la recarga desde la memoria NV [SWS_NvM_00752].

Esta nota de uso se ha generado de forma automatizada sobre la base del estado de la especificación AUTOSAR CP R20-11.

Guía del implementador pendiente (complejidad I2)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 5a26959f15b3 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función reentrante y asíncrona NvM_WritePRAMBlock inicia la escritura de los datos de un bloque de RAM permanente en el bloque NV asociado [SWS_NvM_00793], [SWS_NvM_00794]. La función está disponible en las clases de configuración de la API 2 y 3 [SWS_NvM_00561], [SWS_NvM_00560]. El ID de bloque reservado 1 solo debe transferirse si NvMDynamicConfiguration está establecido en TRUE [SWS_NvM_00311].

En la transferencia, la función E_OK devuelve en caso de aceptación correcta o E_NOT_OK [SWS_NvM_00793]. Si el bloque referenciado está bloqueado, la llamada falla con E_NOT_OK y el módulo notifica un error DET [SWS_NvM_00797]. La protección del bloque ya se comprueba al encolar en la cola de órdenes y no se vuelve a validar antes de la ejecución de la orden [SWS_NvM_00799]. Si el bloque de NVRAM dispone de prioridad inmediata (immediate priority), se cancela de inmediato y de forma destructiva una orden en curso y esta orden de escritura se procesa a continuación [SWS_NvM_00800].

Antes de la transferencia propiamente dicha a la memoria NV, la orden solicita un nuevo cálculo del CRC, siempre que el bloque esté configurado con CRC [SWS_NvM_00801]. Un bloque de RAM permanente que aún no sea válido se valida automáticamente [SWS_NvM_00803]. En bloques redundantes (NVM_BLOCK_REDUNDANT), se escriben ambos bloques NV, comenzando por aquel que no se haya leído en órdenes de lectura previas [SWS_NvM_00807], [SWS_NvM_00808]. En caso de errores de escritura, el número de reintentos se limita mediante NVM_MAX_NUM_OF_WRITE_RETRIES [SWS_NvM_00806]; si se produce un desbordamiento, el NvM establece el resultado de la orden en NVM_REQ_NOT_OK [SWS_NvM_00804] y notifica NVM_E_REQ_FAILED al DEM [SWS_NvM_00805].

Por lo que respecta a la concurrencia: En la sincronización implícita, la aplicación ya no debe modificar los datos del búfer tras la llamada hasta el fin de la orden; el acceso de lectura permanece permitido [SWS_NvM_00698]. En la sincronización explícita, el búfer puede modificarse hasta que se llame a la rutina de callback NvMWriteRamBlockToNvCallback [SWS_NvM_00705].

Este texto ha sido generado por una IA y sirve para la orientación técnica a partir de la especificación.

Guía del implementador pendiente (complejidad I2)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: ffad126a6872 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y semántica

La función NvM_RestorePRAMBlockDefaults restaura datos por defecto en el bloque de RAM permanente asociado ([SWS_NvM_00813], [SWS_NvM_00814]). El servicio opera de forma asíncrona y adopta a través del parámetro BlockId el identificador del descriptor de bloque de NVRAM ([SWS_NvM_00813]). Al ejecutarse la llamada, la solicitud se encola en la cola interna de órdenes ([SWS_NvM_00815]). El valor de retorno E_OK señaliza la aceptación correcta, mientras que E_NOT_OK indica un rechazo ([SWS_NvM_00813]). Si se ha configurado un bloque de ROM, los datos se cargan desde este en el marco del procesamiento asíncrono ([SWS_NvM_00816]).

Tratamiento de errores y condiciones límite

Si para el bloque no se han depositado datos por defecto en ROM ni una rutina de callback NvMInitBlockCallback, el estado del bloque permanece inalterado y la llamada devuelve E_NOT_OK ([SWS_NvM_00884]). Con la detección de desarrollo (DET) activada se notifican errores específicos:

  • NVM_E_UNINIT: El módulo todavía no está inicializado ([SWS_NvM_00831]).
  • NVM_E_PARAM_BLOCK_ID: El BlockId transferido se encuentra fuera del rango válido ([SWS_NvM_00834]).
  • NVM_E_BLOCK_PENDING: Para el Block-ID ya hay una orden en cola o en procesamiento ([SWS_NvM_00832]).
  • NVM_E_BLOCK_WITHOUT_DEFAULTS: No existen ni datos por defecto en ROM ni un callback de inicialización ([SWS_NvM_00886]).
  • NVM_E_PARAM_ADDRESS: No se ha configurado ni un bloque de RAM permanente ni una sincronización explícita ([SWS_NvM_00894]).

Concurrencia e interacción

El servicio está especificado como no reentrante ([SWS_NvM_00813]) y se encuentra disponible en las clases de configuración de la API 2 y 3 ([SWS_NvM_00561], [SWS_NvM_00560]). Esta misma lógica de restauración se utiliza además internamente en NvM_ReadPRAMBlock en caso de que falle la operación de lectura subyacente ([SWS_NvM_00789], [SWS_NvM_00882]).

Esta nota de uso se basa en las especificaciones de AUTOSAR Classic Release R20-11.

Guía del implementador pendiente (complejidad I2)

función NvM_ReadAll [SWS_NvM_00460] 📄 PDF

void NvM_ReadAll (void);

Initiates a multi block read request.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: d6aaa62b8e91 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función NvM_ReadAll inicia de forma asíncrona una orden de lectura multibloque para inicializar los bloques de datos de RAM [SWS_NvM_00460], [SWS_NvM_00158]. No posee parámetros, no devuelve ningún valor de retorno y no es reentrante [SWS_NvM_00460]. La llamada señala la solicitud al módulo NvM y retorna inmediatamente; sin embargo, el procesamiento propiamente dicho se pospone hasta que todas las colas de órdenes de bloques individuales estén vacías [SWS_NvM_00243].

Al inicio, durante el arranque del sistema, la orden valida el ID de configuración comparando el valor almacenado con el compilado [SWS_NvM_00073], [SWS_NvM_00246]:

  • En caso de coincidencia, se realiza la preparación normal para todos los bloques configurados [SWS_NvM_00247].
  • Una diferencia de configuración se ignora si NvMDynamicConfiguration == FALSE está establecido [SWS_NvM_00248].
  • Si se cumple NvMDynamicConfiguration == TRUE y NvMResistantToChangedSw == FALSE, se ejecuta una preparación ampliada en caso de no coincidencia [SWS_NvM_00249].

A continuación, la orden itera sobre todos los bloques de usuario, comenzando por el ID de bloque más bajo (a excepción de los ID reservados 0 y 1) [SWS_NvM_00244]. Se tienen en cuenta bloques de RAM permanentes o bloques con retrollamada de sincronización configurada NvM_ReadRamBlockFromNvm, siempre que NvmSelectBlockForReadall == TRUE esté configurado [SWS_NvM_00118]. Los bloques seleccionados que no se hayan leído reciben el resultado NVM_REQ_BLOCK_SKIPPED [SWS_NvM_00287].

En bloques redundantes (NVM_BLOCK_REDUNDANT), si el primer intento de lectura falla, se lee automáticamente el segundo bloque NV [SWS_NvM_00288]. Tras una carga correcta en RAM, el estado del bloque se establece en «valid/unmodified» y el resultado de la orden en NVM_REQ_OK [SWS_NvM_00251], [SWS_NvM_00290], [SWS_NvM_00291]. Para bloques con NvMCalRamBlockCrC == TRUE, la orden solicita un nuevo cálculo de CRC [SWS_NvM_00292]. Si está configurado, se llama a NvMSingleBlockCallback para cada bloque y a MultiBlockCallback tras el último bloque [SWS_NvM_00281].

Esta nota de uso se basa en las especificaciones de AUTOSAR Classic R20-11.

Guía del implementador pendiente (complejidad I1)

función NvM_WriteAll [SWS_NvM_00461] 📄 PDF

void NvM_WriteAll (void);

Initiates a multi block write request.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: a7a2e73b7711 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y contexto de llamada

La función NvM_WriteAll inicia de forma asíncrona una orden de escritura multibloque y no posee parámetros ni valores de retorno [SWS_NvM_00461]. Tras la llamada, la función señala la solicitud al módulo NvM y retorna inmediatamente [SWS_NvM_00254]. El procesamiento propiamente dicho se pospone hasta que todas las colas para órdenes de bloques individuales se hayan procesado por completo [SWS_NvM_00254]. La llamada se realiza típicamente en el marco del proceso básico de apagado (Shutdown) a través del BSW Mode Manager [SWS_NvM_00092].

Secuencia y procesamiento de bloques

Durante el apagado, la orden sincroniza bloques de RAM permanentes con los bloques NV correspondientes o ejecuta la retrollamada de sincronización explícita NvM_WriteRamBlockToNvm [SWS_NvM_00018]. Para ello solo se consideran los bloques para los que el parámetro de configuración NvMSelectBlockForWriteAll está establecido en true [SWS_NvM_00252], así como el bloque 1 en caso de ID de configuración discrepantes con configuración dinámica activa [SWS_NvM_00310]. Si se ha configurado un CRC para un bloque NVRAM, la orden solicita un nuevo cálculo antes de la operación de escritura y actualiza la suma de comprobación [SWS_NvM_00253]. Para bloques con NvMWriteBlockOnce == TRUE, tras una escritura correcta, la orden establece inmediatamente el flag de protección contra escritura en el bloque administrativo [SWS_NvM_00329].

Concurrencia y tratamiento de errores

  • Reentrancia: La función no es reentrante [SWS_NvM_00461].
  • Supervisión de errores: Para evitar bucles infinitos, un contador de reintentos supervisa los intentos de repetición ante respuestas no exitosas del módulo MemIf [SWS_NvM_00296].
  • Resultados de la orden: Si falla el procesamiento de al menos un bloque, el resultado global se establece en NVM_REQ_NOT_OK [SWS_NvM_00318]. Para los bloques configurados que no se escribieron, se establece el resultado individual NVM_REQ_BLOCK_SKIPPED [SWS_NvM_00298]. En bloques redundantes (NVM_BLOCK_REDUNDANT), la orden individual se considera NVM_REQ_OK en cuanto al menos uno de los bloques NV se haya escrito correctamente [SWS_NvM_00337].
  • Cancelación: Una orden en ejecución puede cancelarse mediante NvM_CancelWriteAll [SWS_NvM_00019]. Esto da lugar al resultado global NVM_REQ_CANCELED [SWS_NvM_00237], completándose el bloque que se está procesando en ese momento de forma no destructiva y con consistencia de datos [SWS_NvM_00238].

Este texto fue generado por una IA y sirve como guía orientativa. El texto vinculante es la especificación AUTOSAR.

Guía del implementador pendiente (complejidad I1)

función NvM_CancelWriteAll [SWS_NvM_00458] 📄 PDF

void NvM_CancelWriteAll (void);

Service to cancel a running Nv M_ Write All request.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 2a47a7f76a8b Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y semántica

La función NvM_CancelWriteAll sirve para cancelar anticipadamente una operación de escritura multibloque en curso (NvM_WriteAll) [SWS_NvM_00458], [SWS_NvM_00019]. La llamada es asíncrona, no reentrante, no recibe parámetros y no proporciona valor de retorno [SWS_NvM_00458]. La función señala la solicitud de cancelación directamente al módulo y regresa inmediatamente [SWS_NvM_00232]. La solicitud no se encola en la cola de trabajos; siempre puede haber solo una solicitud pendiente de este tipo [SWS_NvM_00420]. Si en el momento de la llamada no hay ninguna operación activa, la llamada no tiene efecto [SWS_NvM_00233].

Desarrollo y consistencia de datos

La cancelación se lleva a cabo de tal forma que no se vea afectada la consistencia de datos del bloque de NVRAM que se esté procesando en el momento de la cancelación [SWS_NvM_00019]. El módulo finaliza este bloque activo de forma regular y ajusta su atributo de estado según el éxito a NVM_REQ_OK o NVM_REQ_NOT_OK, mientras que todos los bloques pendientes restantes se ajustan a NVM_REQ_CANCELED [SWS_NvM_00236]. El resultado global viene dado implícitamente por el resultado de la operación cancelada [SWS_NvM_00235], se deposita en una variable separada [SWS_NvM_00393] y puede consultarse mediante NvM_GetErrorStatus indicando el ID de bloque reservado 0 [SWS_NvM_00394]. Además, opcionalmente se puede notificar a un callback de nivel superior (NvMMultiBlockCallback) [SWS_NvM_00260]. Siempre que se configure a través de NvMDrvModeSwitch, la petición conmuta los dispositivos de memoria tras la cancelación al modo de funcionamiento lento («slow-mode») [SWS_NvM_00681].

Restricciones y tratamiento de errores

La llamada a NvM_CancelWriteAll está restringida funcionalmente y solo debe realizarse mediante el BSW Mode Manager (BswM) [SWS_NvM_00703]. Además, la función pertenece a la clase de configuración de API 2 [SWS_NvM_00561]. El módulo debe haber sido inicializado antes de la llamada [SWS_NvM_00716]; con la detección de desarrollo (DET) activada, una llamada en estado no inicializado genera el mensaje de error NVM_E_UNINIT [SWS_NvM_00637].

Esta nota de uso se creó de manera automatizada a partir de la especificación AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I1)

función NvM_ValidateAll [SWS_NvM_00855] 📄 PDF

void NvM_ValidateAll (void);

Initiates a multi block validation request.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 234ca1eec615 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función NvM_ValidateAll inicia la validación asíncrona de varios bloques de NVRAM ([SWS_NvM_00855]) y pertenece a la clase de configuración de la API 3 ([SWS_NvM_00560]). No es reentrante, no espera ningún parámetro y no proporciona ningún valor de retorno ([SWS_NvM_00855]). Antes de la llamada, el módulo NvM debe estar inicializado ([SWS_NvM_00859]).

Al ser llamada, la función señaliza la solicitud al módulo y retorna de inmediato ([SWS_NvM_00858]). Sin embargo, el procesamiento efectivo se pospone hasta que todas las colas de órdenes de bloques individuales se hayan procesado por completo ([SWS_NvM_00858]). Para órdenes multibloque solo hay disponible un único espacio en total en la cola de órdenes ([SWS_NvM_00380]). El resultado global de la orden asíncrona se gestiona en una variable de estado separada ([SWS_NvM_00393]).

En el marco del procesamiento de órdenes, se establecen previamente en NVM_REQ_PENDING tanto el resultado multibloque como los resultados de los bloques individuales afectados ([SWS_NvM_00861]). El procesamiento solo tiene en cuenta aquellos bloques para los cuales NvMBlockUseAutoValidation está configurado en TRUE ([SWS_NvM_00856], [SWS_NvM_00860]):

  • Se procesan bloques de RAM permanentes o se ejecuta la sincronización explícita a través del callback NvM_WriteRamBlockToNvm ([SWS_NvM_00860]).
  • El estado del bloque de RAM se establece en «VALID / CHANGED» ([SWS_NvM_00856]).
  • Si adicionalmente se ha configurado un cálculo de CRC en RAM, la orden solicita el recálculo en segundo plano, el cual se procesa a través de NvM_MainFunction ([SWS_NvM_00857]).
  • Tras una validación correcta del bloque de RAM, el resultado específico del bloque cambia a NVM_REQ_OK ([SWS_NvM_00862]).

Esta nota de uso se generó de forma automatizada sobre la base de la especificación AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I1)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 97732570bd55 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función NvM_FirstInitAll inicia la inicialización inicial asíncrona de varios bloques configurados ([SWS_NvM_91001]). El servicio no es reentrante, no espera parámetros y no proporciona ningún valor de retorno ([SWS_NvM_91001]). Durante el procesamiento no se tiene en cuenta si un bloque ya existe en la memoria no volátil o si es válido o está corrupto ([SWS_NvM_91001]). La longitud de la cola para órdenes multibloque (procedentes, entre otros, de NvM_FirstInitAll) es de uno, de modo que solo se puede encolar una única orden multibloque al mismo tiempo ([SWS_NvM_00380]).

El procesamiento varía según el tipo de gestión del bloque:

  • NATIVE: Si se dispone de datos por defecto, el bloque NV se escribe con ellos ([SWS_NvM_00913]). Si el bloque cuenta con RAM permanente o sincronización explícita, la RAM se actualiza como en NvM_RestoreBlockDefaults con los datos por defecto (ROM o callback de inicialización) ([SWS_NvM_00915]); sin RAM permanente y sin sincronización explícita, el búfer interno de NvM actúa como RAM, permaneciendo inalterado el estado de la RAM ([SWS_NvM_00914]). Si faltan datos por defecto ([SWS_NvM_00919]) o si un callback de inicialización configurado falla con un valor de retorno distinto de E_OK ([SWS_NvM_00921]), el bloque se invalida.
  • REDUNDANT: Si existen datos por defecto, se escriben ambas instancias del bloque con ellos ([SWS_NvM_00916]) y, existiendo RAM permanente o sincronización explícita, se actualiza la RAM ([SWS_NvM_00918]); de lo contrario, se utiliza el búfer interno ([SWS_NvM_00917]). Si un callback de inicialización no devuelve E_OK, se invalidan ambas instancias ([SWS_NvM_00922]).
  • DATASET: Todos los bloques o instancias de bloques NV de este tipo configurados para el procesamiento se invalidan sin excepción ([SWS_NvM_00923], [SWS_NvM_00924]).

Si falla la escritura de un bloque NATIVE con datos por defecto ([SWS_NvM_00925]), la invalidación de un bloque NATIVE ([SWS_NvM_00927]) o la escritura de ambas instancias de un bloque REDUNDANT ([SWS_NvM_00926]), la orden establece el resultado global en NVM_REQ_NOT_OK.

Este texto ha sido generado por una IA sobre la base de la especificación R20-11.

Guía del implementador pendiente (complejidad I1)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 44e91f5e39db Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

La abstracción de memoria subyacente llama a la función de callback síncrona NvM_JobEndNotification para señalizar al gestor de NVRAM la finalización sin errores de una orden [SWS_NvM_00462]. La función no tiene parámetros ni valor de retorno y está disponible a través del archivo de cabecera NvM_MemIf.h con el ID de servicio 0x11 [SWS_NvM_00462]. Una notificación correcta de la abstracción de memoria incluye operaciones de lectura, escritura o borrado finalizadas sin errores [SWS_NvM_00111].

Concurrencia y restricciones

La interfaz está especificada como no reentrante [SWS_NvM_00462]. Dependiendo de la función invocadora dentro de la abstracción de memoria, esta rutina puede ejecutarse en contexto de interrupción [SWS_NvM_00111]. Todos los módulos de la abstracción de memoria deberían configurarse para utilizar uniformemente el mismo modo: callback o polling [SWS_NvM_00111].

Configuración e interacción

El módulo NvM solo proporciona la función de callback NvM_JobEndNotification si el modo de polling está desactivado a través del parámetro de configuración NvMPollingMode [SWS_NvM_00440]. Además, la función se ve afectada por parámetros generales de configuración de NvM [SWS_NvM_00440].

Esta nota de uso se basa en la especificación AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I1)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: aca80117b4e4 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función de callback NvM_JobErrorNotification ([SWS_NvM_00463]) sirve para que la capa de abstracción de memoria subyacente señalice al módulo gestor de NVRAM (NvM) la finalización errónea de una orden asíncrona. La llamada se realiza de forma síncrona y está especificada como no reentrante ([SWS_NvM_00463]).

Uso y signatura

  • Interfaz: La declaración de la función se proporciona a través del archivo de cabecera NvM_MemIf.h ([SWS_NvM_00463]).
  • Firma: Según void NvM_JobErrorNotification(void), la función no posee parámetros de entrada, salida ni de entrada/salida, y no devuelve ningún valor de retorno ([SWS_NvM_00463]).
  • ID de servicio: La función se identifica mediante el identificador hexadecimal 0x12 ([SWS_NvM_00463]).

Dependencia de configuración e interacción

El módulo NvM solo proporciona la función de callback NvM_JobErrorNotification si el modo de polling está desactivado mediante el parámetro de configuración NvMPollingMode ([SWS_NvM_00441]). Si se utiliza polling, se omite este mecanismo de notificación. Además, la función se ve afectada por los parámetros generales de configuración según [SWS_NvM_00028] texto aún no importado ([SWS_NvM_00441]).

Tratamiento de errores y concurrencia

La función sirve exclusivamente para la notificación de errores de órdenes y no define códigos de error propios ni respuestas DET o DEM ([SWS_NvM_00463]). Debido a la clasificación como Non Reentrant, presumiblemente corresponde al invocador en la abstracción de memoria garantizar que no se produzcan llamadas solapadas o que causen interrupciones ([SWS_NvM_00463]). Pregunta Q-5f72d9d605c25922 (abierta)

Esta nota de uso ha sido generada de forma automatizada sobre la base de la especificación AUTOSAR Classic R20-11.

Guía del implementador pendiente (complejidad I1)

función NvM_MainFunction [SWS_NvM_00464] 📄 PDF

void NvM_MainFunction (void);

Service for performing the processing of the Nv M jobs.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: e37fc51f7baf Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

La función NvM_MainFunction no tiene parámetros de transferencia ni valor de retorno (void NvM_MainFunction(void)) y está declarada a través de SchM_NvM.h ([SWS_NvM_00464]). Sirve para el procesamiento de las órdenes del gestor de NVRAM ([SWS_NvM_00464], [SWS_NvM_00256]). Tras la finalización de un servicio asíncrono, ejecuta rutinas de callback configuradas para notificar a la capa superior ([SWS_NvM_00347]). Además, asume en segundo plano los recálculos de CRC solicitados para bloques de NVRAM ([SWS_NvM_00333]), por ejemplo como consecuencia de NvM_SetRamBlockStatus ([SWS_NvM_00121]) o NvM_ValidateAll ([SWS_NvM_00857]).

Control de flujo y priorización

Siempre que esté configurada, la función monitoriza la cola de prioridad inmediata (immediate priority queue) en busca de solicitudes con prioridad inmediata ([SWS_NvM_00259]). Si una orden inmediata interrumpió de forma destructiva una solicitud regular, NvM_MainFunction la reinicia tras la finalización de aquella ([SWS_NvM_00258]). Con el modo de polling activo, comprueba el estado de las órdenes transferidas a la capa inferior ([SWS_NvM_00346]). Durante el procesamiento de NvM_WriteAll, sondea cíclicamente el estado de la abstracción de controladores de memoria a través de MemIf_GetStatus para MEMIF_BROADCAST_ID y retiene los callbacks hacia la capa superior mientras se notifique MEMIF_BUSY_INTERNAL ([SWS_NvM_00350]).

Tratamiento de errores y reintentos

Si fallan los callbacks específicos de la aplicación, NvM_MainFunction controla los intentos de reintento:

  • Si NvMReadRamBlockFromNvCallback devuelve el valor E_NOT_OK, el módulo repite la llamada en el siguiente ciclo de NvM_MainFunction ([SWS_NvM_00839]).
  • Si NvMWriteRamBlockToNvCallback devuelve E_NOT_OK, la repetición tiene lugar asimismo en la siguiente llamada de NvM_MainFunction ([SWS_NvM_00840]).
  • Si el callback de sincronización explícita devuelve E_NOT_OK en NvM_SetRamBlockStatus, el módulo ejecuta los reintentos configurados con un intento por cada llamada de NvM_MainFunction ([SWS_NvM_00908]).

Este texto fue generado por una IA a partir de la especificación AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I2)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: f9058239e263 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

La rutina de callback NvM_SingleBlockCallbackFunction notifica a la capa superior de forma síncrona la finalización de una solicitud asíncrona de bloque individual iniciada previamente [SWS_NvM_00467].

La función procesa dos parámetros de transferencia [SWS_NvM_00467]:

  • BlockRequest (tipo NvM_BlockRequestType): Transfiere el tipo de solicitud de bloque ejecutada previamente, como por ejemplo operaciones de lectura o escritura [SWS_NvM_00467].
  • JobResult (tipo NvM_RequestResultType): Notifica el resultado global de la orden de bloque procesada [SWS_NvM_00467].

Como valor de retorno, la función proporciona el tipo Std_ReturnType [SWS_NvM_00467]. Un procesamiento correcto del callback se señaliza mediante el retorno de E_OK; cualquier otro valor de retorno indica una ejecución no satisfactoria [SWS_NvM_00467].

Tratamiento de errores y concurrencia

La interfaz no especifica mensajes de error DET o DEM propios [SWS_NvM_00467]. El resultado de la orden precedente se transmite a través del parámetro JobResult, mientras que los errores dentro del propio procesamiento del callback se notifican a través del valor de retorno de la función [SWS_NvM_00467].

En cuanto a la concurrencia, la rutina está declarada como no reentrante (Non Reentrant) [SWS_NvM_00467]. Se proporciona a través de la cabecera NvM_Externals.h [SWS_NvM_00467]. Es de esperar que la llamada por parte del módulo NvM se realice de forma síncrona en el contexto de tarea del procesamiento cíclico de órdenes de NvM (interpretación). Pregunta Q-f50640211851274f (abierta)

Esta nota de uso fue generada por una IA sobre la base de la especificación AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I1)

función 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

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: a3c38e2b6191 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La rutina de callback NvM_MultiBlockCallbackFunction notifica a la capa superior que se ha completado una orden multibloque asíncrona iniciada previamente [SWS_NvM_00468]. La declaración de la función se pone a disposición a través del archivo de cabecera NvM_Externals.h [SWS_NvM_00468].

Contexto de llamada y parámetros

La llamada por parte del gestor de NVRAM se realiza de forma síncrona respecto a la ejecución en el flujo de procesamiento [SWS_NvM_00468]. En la llamada, se transfieren dos parámetros a la rutina:

  • MultiBlockRequest (tipo NvM_MultiBlockRequestType): Designa el tipo de solicitud concreto de la orden multibloque procesada previamente, como por ejemplo accesos de lectura o escritura [SWS_NvM_00468].
  • JobResult (tipo NvM_RequestResultType): Transmite el resultado final del procesamiento del trabajo multibloque precedente a la capa superior [SWS_NvM_00468].

Valor de retorno y tratamiento de errores

La rutina devuelve un valor del tipo Std_ReturnType al módulo invocador [SWS_NvM_00468]. El valor de retorno E_OK indica que la función de callback pudo procesarse con éxito; cualquier otro valor de retorno señaliza, por el contrario, un procesamiento fallido [SWS_NvM_00468]. En el alcance de la especificación no se definen códigos de error específicos, mensajes DET ni DEM para esta función. Interpretación: Es probable que las consecuencias concretas de un valor de retorno distinto de E_OK sean específicas de la implementación, ya que el estándar no prescribe un tratamiento de errores posterior. Pregunta Q-462dea7f3074ae9c (abierta)

Concurrencia y restricciones

La función está especificada como no reentrante (Non Reentrant) [SWS_NvM_00468]. Por tanto, dentro del sistema invocador debe asegurarse de que no se produzcan llamadas múltiples concurrentes o que causen interrupciones a esta interfaz de callback.

Este texto fue generado por una IA a partir de la especificación.

Guía del implementador pendiente (complejidad I1)

función 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

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 6fa779cf7b62 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Uso y contexto de llamada

El módulo NvM llama a la rutina de callback específica del usuario NvM_InitBlockCallbackFunction cuando deben restaurarse datos por defecto para un bloque de NVRAM en la RAM y no hay configurado un bloque ROM correspondiente [SWS_NvM_00469]. La llamada se realiza de forma síncrona y la interfaz está declarada a través de la cabecera NvM_Externals.h [SWS_NvM_00469].

Como parámetro de transferencia, la función recibe InitBlockRequest de tipo NvM_InitBlockRequestType [SWS_NvM_00469]. Este valor informa a la rutina sobre el tipo de solicitud específico del bloque que se está procesando actualmente, como la lectura o la restauración de datos (read, restore) [SWS_NvM_00469].

Valores de retorno y tratamiento de errores

La rutina devuelve un valor de estado de tipo Std_ReturnType [SWS_NvM_00469]:

  • E_OK: Señaliza al módulo NvM que la función de callback ha inicializado y procesado con éxito los datos en la RAM [SWS_NvM_00469].
  • Cualquier otro valor de retorno: Indica que la inicialización no pudo completarse con éxito [SWS_NvM_00469].

Para la propia interfaz no se especifican códigos de error específicos para DET o DEM [SWS_NvM_00469].

Concurrencia y restricciones de ejecución

La interfaz está definida como síncrona y no reentrante (Non Reentrant) [SWS_NvM_00469]. Dado que el NVRAM Manager espera de forma síncrona el retorno de la función, es de esperar que una ejecución bloqueante dentro de la rutina detenga inmediatamente el procesamiento posterior del NvM (interpretación). Pregunta Q-c0e43c9871c4f2d0 (abierta)

Esta nota de uso ha sido generada por una IA a partir de la especificación AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I1)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 5243b53cfd03 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función de callback específica de bloque NvM_WriteRamBlockToNvm sirve para la sincronización explícita con el fin de copiar datos de aplicación desde el bloque RAM al espejo RAM interno del módulo NvM [SWS_NvM_00539]. Está disponible declarativamente a través de NvM_Externals.h y es llamada de forma síncrona por el NvM [SWS_NvM_00539].

Uso y parámetros

La función transfiere como parámetro de salida el puntero NvMBuffer, el cual representa la dirección de destino del espejo de NvM en la que deben escribirse los datos [SWS_NvM_00539]. Como valor de retorno, la rutina de callback proporciona E_OK en caso de procesamiento satisfactorio o cualquier otro valor si la ejecución es errónea [SWS_NvM_00539].

Concurrencia y restricciones

Según la especificación, NvM_WriteRamBlockToNvm está diseñada como no reentrante (Non Reentrant) [SWS_NvM_00539].

Interacción en el módulo

  • Durante el apagado, el trabajo NvM_WriteAll sincroniza bloques RAM permanentes o llama a la rutina de callback NvM_WriteRamBlockToNvm para la sincronización explícita [SWS_NvM_00018], siempre que el parámetro NvMSelectBlockForWriteAll para el bloque de NVRAM esté configurado en true [SWS_NvM_00252].
  • Los trabajos de escritura NvM_WriteBlock [SWS_NvM_00303] y NvM_WritePRAMBlock [SWS_NvM_00803] validan automáticamente un bloque RAM permanente aún no válido tras la llamada de NvM_WriteRamBlockToNvm.

Este texto fue generado por una IA a partir de la especificación AUTOSAR R20-11.

Guía del implementador pendiente (complejidad I1)

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 1b2c937c4017 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

La función NvM_ReadRamBlockFromNvm es una rutina de callback específica de bloque que se declara a través de NvM_Externals.h [SWS_NvM_00540]. Su propósito consiste en permitir a la aplicación la copia de datos desde el búfer espejo interno del módulo NvM a su bloque RAM correspondiente para llevar a cabo una sincronización explícita [SWS_NvM_00540], [SWS_NvM_00118].

Uso y semántica

  • Contexto de llamada y concurrencia: La llamada se realiza de forma síncrona y está especificada como no reentrante (Non Reentrant) [SWS_NvM_00540].
  • Parámetros: Como parámetro de transferencia se utiliza el puntero NvMBuffer (tipo const void*). Este transfiere la dirección del búfer desde la cual pueden leerse los datos y copiarse en el bloque RAM [SWS_NvM_00540].
  • Valor de retorno y tratamiento de errores: La función de callback devuelve un Std_ReturnType. El valor de retorno E_OK señaliza el procesamiento correcto; cualquier otro valor de retorno indica un procesamiento no satisfactorio [SWS_NvM_00540].

Interacción

En el marco del servicio multibloque NvM_ReadAll, se llama a NvM_ReadRamBlockFromNvm para la sincronización explícita de aquellos bloques de NVRAM que estén configurados correspondientemente y para los cuales aplique NvmSelectBlockForReadall == TRUE [SWS_NvM_00118], [SWS_NvM_00356]. Esto representa la alternativa al proceso de copia directa en bloques RAM permanentes, mientras que NvM_ReadAll inicializa los datos de gestión de los bloques [SWS_NvM_00356].

Este texto fue generado por un sistema de IA sobre la base de los requisitos de la especificación.

Guía del implementador pendiente (complejidad I1)

tipo 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

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: e84ff8330bcb Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

El tipo de enumeración NvM_MultiBlockRequestType se proporciona a través del archivo de cabecera NvM.h y sirve para la identificación inequívoca de una solicitud multibloque ejecutada [SWS_NvM_91003]. El tipo se utiliza cuando el resultado o el estado de una operación multibloque se señaliza a través de una función de callback o se notifica al módulo BswM [SWS_NvM_91003].

Rango de valores y semántica

La enumeración define los siguientes valores para diferenciar las órdenes multibloque [SWS_NvM_91003]:

  • NVM_READ_ALL (0x00): Indica que se ejecutó NvM_ReadAll.
  • NVM_WRITE_ALL (0x01): Indica que se ejecutó NvM_WriteAll.
  • NVM_VALIDATE_ALL (0x02): Indica que se ejecutó NvM_ValidateAll.
  • NVM_FIRST_INIT_ALL (0x03): Indica que se ejecutó NvM_FirstInitAll.
  • NVM_CANCEL_WRITE_ALL (0x04): Indica que se ejecutó NvM_CancelWriteAll.

Interacción

Al pasarse este tipo, tanto los callbacks invocados como el BswM pueden determinar qué servicio multibloque concreto desencadenó la notificación. Interpretación: Es de presumir que la notificación al BswM sirve para vincular acciones sucesivas o transiciones de estado en el sistema global con la conclusión de servicios multibloque específicos. Pregunta Q-69b4d985301acfeb (abierta)

Este texto ha sido generado por una IA y sirve de ayuda orientativa. Prevalecen las especificaciones referenciadas.

Guía del implementador pendiente (complejidad I1)

tipo NvM_RequestResultType [SWS_NvM_00470] 📄 PDF

Type NvM_RequestResultType.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 49d0056a8c31 Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

El tipo NvM_RequestResultType se basa en uint8, está disponible a través de Rte_NvM_Type.h y representa el resultado de peticiones asíncronas de órdenes de lectura, escritura y control del gestor de NVRAM [SWS_NvM_00470]. El resultado se consulta principalmente a través del servicio de API NvM_GetErrorStatus y puede señalarse adicionalmente mediante una función de retrollamada configurada [SWS_NvM_00470].

El rango de valores representa diferentes estados de ejecución y casos de error [SWS_NvM_00470]:

  • NVM_REQ_OK (0x00): La última orden asíncrona finalizó correctamente; este es al mismo tiempo el valor predeterminado tras un reinicio.
  • NVM_REQ_NOT_OK (0x01): La petición asíncrona de lectura, escritura o control no finalizó correctamente.
  • NVM_REQ_PENDING (0x02): Una petición asíncrona se encuentra actualmente aún en procesamiento.
  • NVM_REQ_INTEGRITY_FAILED (0x03): Error de integridad de datos en NvM_ReadBlock o NvM_ReadAll. En el caso de NvM_ReadBlock, el contenido del bloque de RAM se modificó, pero ha pasado a ser no válido; la aplicación es responsable de renovar y validar el contenido.
  • NVM_REQ_BLOCK_SKIPPED (0x04): El bloque referenciado se omitió durante NvM_ReadAll o NvM_WriteAll (p. ej. bloques NVRAM de tipo Dataset en NvM_ReadAll o bloques sin bloque de RAM configurado como permanente).
  • NVM_REQ_NV_INVALIDATED (0x05): El bloque NV referenciado está invalidado.
  • NVM_REQ_CANCELED (0x06): Cancelación de NvM_WriteAll por NvM_CancelWriteAll o cancelación de una orden de bloque individual (NvM_ReadBlock, NvM_WriteBlock, NvM_EraseNvBlock, NvM_InvalidateNvBlock, NvM_RestoreBlockDefaults) por NvM_CancelJobs.
  • NVM_REQ_RESTORED_DEFAULTS (0x08): Los valores por defecto se copiaron correctamente en la imagen de RAM.

En combinación con bloques redundantes (NVM_BLOCK_REDUNDANT), la función NvM_InvalidateNvBlock solo establece el resultado de la petición NvM_RequestResultType en NVM_REQ_OK cuando ambos bloques NV han sido invalidados [SWS_NvM_00274].

Este texto fue generado automáticamente. Todas las indicaciones se basan exclusivamente en los requisitos de especificación de la versión R20-11 de AUTOSAR.

Guía del implementador pendiente (complejidad I1)

tipo 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

tipo NvM_InitBlockRequestType [SWS_NvM_91123] 📄 PDF

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

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: f4f68ded6ba5 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

El tipo de datos NvM_InitBlockRequestType se basa en uint8 y se proporciona a través del archivo de cabecera Rte_NvM_Type.h [SWS_NvM_91123]. Sirve para identificar el tipo de solicitud realizada en un bloque de NVRAM cuando esta se señaliza mediante la correspondiente función de callback [SWS_NvM_91123].

El rango de valores admisibles comprende cuatro tipos de solicitud [SWS_NvM_91123]:

  • NVM_INIT_READ_BLOCK (0x00): Indica que se solicitó NvM_ReadBlock o NvM_ReadPRAMBlock para el bloque [SWS_NvM_91123].
  • NVM_INIT_RESTORE_BLOCK_DEFAULTS (0x01): Señaliza que se solicitó NvM_RestoreBlockDefaults o NvM_RestorePRAMBlockDefaults para el bloque [SWS_NvM_91123].
  • NVM_INIT_READ_ALL_BLOCK (0x02): Indica que el procesamiento del bloque se efectúa en el marco de NvM_ReadAll [SWS_NvM_91123].
  • NVM_INIT_FIRST_INIT_ALL (0x03): Identifica el procesamiento del bloque durante el transcurso de NvM_FirstInitAll [SWS_NvM_91123].

A partir de este valor de enumeración, la lógica de aplicación invocada puede distinguir si se trata de una solicitud explícita de bloque individual (lectura o restauración de valores por defecto) o de una operación colectiva global durante el arranque del sistema [SWS_NvM_91123]. Interpretación: Es presumible que el tipo se pase como parámetro a callbacks de inicialización referidos a bloques, a fin de que la aplicación pueda suministrar datos por defecto adaptados a la situación o tomar preparativos específicos. Pregunta Q-42d0d469e305728e (abierta)

Esta nota de uso se basa en la especificación AUTOSAR Classic Release R20-11.

Guía del implementador pendiente (complejidad I1)

tipo NvM_BlockRequestType [SWS_NvM_91002] 📄 PDF

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

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 68d31eddd2e0 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

El tipo de enumeración NvM_BlockRequestType se basa en uint8 y se proporciona a través de la cabecera Rte_NvM_Type.h [SWS_NvM_91002]. Sirve para transmitir, al emitir una notificación mediante una función de callback, el tipo de solicitud que se ejecutó previamente en un bloque de NVRAM [SWS_NvM_91002].

El rango de valores comprende seis solicitudes de bloque específicas [SWS_NvM_91002]:

  • NVM_READ_BLOCK (0x00): Señaliza que se ejecutó NvM_ReadBlock o NvM_ReadPRAMBlock para el bloque [SWS_NvM_91002].
  • NVM_WRITE_BLOCK (0x01): Señaliza que se ejecutó NvM_WriteBlock o NvM_WritePRAMBlock para el bloque [SWS_NvM_91002].
  • NVM_RESTORE_BLOCK_DEFAULTS (0x02): Señaliza que se ejecutó NvM_RestoreBlockDefaults o NvM_RestorePRAMBlockDefaults [SWS_NvM_91002].
  • NVM_ERASE_NV_BLOCK (0x03): Señaliza que se ejecutó NvM_EraseNvBlock en el bloque [SWS_NvM_91002].
  • NVM_INVALIDATE_NV_BLOCK (0x04): Señaliza que se ejecutó NvM_InvalidateNvBlock en el bloque [SWS_NvM_91002].
  • NVM_READ_ALL_BLOCK (0x05): Señaliza que NvM_ReadAll ha finalizado el procesamiento de este bloque [SWS_NvM_91002].

En la arquitectura de la aplicación, es de prever que el valor se evalúe como parámetro en rutinas de callback para informar de forma diferenciada a los componentes de software de nivel superior acerca de la finalización de determinadas operaciones de bloque [SWS_NvM_91002]. Pregunta Q-467801b6b5e898a2 (abierta) A falta de especificaciones adicionales en la carga útil sobre códigos de error o concurrencia, los detalles de la especificación se limitan a la definición del tipo y al rango de valores [SWS_NvM_91002].

Este texto ha sido elaborado por una IA; no se puede garantizar su exactitud.

Guía del implementador pendiente (complejidad 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#430d0292
Content hash
430d0292
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_NVRAMManager.pdf#nameddest=SWS_NvM_00447

Inicialización y estado

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

void NvM_GetVersionInfo (Std_VersionInfoType* versioninfo);
NvM_Init función

Service for resetting all internal variables.

void NvM_Init (const NvM_ConfigType* ConfigPtr);

Servicios · Read…

NvM_ReadAll función

Initiates a multi block read request.

void NvM_ReadAll (void);
NvM_ReadBlock función

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);

Servicios · 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);

Servicios · Write…

NvM_WriteAll función

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);

Servicios · 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);

Servicios · 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);

Servicios · 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);

Servicios · 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);

Servicios · Otros

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);

Cíclico

Service for performing the processing of the Nv M jobs.

void NvM_MainFunction (void);

Tipos

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.