DEENESPTFRRUARHIKOZHNL

NVRAM Manager (NvM)

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

Guia do móduloGERADO POR IA

Gerencia blocos de dados não voláteis e sincroniza-os assincronamente entre a RAM e a memória NV.
GERADO POR IA não revisado Modelo: claude-opus-5-5 · Esforço: high · Temperatura: não controlável · Prompt: 1d912b11517a Procedência Perguntas em aberto (1)
Âncora causal: R20-11 Válido a partir de R20-11 Sintetizado para esta versão de especificação.
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Gerencia blocos de dados não voláteis e sincroniza-os assincronamente entre a RAM e a memória NV.

O NVRAM Manager (NvM) é o único acesso à memória não volátil. Ele copia blocos de NVRAM implicitamente entre a RAM e a memória NV [SWS_NvM_00038]. Na inicialização, o NvM_ReadAll disparado pelo BswM preenche os blocos de RAM; no shutdown, o NvM_WriteAll salva os blocos modificados. Requisições individuais como NvM_WriteBlock são enfileiradas de forma assíncrona, processadas por prioridade e confirmadas via status ou callback [SWS_NvM_00185]. O NvM intercepta erros de leitura por meio de repetições, cópias redundantes e dados padrão; ainda assim, os usuários devem verificar o status do bloco por conta própria.

O NVRAM Manager (NvM) é o único acesso à memória não volátil [SWS_NvM_00384]. Ele copia blocos implicitamente entre a NVRAM e a RAM; a aplicação trabalha diretamente com os dados da RAM [SWS_NvM_00038]. Para os níveis inferiores, ele utiliza a Memory Abstraction Interface com Fee ou Ea [SWS_NvM_00051]. Ele reporta estados ao BswM, e erros ao DEM e ao DET [SWS_NvM_00745] [SWS_NvM_00592].

kontext nutzer Usuário do NvM (SW-C via RTE, módulos BSW) nvm NvM (NVRAM Manager) nutzer->nvm Solicitações individuais NvM_ReadBlock, NvM_WriteBlock, … bswm BswM bswm->nvm NvM_Init, NvM_ReadAll, NvM_WriteAll, NvM_CancelWriteAll nvm->nutzer Callbacks de SingleBlock, InitBlock e Mirror nvm->bswm BswM_NvM_CurrentJobMode, BswM_NvM_CurrentBlockMode memif MemIf nvm->memif Solicitações de leitura/escrita, MemIf_GetJobResult dem Dem nvm->dem Produktionsfehler det Det nvm->det Entwicklungsfehler crc Crc nvm->crc CRC-Berechnung fee Fee / Ea memif->fee Encaminhamento fee->nvm NvM_JobEndNotification, NvM_JobErrorNotification

Diagrama de contexto: integração do NvM entre usuários, BswM, MemIf/Fee/Ea, bem como DEM e DET. Fontes: [SWS_NvM_00384] [SWS_NvM_00465] [SWS_NvM_00746]

Cada bloco de NVRAM consiste em NV block, RAM block e Administrative Block, opcionalmente complementado por um ROM block com dados padrão [SWS_NvM_00138]. Existem os tipos Native, Redundant e Dataset; eles diferem no número de blocos NV e ROM [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559]. O NvM sincroniza o bloco de RAM diretamente de forma implícita ou explicitamente por meio de um RAM mirror com callbacks [SWS_NvM_00511].

O ciclo de vida ocorre em três etapas:

Requisições individuais como NvM_WriteBlock são enfileiradas e depois ficam em NVM_REQ_PENDING [SWS_NvM_00185]. Opcionalmente, o NvM utiliza uma fila própria para requisições imediatas [SWS_NvM_00378]. O resultado é fornecido por NvM_GetErrorStatus ou por um callback configurado [SWS_NvM_00015] [SWS_NvM_00740].

Solicitação assíncrona de bloco único com retorno de statusNvM-AnwenderNvMBswMBSW-TaskMemIfNvM_WriteBlock(BlockId, NvM_SrcPtr)einreihen, Blockergebnis:NVM_REQ_PENDINGoptNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, NVM_REQ_PENDING)E_OKloopaté que o trabalho de escrita seja concluídoNvM_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 sequência: uma requisição assíncrona de escrita é enfileirada, processada em NvM_MainFunction e confirmada via callback, mensagem do BswM e consulta de status. Fontes: [SWS_NvM_00185] [SWS_NvM_00347] [SWS_NvM_00891], SWS NvM p. 160

O NvM intercepta erros de leitura em três níveis:

Interpretação: a ordem dos níveis provavelmente segue a enumeração na Error Description. Pergunta Q-027e7f981e4d0a43 (aberta) O NvM repete erros de escrita até NVM_MAX_NUM_OF_WRITE_RETRIES e depois reporta NVM_E_REQ_FAILED ao DEM [SWS_NvM_00684]. Os usuários verificam o status de seus blocos por conta própria [SWS_NvM_00694].

Papel na pilha de memória: único acesso à memória não volátil

O NVRAM Manager (NvM) centraliza o acesso a dados não voláteis. O ambiente acessa a memória não volátil exclusivamente por meio do NvM, que fornece uma interface de callback para essa finalidade [SWS_NvM_00384]. O acesso é implícito: o NvM copia blocos entre a NVRAM e a RAM compartilhada. A aplicação trabalha diretamente com os dados da RAM, respeitando as regras de sincronização [SWS_NvM_00038] [SWS_NvM_00692]. Um bloco é selecionado por meio de seu ID de bloco configurado [SWS_NvM_00069] [SWS_NvM_00471]. As camadas superiores incluem apenas NvM.h para isso [SWS_NvM_00691]. O diagrama de atualização implícita mostra a divisão de tarefas: outras partes do software básico disparam o salvamento e a restauração de todos os blocos em função do estado da ECU. A SW-C acessa apenas o conteúdo de seus blocos de RAM (SWS NvM p. 121).

Para os níveis inferiores, o NvM opera contra a Memory Abstraction Interface. Juntamente com Fee ou Ea, ela fornece um espaço de endereçamento linear virtual de 32 bits [SWS_NvM_00051] [SWS_NvM_00465]. O NvM calcula somas de verificação por meio do módulo Crc [SWS_NvM_00466]. Ele é informado sobre o término de um job da camada inferior por duas vias:

Erros de produção vão para o DEM [SWS_NvM_00592], erros de desenvolvimento para o DET [SWS_NvM_00614]. O NvM reporta estados de requisições ao BswM [SWS_NvM_00745] [SWS_NvM_00746].

kontext nutzer Usuário do NvM (SW-C via RTE, módulos BSW) nvm NvM (NVRAM Manager) nutzer->nvm Solicitações individuais NvM_ReadBlock, NvM_WriteBlock, … bswm BswM bswm->nvm NvM_Init, NvM_ReadAll, NvM_WriteAll, NvM_CancelWriteAll nvm->nutzer Callbacks de SingleBlock, InitBlock e Mirror nvm->bswm BswM_NvM_CurrentJobMode, BswM_NvM_CurrentBlockMode memif MemIf nvm->memif Solicitações de leitura/escrita, MemIf_GetJobResult dem Dem nvm->dem Produktionsfehler det Det nvm->det Entwicklungsfehler crc Crc nvm->crc CRC-Berechnung fee Fee / Ea memif->fee Encaminhamento fee->nvm NvM_JobEndNotification, NvM_JobErrorNotification

Diagrama de contexto: o NvM faz a mediação entre usuários e BswM, de um lado, e MemIf/Fee/Ea, de outro. Ele reporta erros ao DEM e ao DET. Fontes: [SWS_NvM_00384] [SWS_NvM_00745] [SWS_NvM_00746] [SWS_NvM_00465] [SWS_NvM_00466], Error Description p. 43

Estrutura de um bloco de NVRAM e os três tipos de gerenciamento

Um bloco de NVRAM consiste nos componentes obrigatórios NV block, RAM block e Administrative Block. Um ROM block com dados padrão é opcional [SWS_NvM_00138] [SWS_NvM_00139] [SWS_NvM_00020]. A composição é definida pelo descritor de bloco no momento da configuração [SWS_NvM_00140]. Os componentes individuais:

O NvM suporta os tipos NVM_BLOCK_NATIVE, NVM_BLOCK_REDUNDANT e NVM_BLOCK_DATASET [SWS_NvM_00137]. Eles diferem no número de blocos NV e ROM [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559] (SWS NvM p. 10). Para blocos Dataset, aplica-se o seguinte:

blockaufbau nvram NVRAM-Block (BlockId, Verwaltungstyp) nv NV-Block Header (opt.), Daten, CRC (opt.) nvram->nv NATIVE: 1 REDUNDANT: 2 DATASET: 1..m ram Bloco de RAM permanente, temporário ou espelho de RAM nvram->ram genau 1 rom ROM-Block (optional) Defaultdaten nvram->rom NATIVE/REDUNDANT: 0..1 DATASET: 0..n adm Administrative Block Index, Attribute, Fehler-/Status nvram->adm genau 1

Diagrama de colaboração (estrutura do bloco): componentes obrigatórios e opcionais de um bloco de NVRAM com cardinalidades para cada tipo de gerenciamento. Fontes: [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 e NvM_WriteAll

O BswM chama NvM_Init exclusivamente [SWS_NvM_00693]. O NvM_Init reinicializa filas e máquinas de estados e sinaliza internamente “INIT DONE” [SWS_NvM_00399]. Ele não inicializa blocos de RAM nem módulos subordinados [SWS_NvM_00091] [SWS_NvM_00193]. O ponteiro de configuração é sempre NULL_PTR [SWS_NvM_00881]. Somente depois disso NvM_MainFunction processa requisições [SWS_NvM_00257].

Em seguida, o NvM_ReadAll preenche os blocos de RAM [SWS_NvM_00718]. A chamada apenas sinaliza a requisição. O processamento é adiado até que as requisições de bloco individuais sejam concluídas [SWS_NvM_00243]. Depois disso, o job é executado em três etapas:

  1. Primeiro, ele compara o ID de configuração armazenado com o compilado [SWS_NvM_00073]. Em caso de divergência, o comportamento depende de NvMDynamicConfiguration: com NvMDynamicConfiguration == FALSE, a divergência é ignorada [SWS_NvM_00248]. Caso contrário, blocos não resistentes a alterações recebem dados padrão [SWS_NvM_00249] [SWS_NvM_00674] (NV Data Handling p. 15).
  2. Em seguida, ele itera sobre os blocos de usuário, exceto os IDs de bloco 0 e 1 [SWS_NvM_00244]. Ao fazer isso, processa apenas blocos com bloco de RAM permanente ou sincronização explícita [SWS_NvM_00118].
  3. Por fim, define o resultado global como NVM_REQ_OK ou NVM_REQ_NOT_OK [SWS_NvM_00895] [SWS_NvM_00301].

No exemplo de gerenciamento de modos, a regra do BswM NvMReadAllFinished inicia o restante da inicialização somente após a conclusão de NvM_ReadAll (Mode Management Guide p. 31).

Inicialização: NvM_Init e NvM_ReadAllBSW-TaskBswMNvMMemIf / Fee / EaUse Case: InitialisierungNvM_Init(NULL_PTR)Reinicializar filas e estados,«INIT DONE» – blocos de RAM inalteradosNvM_Init()Use Case: Multiblock-Auftrag NvM_ReadAllNvM_ReadAll()NvM_ReadAll()optNvMBswMMultiBlockJobStatusInformation == TRUEBswM_NvM_CurrentJobMode(ReadAll, NVM_REQ_PENDING)NvM_MainFunction()primeiro passo: gravados ekompilierte Konfigurations-ID vergleichenlooppor bloco de usuário para NvM_ReadAll (sem ID de bloco 0 e 1)NvM_MainFunction()NV-Block lesenJob-Ergebnispreencher bloco de RAM ou espelho,Blockergebnis setzenoptNvMBswMMultiBlockJobStatusInformation == TRUEBswM_NvM_CurrentJobMode(ReadAll, Ergebnis)BswM_MainFunction()Regel NvMReadAllFinished:restliche BSW-Initialisierung

Diagrama de sequência: inicialização assíncrona com NvM_Init, NvM_ReadAll e feedback do estado multibloco para o BswM. Fontes: [SWS_NvM_00693] [SWS_NvM_00243] [SWS_NvM_00073] [SWS_NvM_00888] [SWS_NvM_00889], NV Data Handling p. 20

Para o shutdown, o BswM chama NvM_WriteAll [SWS_NvM_00092]. O job comporta-se da seguinte forma:

Os usuários marcam blocos alterados com NvM_SetRamBlockStatus(…, TRUE), desde que a API esteja ativada [SWS_NvM_00406] [SWS_NvM_00408]. Para blocos com dirty flag, a RTE assume essa chamada (NV Data Handling p. 41).

NvM_CancelWriteAll é reservado ao BswM [SWS_NvM_00703] e não tem efeito sem um NvM_WriteAll em execução [SWS_NvM_00233]. O bloco atual é finalizado de forma não destrutiva [SWS_NvM_00238]. Os blocos restantes e o resultado multibloco recebem NVM_REQ_CANCELED [SWS_NvM_00236] [SWS_NvM_00237] (SWS NvM p. 161).

Duas outras requisições multibloco complementam o ciclo de vida:

  • NvM_ValidateAll define blocos com validação automática como “VALID / CHANGED” [SWS_NvM_00856].
  • NvM_FirstInitAll grava dados padrão em blocos ou os invalida caso não haja dados disponíveis [SWS_NvM_00913] [SWS_NvM_00919].

Para todas as requisições multibloco, aplica-se um tamanho de fila de um [SWS_NvM_00380].

Shutdown: NvM_WriteAll e NvM_CancelWriteAllBSW-TaskBswMNvMNvM_WriteAll()NvM_WriteAll()looppor bloco com RAM permanente ou sincronização explícitaNvM_MainFunction()verificar «valid/modified»; ignorarblocos protegidos e bloqueados; gravaraltAbbruch angefordertNvM_CancelWriteAll()NvM_CancelWriteAll()NvM_MainFunction()concluir bloco atual de forma não destrutiva,blocos restantes: NVM_REQ_CANCELEDBswM_NvM_CurrentJobMode(WriteAll, NVM_REQ_CANCELED)conclusão regularBswM_NvM_CurrentJobMode(WriteAll, Ergebnis)Regel NvMWriteAllFinished:EcuM_GoDown

Diagrama de sequência: shutdown com NvM_WriteAll e cancelamento opcional por NvM_CancelWriteAll. Fontes: [SWS_NvM_00092] [SWS_NvM_00682] [SWS_NvM_00238] [SWS_NvM_00237] [SWS_NvM_00889], Mode Management Guide p. 37

Requisições individuais: filas, prioridades e feedback

Requisições de bloco individuais como NvM_ReadBlock, NvM_WriteBlock ou NvM_RestoreBlockDefaults são assíncronas. A função recebe os parâmetros, enfileira a requisição e retorna [SWS_NvM_00195] [SWS_NvM_00208] [SWS_NvM_00224]. Depois disso, o resultado do bloco fica em NVM_REQ_PENDING [SWS_NvM_00185]. Em caso de estouro de fila, a função retorna E_NOT_OK [SWS_NvM_00184]. Um bloco só é enfileirado se ainda não estiver pendente ou em processamento [SWS_NvM_00385].

Outros serviços operam de forma síncrona no contexto do chamador, como NvM_SetDataIndex [SWS_NvM_00448] e NvM_GetErrorStatus (SWS NvM p. 158). O NvM_CancelJobs remove requisições pendentes de um bloco; um job em andamento, no entanto, é continuado [SWS_NvM_00536] [SWS_NvM_00537].

O processamento ocorre de forma serializada por prioridade [SWS_NvM_00162]. Se NvMJobPrioritization estiver ativo, o NvM utiliza duas filas, sendo uma delas para requisições de escrita imediatas (dados de colisão) [SWS_NvM_00564] [SWS_NvM_00378]. Uma requisição NvM_WriteBlock desse tipo cancela um job pendente de forma destrutiva [SWS_NvM_00300]. O NvM_MainFunction reinicia o job cancelado em seguida [SWS_NvM_00258]. Sem priorização, o NvM processa na ordem de chegada, sem jobs imediatos [SWS_NvM_00379]. Requisições que chegam durante uma requisição multibloco são enfileiradas e executadas em seguida [SWS_NvM_00568] [SWS_NvM_00569].

Cada requisição assíncrona armazena seu resultado no campo de erro/status [SWS_NvM_00175]. NvM_GetErrorStatus lê esse campo [SWS_NvM_00015]. Além disso, existem duas vias opcionais de feedback:

Solicitação assíncrona de bloco único com retorno de statusNvM-AnwenderNvMBswMBSW-TaskMemIfNvM_WriteBlock(BlockId, NvM_SrcPtr)einreihen, Blockergebnis:NVM_REQ_PENDINGoptNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, NVM_REQ_PENDING)E_OKloopaté que o trabalho de escrita seja concluídoNvM_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 sequência: requisição assíncrona de escrita com mensagens de status do BswM, callback e consulta de status. Fontes: [SWS_NvM_00185] [SWS_NvM_00347] [SWS_NvM_00740] [SWS_NvM_00890] [SWS_NvM_00891], SWS NvM p. 160

Sincronização de blocos de RAM e estado do bloco

O NvM dispõe de duas formas de sincronizar dados com o bloco de RAM da aplicação. Na sincronização implícita, ele opera diretamente nesse bloco de RAM. A aplicação disponibiliza o bloco e não o acessa até o término da requisição [SWS_NvM_00698] [SWS_NvM_00699]. Se ela passar NULL_PTR, o NvM utiliza o bloco de RAM permanente [SWS_NvM_00898] [SWS_NvM_00900]. Um bloco temporário via ponteiro continua sendo possível [SWS_NvM_00278]. Os serviços PRAM operam sempre no bloco de RAM permanente [SWS_NvM_00765] [SWS_NvM_00794]. No cenário da RTE, esse bloco é uma Per-Instance-Memory (NV Data Handling p. 32).

Na sincronização explícita (NvMBlockUseSyncMechanism), a troca ocorre por meio de um RAM mirror interno [SWS_NvM_00511]. Existe exatamente um desse tipo, dimensionado de acordo com o maior bloco envolvido [SWS_NvM_00513]. O NvM chama NvMWriteRamBlockToNvCallback ou NvMReadRamBlockFromNvCallback [SWS_NvM_00515] [SWS_NvM_00516]. Se um callback retornar E_NOT_OK, ele repete a chamada no ciclo seguinte, até NvMRepeatMirrorOperations vezes [SWS_NvM_00579] [SWS_NvM_00840]. Até o callback, a aplicação ainda pode alterar o bloco de RAM [SWS_NvM_00705]. Um bloco utiliza ou sincronização explícita ou um bloco de RAM permanente, não ambos [SWS_NvM_00904]. O mecanismo permite blocos compartilhados por meio de uma NvBlockSwComponentType (NV Data Handling p. 12).

Escrita com sincronização explícitaAnwendung (SW-C/RTE)NvMBSW-TaskMemIfPreencher bloco de RAM com dadosNvM_WriteBlock(BlockId, NULL_PTR)E_OKO bloco de RAM ainda pode ser alteradoaté o 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 no próximo NvM_MainFunctionerneut aufrufen (max. NvMRepeatMirrorOperations)

Diagrama de sequência: requisição de escrita com sincronização explícita por meio do RAM mirror, incluindo repetição em E_NOT_OK. Fontes: [SWS_NvM_00515] [SWS_NvM_00705] [SWS_NvM_00579] [SWS_NvM_00840], NV Data Handling p. 27

Para blocos de RAM permanentes ou o mirror, o NvM mantém um estado “valid”/“invalid” [SWS_NvM_00128] [SWS_NvM_00132]. As transições em detalhe:

  • NvM_ReadBlock invalida o bloco de RAM permanente logo no enfileiramento [SWS_NvM_00198].
  • Após leitura bem-sucedida, ele fica “valid/unchanged” [SWS_NvM_00200].
  • Após o carregamento de dados padrão, ele fica “valid/changed” [SWS_NvM_00366].
  • NvM_SetRamBlockStatus(…, TRUE) o marca como modificado e dispara um recálculo de CRC em segundo plano [SWS_NvM_00406] [SWS_NvM_00121].
  • Após escrita bem-sucedida, ele é considerado “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) ou NvM_ValidateAll changed->invalid NvM_ReadBlock angenommen (permanenter RAM) changed->unchanged erfolgreich in NV geschrieben

Diagrama de estados: estados do bloco de RAM e os eventos disparadores. Fontes: [SWS_NvM_00198] [SWS_NvM_00200] [SWS_NvM_00366] [SWS_NvM_00406] [SWS_NvM_00472] [SWS_NvM_00856]

Configuração, mecanismos de proteção e relação com partições

Para recursos limitados, existem três classes de configuração de API [SWS_NvM_00149]. A classe 1 não suporta blocos Dataset [SWS_NvM_00365]. As tabelas de descritores são geradas [SWS_NvM_00143]. Os usuários declaram a necessidade de memória no momento da configuração [SWS_NvM_00030]. Os módulos BSW fazem isso por meio de NvBlockNeeds (BSWMD Template p. 241). O integrador de ECU deriva a configuração do NvM a partir disso (Methodology p. 444).

Para blocos individuais, estão disponíveis vários mecanismos de proteção:

  • Um campo de atributos gerencia a proteção contra escrita [SWS_NvM_00054]; NvMBlockWriteProt a ativa como configuração padrão [SWS_NvM_00326].
  • Blocos com NvMWriteBlockOnce são escritos apenas uma vez [SWS_NvM_00397]. O NvM rejeita requisições de escrita antes da primeira leitura [SWS_NvM_00952].
  • Para blocos travados (NvM_SetBlockLockStatus), NvM_WriteBlock retorna E_NOT_OK [SWS_NvM_00749]. O travamento não é alterado por NvM_SetRamBlockStatus nem por NvM_SetBlockProtection [SWS_NvM_00754].
  • Também são opcionais um cabeçalho Static-Block-ID [SWS_NvM_00522], uma comparação de CRC contra escritas desnecessárias [SWS_NvM_00849] e criptografia por meio do CSM [SWS_NvM_00976].

Em caso de particionamento, o NvM chama interfaces no contexto da partição respectivamente associada. Funções gerais são executadas na partição mestre [SWS_NvM_00969]. Apenas o mestre oferece NvM_ReadAll e NvM_WriteAll [SWS_NvM_00970] [SWS_NvM_00971] [SWS_NvM_CONSTR00974]. As SW-Cs acessam o NvM por meio de portas associadas a blocos:

Comportamento em caso de erro

Durante a leitura, o NvM avalia as mensagens da MemIf de formas distintas:

Depois disso, atuam vários níveis de recuperação:

  1. Em caso de erros de CRC, seguem-se repetições de leitura configuradas [SWS_NvM_00526].
  2. Para blocos redundantes, o NvM lê a segunda cópia e tenta restabelecer a redundância [SWS_NvM_00199] [SWS_NvM_00531]. Se isso falhar, ele reporta NVM_E_LOSS_OF_REDUNDANCY [SWS_NvM_00546].
  3. Por fim, o NvM carrega dados padrão com o resultado NVM_REQ_RESTORED_DEFAULTS [SWS_NvM_00202]. O conteúdo da memória NV permanece inalterado [SWS_NvM_00172].

Na ausência de dados padrão, o bloco de RAM permanece inválido [SWS_NvM_00658] [SWS_NvM_00204]. Interpretação: a ordem dos níveis provavelmente segue a enumeração na Error Description (Error Description p. 62). Pergunta (aberta) Essa fonte diverge dos Requirements em dois pontos. Ela cita NVM_REQ_RESTORED_FROM_ROM em vez de NVM_REQ_RESTORED_DEFAULTS. Além disso, sintetiza a falha definitiva genericamente como NVM_E_REQ_FAILED. Normativos são os Requirements supracitados.

lesefehler lesen Ler bloco de NV via MemIf pruef Resultado da verificação do MemIf e do CRC? lesen->pruef erfolg NVM_REQ_OK RAM-Block VALID / UNCHANGED pruef->erfolg in Ordnung inv NVM_REQ_NV_INVALIDATED nenhuma notificação ao Dem pruef->inv MEMIF_BLOCK_INVALID retry Lesewiederholung (NVM_MAX_NUM_OF_READ_RETRIES) pruef->retry Erro, tentativas restantes red NVM_BLOCK_REDUNDANT? pruef->red Erro, tentativas esgotadas retry->lesen zweit zweiten NV-Block lesen red->zweit sim def Defaultdaten vorhanden? (ROM-Block / Init-Callback) red->def não zweitok zweite Kopie in Ordnung? zweit->zweitok wieder Restaurar redundância; em caso de falha, NVM_E_LOSS_OF_REDUNDANCY zweitok->wieder sim zweitok->def não wieder->erfolg restore Defaults in RAM laden NVM_REQ_RESTORED_DEFAULTS def->restore sim fail Bloco de RAM permanece inválido NVM_REQ_INTEGRITY_FAILED / NVM_REQ_NOT_OK Notificação ao Dem def->fail não

Diagrama de atividades: tratamento de erros de leitura, desde a repetição e a cópia redundante até os dados padrão. Interpretação: a ordem segue a enumeração da Error Description. Fontes: [SWS_NvM_00526] [SWS_NvM_00199] [SWS_NvM_00202] [SWS_NvM_00341] [SWS_NvM_00658], Error Description p. 62

Durante a escrita, o NvM conta retornos negativos até NVM_MAX_NUM_OF_WRITE_RETRIES [SWS_NvM_00213] [SWS_NvM_00216]. Se o limite for excedido, ele define NVM_REQ_NOT_OK e reporta NVM_E_REQ_FAILED [SWS_NvM_00683] [SWS_NvM_00684] (Error Description p. 43). Dois outros padrões de erro:

  • Se a verificação de escrita falhar, o NvM reporta NVM_E_VERIFY_FAILED e repete a escrita [SWS_NvM_00528] [SWS_NvM_00529].
  • Um bloco redundante é considerado gravado assim que uma cópia tiver sido bem-sucedida [SWS_NvM_00284].

Em caso de operação incorreta, o NvM reporta ao DET se a detecção de erros de desenvolvimento estiver ativada. Exemplos são NVM_E_UNINIT e NVM_E_BLOCK_PENDING [SWS_NvM_00614] [SWS_NvM_00615], bem como NVM_E_WRITE_PROTECTED [SWS_NvM_00962]. Uma solicitação multibloco termina com NVM_REQ_NOT_OK assim que um único bloco falhar [SWS_NvM_00318]. Os usuários verificam eles próprios o status dos seus blocos [SWS_NvM_00694]. Após uma falha de leitura, eles fornecem dados válidos antes da próxima gravação [SWS_NvM_00696].

Evidências mais detalhadas

Guia gerado por IA com base nos requisitos da R20-11 e passagens correspondentes da documentação. Passagens da documentação de outros releases são complementares. Os textos das especificações referenciados permanecem determinantes.

NVRAM Manager (NvM)

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

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

função NvM_Init [SWS_NvM_00447] 📄 PDF

void NvM_Init (const NvM_ConfigType* ConfigPtr);

Service for resetting all internal variables.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: d241ed15a825 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e contexto de chamada

A função NvM_Init serve para o reset síncrono de todas as variáveis internas do NVRAM Manager [SWS_NvM_00447]. Ela espera como parâmetro de passagem ConfigPtr um ponteiro para o conjunto de dados de configuração selecionado e não possui valor de retorno [SWS_NvM_00447]. Como API do tipo 4, ela é parte integrante das classes de configuração 2 e 3 [SWS_NvM_00560], [SWS_NvM_00561]. A função é não reentrante e só pode ser chamada pelo BSW Mode Manager [SWS_NvM_00447], [SWS_NvM_00693].

Tarefas de inicialização

Durante a chamada, a função executa as seguintes ações:

  • Reset de todas as variáveis internas, entre elas máquinas de estados, filas de ordens e flags de requisição, para seus valores iniciais [SWS_NvM_00399].
  • Definição do índice de conjunto de dados de todos os blocos NVRAM do tipo NVM_BLOCK_DATASET como zero [SWS_NvM_00192].
  • Definição interna do sinal "INIT DONE", o qual representa o pré-requisito para o processamento de ordens, o gerenciamento de filas e o recálculo de CRC no módulo [SWS_NvM_00257], [SWS_NvM_00399].

Restrições e interação

Devido a requisitos estritos quanto ao tempo de inicialização da ECU, NvM_Init não inicializa blocos NVRAM configurados [SWS_NvM_00091]. Conteúdos de blocos RAM permanentes não são modificados e callbacks de sincronização não são chamados; isto está reservado à função NvM_ReadAll [SWS_NvM_00400]. Além disso, NvM_Init não inicializa nem drivers subordinados, nem a abstração de hardware de memória, nem módulos externos, visto que a inicialização deles pelo BSW Mode Manager é pressuposta [SWS_NvM_00157], [SWS_NvM_00193].

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I2)

função 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

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: f3fd900b11e8 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e semântica

A função síncrona e reentrante NvM_SetBlockProtection serve para definir ou resetar a proteção contra gravação para um bloco NVRAM através do atributo correspondente no bloco administrativo [SWS_NvM_00450], [SWS_NvM_00016]. Ela está atribuída à classe de configuração de API 3 [SWS_NvM_00560]. O ambiente do módulo NvM pode ativar ou desativar a proteção contra gravação de forma direcionada através do parâmetro ProtectionEnabled [SWS_NvM_00578]. A função retorna E_OK em caso de execução bem-sucedida e E_NOT_OK em caso de erro [SWS_NvM_00450].

Restrições e concorrência

A alteração da proteção contra gravação só é permitida para blocos nos quais NvMWriteBlockOnce está configurado como FALSE, independentemente do valor do parâmetro NvMBlockWriteProt [SWS_NvM_00325]. Se NvMWriteBlockOnce estiver configurado como TRUE, a proteção contra gravação não pode ser ativada nem desativada [SWS_NvM_00398], [SWS_NvM_00577]; essa proteção também não pode ser revogada após operações de leitura [SWS_NvM_00314], [SWS_NvM_00316], [SWS_NvM_00784]. Além disso, um estado de bloqueio definido via NvM_SetBlockLockStatus não pode ser modificado por NvM_SetBlockProtection [SWS_NvM_00754]. Enquanto uma ordem de bloco único estiver ativa ou enfileirada para o mesmo bloco, a chamada não é permitida [SWS_NvM_00704].

Tratamento de erros

Com a detecção de desenvolvimento (DET) ativada, a função reporta estados de erro específicos:

  • NVM_E_UNINIT, se o módulo NvM ainda não estiver inicializado [SWS_NvM_00606].
  • NVM_E_PARAM_BLOCK_ID, quando o BlockId passado estiver fora da faixa válida [SWS_NvM_00609].
  • NVM_E_BLOCK_PENDING, caso já exista uma operação ativa ou enfileirada para o bloco [SWS_NvM_00607].
  • NVM_E_BLOCK_CONFIG, se o bloco estiver configurado com NvMWriteBlockOnce = TRUE [SWS_NvM_00608].
  • NVM_E_BLOCK_LOCKED, se o bloco estiver bloqueado [SWS_NvM_00759].

Esta nota de uso baseia-se na especificação do NVRAM Manager no AUTOSAR Classic R20-11.

Guia do implementador em breve (complexidade I2)

função 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.

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: f2f026a0e790 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função síncrona e reentrante NvM_SetRamBlockStatus serve para definir o status de bloco RAM para blocos RAM permanentes ou para blocos com sincronização explícita [SWS_NvM_00453]. Ela está disponível nas classes de configuração de API 2 e 3 [SWS_NvM_00561], [SWS_NvM_00560], desde que tenha sido ativada através do parâmetro de configuração NvMSetRamBlockStatusApi [SWS_NvM_00408].

Através do parâmetro BlockChanged controla-se se o bloco é marcado como válido e alterado (TRUE) ou como inválido e inalterado (FALSE) [SWS_NvM_00453], [SWS_NvM_00406]. Na passagem de TRUE, o módulo assume a validade dos dados [SWS_NvM_00241]. A função retorna E_OK em caso de alteração bem-sucedida de status e E_NOT_OK em caso de erro [SWS_NvM_00453].

Se BlockChanged for definido como TRUE, a função solicita em segundo plano um recálculo do checksum em NvM_MainFunction, caso NvMCalcRamBlockCrc esteja configurado [SWS_NvM_00121]. Em blocos sem RAM permanente com sincronização explícita, este job utiliza o callback de escrita para a obtenção de dados [SWS_NvM_00906]. Se este falhar, ocorrem repetições configuradas por chamada de NvM_MainFunction [SWS_NvM_00907], [SWS_NvM_00908]. Se todas as tentativas permanecerem sem sucesso, o job é considerado, ainda assim, finalizado e o bloco permanece marcado como alterado [SWS_NvM_00909].

Antes da chamada, o módulo NvM deve estar inicializado [SWS_NvM_00711]. Com a detecção de erros de desenvolvimento ativa, a função reporta NVM_E_UNINIT em caso de módulo não inicializado [SWS_NvM_00643], NVM_E_PARAM_BLOCK_ID em caso de BlockId inválido [SWS_NvM_00645] e NVM_E_BLOCK_PENDING em caso de ordens já em execução ou enfileiradas [SWS_NvM_00644]. Enquanto uma ordem de bloco único estiver ativa, a função não pode ser chamada para este bloco [SWS_NvM_00704]. Um bloqueio de bloco definido através de NvM_SetBlockLockStatus não pode ser alterado por este meio [SWS_NvM_00754].

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I2)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 9c1d841bb0f7 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e contexto de chamada

A função síncrona e reentrante NvM_SetBlockLockStatus serve para bloquear (BlockLocked = TRUE) ou desbloquear (BlockLocked = FALSE) um bloco RAM permanentemente configurado ou a sincronização explícita de um bloco de NVRAM [SWS_NvM_00548]. Ela faz parte do escopo funcional das classes de configuração de API 2 e 3 [SWS_NvM_00561], [SWS_NvM_00560]. A função não está incluída na interface ServicePort e é chamada primariamente pelo DCM, bem como por drivers de dispositivos complexos (CDD) [SWS_NvM_00732].

Restrições e interação

A chamada atua exclusivamente sobre blocos de NVRAM com bloco RAM permanente ou sincronização explícita configurada; para todos os outros blocos, permanece sem efeito [SWS_NvM_00732]. Se um bloco for bloqueado (BlockLocked = TRUE), o NvM assegura que os dados NV associados não sejam modificados: o bloco é ignorado em NvM_WriteAll, e os serviços NvM_WriteBlock, NvM_WritePRAMBlock, NvM_InvalidateNvBlock, bem como NvM_EraseNvBlock, são rejeitados [SWS_NvM_00751]. Na próxima inicialização, o NvM garante o carregamento do bloco da memória NV em NvM_ReadBlock ou NvM_ReadPRAMBlock [SWS_NvM_00752]. O estado de bloqueio definido não pode ser modificado nem via NvM_SetRamBlockStatus nem via NvM_SetBlockProtection [SWS_NvM_00754]. A passagem de BlockLocked = FALSE restaura o processamento regular [SWS_NvM_00753].

Tratamento de erros

Com a detecção de desenvolvimento (DET) ativada, a função reporta erros específicos de desenvolvimento:

  • NVM_E_UNINIT, caso o módulo NvM ainda não esteja inicializado no momento da chamada [SWS_NvM_00728].
  • NVM_E_PARAM_BLOCK_ID, se o parâmetro BlockId estiver fora do intervalo permitido [SWS_NvM_00731].
  • NVM_E_BLOCK_CONFIG, desde que o bloco de NVRAM referenciado esteja configurado com o parâmetro NvMWriteBlockOnce = TRUE [SWS_NvM_00730].

Esta nota de uso baseia-se na especificação AUTOSAR Classic R20-11 e resume os requisitos de chamada, efeito de proteção e tratamento de erros da API.

Guia do implementador em breve (complexidade I2)

função NvM_CancelJobs [SWS_NvM_00535] 📄 PDF

Std_ReturnType NvM_CancelJobs (NvM_BlockIdType BlockId);

Service to cancel all jobs pending for a NV block.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 692d02b963f0 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e semântica

A função NvM_CancelJobs, disponível por meio de NvM.h, serve para cancelar sincronicamente todas as tarefas pendentes na fila para um determinado bloco de NVRAM [SWS_NvM_00535], [SWS_NvM_00536]. A função é projetada para ser reentrante e espera como parâmetro o BlockId, que identifica univocamente o descritor de bloco do respectivo bloco de NVRAM [SWS_NvM_00535]. A chamada retorna E_OK se tarefas pendentes puderam ser removidas com sucesso da fila e E_NOT_OK se nenhuma tarefa pôde ser encontrada na fila para o bloco especificado [SWS_NvM_00535].

Fluxo e concorrência

Uma tarefa que já esteja sendo processada ativamente no momento da chamada da função não é interrompida por NvM_CancelJobs, continuando até o fim [SWS_NvM_00537]. Caso a solicitação de cancelamento para tarefas em espera seja aceita, o serviço define previamente o resultado da solicitação específica do bloco como NVM_REQ_CANCELED [SWS_NvM_00225], [SWS_NvM_00536]. A finalidade desta limpeza é esvaziar a fila, por exemplo, na terminação ou reinicialização de uma partição, impedindo assim notificações posteriores sobre jobs concluídos [SWS_NvM_00225].

Tratamento de erros e configuração

Com a detecção de desenvolvimento (DET) ativada, a função verifica as pré-condições: se o módulo ainda não estiver inicializado, o erro NVM_E_UNINIT é reportado [SWS_NvM_00648]. Se o BlockId passado estiver fora do intervalo válido, ocorre a notificação de DET NVM_E_PARAM_BLOCK_ID [SWS_NvM_00649]. NvM_CancelJobs é classificada como API do tipo 2 e está disponível nas classes de configuração de API 2 e 3 [SWS_NvM_00561], [SWS_NvM_00560].

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR.

Guia do implementador em breve (complexidade I2)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 423f54bb75f5 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e semântica

A função NvM_ReadBlock serve para a cópia assíncrona de dados úteis da memória NV para o bloco de RAM associado [SWS_NvM_00010], [SWS_NvM_00454]. A chamada é reentrante [SWS_NvM_00454]. Ela aceita os parâmetros, enfileira a solicitação de leitura na fila de jobs interna e retorna imediatamente E_OK em caso de aceitação bem-sucedida ou E_NOT_OK em caso de rejeição [SWS_NvM_00195], [SWS_NvM_00454].

Se um ponteiro NvM_DstPtr for passado, dados podem ser lidos em um buffer de RAM temporário de forma divergente da configuração do bloco; um ponteiro NULL inválido resulta, neste cenário, em um erro DET [SWS_NvM_00196], [SWS_NvM_00278]. Um bloco de RAM permanente configurado é marcado como inválido diretamente no enfileiramento ou no início do processamento do job [SWS_NvM_00198]. Apenas após a conclusão bem-sucedida do processo de cópia o bloco de RAM é considerado válido e inalterado [SWS_NvM_00200], e o resultado da solicitação muda para NVM_REQ_OK [SWS_NvM_00206].

Tratamento de erros e integridade de dados

Se uma soma de verificação estiver ativada para o bloco (NvMCalRamBlockCrC == TRUE), o job solicita um novo cálculo após a cópia [SWS_NvM_00201]:

  • Em caso de erros de CRC, NVM_E_INTEGRITY_FAILED é reportado ao DEM [SWS_NvM_00203]. Caso disponíveis, valores padrão são carregados e o resultado é definido como NVM_REQ_RESTORED_DEFAULTS [SWS_NvM_00202]. Se faltarem dados de ROM e callbacks de inicialização, o resultado é NVM_REQ_INTEGRITY_FAILED [SWS_NvM_00204].
  • Se o driver de memória reportar MEMIF_JOB_FAILED e não houver valores substitutos disponíveis, a solicitação é finalizada com NVM_REQ_NOT_OK [SWS_NvM_00359].

Particularidades dos tipos de bloco

  • Redundante: se a leitura da primeira cópia falhar, a segunda cópia de NV é utilizada automaticamente [SWS_NvM_00199]. Se ambas as cópias forem inválidas, o bloco completo é invalidado [SWS_NvM_00317].
  • Dataset: se o bloco selecionado por meio do índice do conjunto de dados estiver marcado como inválido, a cópia para a RAM não é realizada [SWS_NvM_00355].
  • Write-Once: blocos lidos de forma consistente com NVM_WRITE_BLOCK_ONCE definido tornam-se protegidos contra gravação permanentemente [SWS_NvM_00316].

Este texto foi gerado por uma IA e baseia-se exclusivamente nas especificações da release R20-11.

Guia do implementador em breve (complexidade I2)

função 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

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: d2775f30ff1b Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função NvM_WriteBlock serve para a cópia de dados de um bloco RAM para o bloco NV atribuído [SWS_NvM_00455], [SWS_NvM_00410]. A chamada é executada de forma reentrante e assíncrona: a função assume os parâmetros passados BlockId bem como NvM_SrcPtr, enfileira a ordem de gravação na fila interna de jobs e retorna imediatamente [SWS_NvM_00208]. O valor de retorno sinaliza com E_OK a aceitação bem-sucedida ou com E_NOT_OK a rejeição da ordem [SWS_NvM_00455].

Quanto à parametrização e à fonte de dados, aplicam-se as seguintes especificações:

  • Se um endereço RAM válido for passado através de NvM_SrcPtr, a ordem de gravação utiliza esse buffer [SWS_NvM_00210]. Isso permite também o salvamento de blocos RAM temporários em blocos configurados originalmente como permanentes ou com sincronização explícita [SWS_NvM_00280].
  • Um bloco RAM permanente configurado é pressuposto como válido ou validado automaticamente antes do processo de cópia [SWS_NvM_00303].
  • Se um checksum estiver configurado para o bloco NV, o job solicita um recálculo de CRC antes do processo de gravação [SWS_NvM_00212].
  • Em blocos de conjunto de dados (NVM_BLOCK_DATASET), o destino é selecionado através do índice de dados registrado no bloco administrativo [SWS_NvM_00338].
  • Em blocos redundantes (NVM_BLOCK_REDUNDANT), o job conclui com NVM_REQ_OK assim que pelo menos uma cópia for gravada com sucesso [SWS_NvM_00284].
  • Se NvMWriteBlockOnce == TRUE estiver definido, o trabalho ativa imediatamente a proteção contra gravação no bloco administrativo após uma gravação bem-sucedida [SWS_NvM_00328].
  • Solicitações de gravação para o ID de bloco reservado 1 são permitidas apenas com o NvMDynamicConfiguration ativado [SWS_NvM_00311].

Tratamento de erros e concorrência:

  • Se a detecção de erros de desenvolvimento estiver ativa, o NvM_WriteBlock reporta o erro DET NVM_E_UNINIT em caso de módulo não inicializado [SWS_NvM_00619], bem como NVM_E_BLOCK_PENDING se o mesmo bloco já estiver em processamento ou enfileirado [SWS_NvM_00620]. Um ponteiro de origem ausente em buffers temporários resulta em um erro de parâmetro DET [SWS_NvM_00280].
  • Respostas negativas da interface de memória incrementam o contador de repetições; após exceder NVM_MAX_NUM_OF_WRITE_RETRIES, o trabalho termina com NVM_REQ_NOT_OK [SWS_NvM_00213], [SWS_NvM_00216].
  • Se o bloco estiver configurado com prioridade imediata, o NvM_WriteBlock cancela de forma destrutiva um trabalho em execução no momento, para que a solicitação de gravação seja processada em seguida [SWS_NvM_00300].

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR.

Guia do implementador em breve (complexidade I2)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 01efa016ebb0 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e semântica

A função NvM_RestoreBlockDefaults restaura dados padrão no bloco de RAM associado ([SWS_NvM_00456], [SWS_NvM_00012]). Ela opera de forma assíncrona: após a chamada, aceita os parâmetros, enfileira a solicitação na fila interna de jobs e retorna imediatamente com E_OK em caso de aceitação bem-sucedida ou com E_NOT_OK em caso de rejeição ([SWS_NvM_00456], [SWS_NvM_00224]). Se um endereço de RAM válido for passado pelo parâmetro de saída NvM_DestPtr, este será usado como endereço de destino ([SWS_NvM_00435]). Para copiar dados de ROM para um bloco de RAM temporário, mesmo que um bloco de RAM permanente ou callbacks de sincronização estejam configurados, o chamador deve obrigatoriamente passar um ponteiro diferente de NULL ([SWS_NvM_00436]).

Tratamento de erros e condições de contorno

A função não é reentrante ([SWS_NvM_00456]) e faz parte das classes de configuração de API 2 e 3 ([SWS_NvM_00561], [SWS_NvM_00560]). Se a detecção de erros de desenvolvimento (DET) estiver ativa, ela reporta NVM_E_UNINIT caso o módulo ainda não esteja inicializado ([SWS_NvM_00625]), NVM_E_PARAM_BLOCK_ID em caso de BlockId inválido ([SWS_NvM_00630]), bem como um erro de parâmetro se nenhum ponteiro de destino válido for passado para blocos configurados permanentemente para cópia temporária ([SWS_NvM_00436]). A função falha sincronicamente com E_NOT_OK se o bloco for do tipo NVM_BLOCK_DATASET, existir ao menos um bloco de ROM e o índice de dados atual apontar para um bloco NV ([SWS_NvM_00353]).

Processamento de jobs e interação

No âmbito do processamento assíncrono de jobs, o serviço carrega valores padrão a partir de um bloco de ROM configurado ([SWS_NvM_00267]). Se um bloco de RAM permanente for solicitado ou se um callback de sincronização explícito (NvMReadRamBlockFromNvCallback) for utilizado, o bloco de RAM é invalidado antes da operação de cópia ou antes da chamada do callback ([SWS_NvM_00227]). Após uma operação de cópia bem-sucedida ou após o retorno do callback de sincronização com E_OK, o bloco de RAM é validado e marcado como alterado ([SWS_NvM_00228]). Se uma soma de verificação estiver configurada para o bloco, o job solicita conclusivamente um recálculo do CRC ([SWS_NvM_00229]). A mesma lógica de restauração também é utilizada por NvM_ReadBlock e NvM_ReadAll como mecanismo de contingência em caso de acesso de leitura incorreto à memória ou erros de CRC ([SWS_NvM_00202], [SWS_NvM_00293], [SWS_NvM_00657]).

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR Classic R20-11.

Guia do implementador em breve (complexidade I2)

função NvM_EraseNvBlock [SWS_NvM_00457] 📄 PDF

Std_ReturnType NvM_EraseNvBlock (NvM_BlockIdType BlockId);

Service to erase a NV block.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e5129c2997d6 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função assíncrona e reentrante NvM_EraseNvBlock ([SWS_NvM_00457]) da classe de configuração de API 3 ([SWS_NvM_00560]) serve para apagar um bloco de memória não volátil com base no BlockId passado. Desde que não haja proteção contra gravação ativa, a função aceita os parâmetros, enfileira a solicitação de exclusão na fila interna de jobs e retorna imediatamente ([SWS_NvM_00231], [SWS_NvM_00418]). O valor de retorno E_OK sinaliza a aceitação bem-sucedida da solicitação, enquanto E_NOT_OK indica a rejeição ([SWS_NvM_00457]).

Antes da chamada, o módulo NvM deve estar totalmente inicializado ([SWS_NvM_00715]). Após o enfileiramento, a proteção contra gravação não é verificada novamente antes da retirada do job da fila ([SWS_NvM_00662]). Em blocos redundantes do tipo NVM_BLOCK_REDUNDANT, a operação de exclusão só é considerada bem-sucedida quando ambos os blocos redundantes de NV tiverem sido apagados ([SWS_NvM_00269]). O conteúdo dos dados de um bloco de RAM associado permanece sempre inalterado pelo processamento da solicitação ([SWS_NvM_00416]).

Uma chamada é rejeitada se um bloco de ROM de um bloco de conjunto de dados for endereçado ([SWS_NvM_00661]) ou se o bloco estiver bloqueado por meio de NvM_SetBlockLockStatus ([SWS_NvM_00751]). Com a detecção de erros de desenvolvimento (DET) ativada, a função reporta NVM_E_UNINIT em caso de módulo não inicializado ([SWS_NvM_00631]), NVM_E_PARAM_BLOCK_ID em caso de BlockId inválido ([SWS_NvM_00635]), bem como NVM_E_BLOCK_LOCKED em caso de bloco bloqueado ([SWS_NvM_00757]). Se o bloco não possuir prioridade imediata («immediate priority») ou se a prioridade padrão estiver configurada, o erro NVM_E_BLOCK_CONFIG é reportado com o DET ativo e E_NOT_OK é retornado ([SWS_NvM_00357], [SWS_NvM_00636]). Se a execução assíncrona posterior falhar, o status da solicitação é definido como NVM_REQ_NOT_OK ([SWS_NvM_00271]) e NVM_E_REQ_FAILED é reportado ao DEM ([SWS_NvM_00663]).

Esta nota de utilização foi gerada automaticamente com base na especificação.

Guia do implementador em breve (complexidade I2)

função NvM_InvalidateNvBlock [SWS_NvM_00459] 📄 PDF

Std_ReturnType NvM_InvalidateNvBlock (NvM_BlockIdType BlockId);

Service to invalidate a NV block.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: a20887273850 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função NvM_InvalidateNvBlock é um serviço assíncrono e reentrante da classe de configuração de API 3 para a invalidação de um bloco NV [SWS_NvM_00459], [SWS_NvM_00560]. Como condição de chamada, o módulo NvM deve ter sido previamente inicializado pelo ambiente do módulo [SWS_NvM_00717]. A chamada aceita o parâmetro BlockId, enfileira a solicitação se a proteção contra escrita estiver desativada e retorna com E_OK [SWS_NvM_00239], [SWS_NvM_00424]. Se a tarefa não puder ser aceita, a função retorna E_NOT_OK [SWS_NvM_00459].

Uma chamada é rejeitada sincronicamente com E_NOT_OK se um bloco ROM de um bloco de conjunto de dados (Dataset) tiver sido especificado por meio de BlockId [SWS_NvM_00664]. Se o bloco foi previamente bloqueado via NvM_SetBlockLockStatus, o NvM rejeita a tarefa [SWS_NvM_00751] e reporta o erro de DET NVM_E_BLOCK_LOCKED se a interface de desenvolvimento estiver ativa [SWS_NvM_00756]. Se o bloco já estiver enfileirado ou em execução, é emitida a notificação de DET NVM_E_BLOCK_PENDING [SWS_NvM_00639].

O job assíncrono propriamente dito invalida o bloco NV referenciado [SWS_NvM_00421], considerando as seguintes condições de contorno:

  • Para blocos redundantes (NVM_BLOCK_REDUNDANT), o resultado da tarefa só é definido como NVM_REQ_OK quando ambos os blocos NV redundantes tiverem sido invalidados com sucesso [SWS_NvM_00274]; o mesmo mecanismo também é aplicado em NvM_FirstInitAll [SWS_NvM_00919], [SWS_NvM_00920].
  • Para blocos com NVM_WRITE_BLOCK_ONCE, o job mantém a proteção contra escrita inalterada [SWS_NvM_00960]. Se nenhum processo de leitura tiver precedido, o job reporta o erro de DET NVM_E_WRITE_ONCE_STATUS_UNKNOWN [SWS_NvM_00958].
  • Se ocorrer um erro durante o processamento assíncrono, o resultado da solicitação é definido como NVM_REQ_NOT_OK [SWS_NvM_00275] e o erro de produção NVM_E_REQ_FAILED é transmitido ao DEM [SWS_NvM_00666].

Esta nota de uso foi gerada por uma IA e baseia-se exclusivamente nos dados de especificação do AUTOSAR R20-11.

Guia do implementador em breve (complexidade I2)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 657ec2501bdc Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

usar

A função assíncrona e reentrante [SWS_NvM_00764] serve para a cópia de dados de um bloco NV para o bloco RAM permanente atribuído. A chamada aceita o BlockId, enfileira a solicitação de leitura na fila interna de tarefas e retorna imediatamente [SWS_NvM_00766]. O valor de retorno E_OK confirma a aceitação da tarefa, enquanto E_NOT_OK sinaliza uma rejeição [SWS_NvM_00764]. A função faz parte do escopo funcional das classes de configuração de API 2 e 3 [SWS_NvM_00560], [SWS_NvM_00561].

Fluxo e sincronização

Com o enfileiramento bem-sucedido da tarefa ou o início do processamento, o bloco RAM permanente é imediatamente invalidado [SWS_NvM_00767]. Se uma sincronização explícita estiver configurada para o bloco, a aplicação poderá alterar o bloco RAM até a chegada da rotina de sincronização; a invalidação ocorre, neste caso, diretamente antes da chamada de NvMReadRamBlockFromNvCallback [SWS_NvM_00706], [SWS_NvM_00767]. Se os dados NV tiverem sido transferidos sem erros para a RAM, a tarefa é concluída com o status NVM_REQ_OK [SWS_NvM_00765], [SWS_NvM_00775].

Tratamento de erros e redundância

Para blocos do tipo NVM_BLOCK_REDUNDANT, a tarefa inicia automaticamente uma tentativa de leitura no segundo bloco, caso a primeira tentativa de leitura falhe [SWS_NvM_00768]. Para conjuntos de dados (NVM_BLOCK_DATASET), a cópia é impedida se o bloco NV selecionado através do índice for inconsistente [SWS_NvM_00771]; se o índice apontar para dados ROM, estes serão carregados e o resultado será definido como NVM_REQ_OK [SWS_NvM_00772]. Se dados padrão estiverem configurados e o bloco NV não puder ser lido com o estado da RAM inválido, ocorre uma restauração implícita [SWS_NvM_00575], que classifica o bloco RAM como válido e alterado [SWS_NvM_00774]; sem valores padrão configurados, a restauração não é realizada [SWS_NvM_00572]. Se NvM_SetBlockLockStatus esteve ativo anteriormente, o recarregamento a partir da memória NV é forçado [SWS_NvM_00752].

Esta nota de uso foi gerada automaticamente com base no estado da especificação AUTOSAR CP R20-11.

Guia do implementador em breve (complexidade I2)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 5a26959f15b3 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função reentrante e assíncrona NvM_WritePRAMBlock inicia a escrita dos dados de um bloco RAM permanente no respectivo bloco NV [SWS_NvM_00793], [SWS_NvM_00794]. A função está disponível nas classes de configuração de API 2 e 3 [SWS_NvM_00561], [SWS_NvM_00560]. O ID de bloco reservado 1 só pode ser passado se NvMDynamicConfiguration estiver definido como TRUE [SWS_NvM_00311].

Na passagem, a função fornece E_OK em caso de aceitação bem-sucedida ou E_NOT_OK [SWS_NvM_00793]. Se o bloco referenciado estiver bloqueado, a chamada falha com E_NOT_OK e o módulo reporta um erro de DET [SWS_NvM_00797]. A proteção de bloco já é verificada no enfileiramento na fila de tarefas e não é validada novamente antes da execução da tarefa [SWS_NvM_00799]. Se o bloco de NVRAM possuir prioridade imediata (immediate priority), uma tarefa em execução é imediatamente cancelada de forma destrutiva e esta tarefa de escrita é processada a seguir [SWS_NvM_00800].

Antes da transferência propriamente dita para a memória NV, a tarefa solicita um recálculo de CRC, desde que o bloco esteja configurado com CRC [SWS_NvM_00801]. Um bloco RAM permanente ainda inválido é automaticamente validado [SWS_NvM_00803]. No caso de blocos redundantes (NVM_BLOCK_REDUNDANT), ambos os blocos NV são gravados, começando por aquele que não foi lido em tarefas de leitura anteriores [SWS_NvM_00807], [SWS_NvM_00808]. Em erros de escrita, o número de repetições é limitado por NVM_MAX_NUM_OF_WRITE_RETRIES [SWS_NvM_00806]; em caso de estouro, o NvM define o resultado da tarefa como NVM_REQ_NOT_OK [SWS_NvM_00804] e reporta NVM_E_REQ_FAILED ao DEM [SWS_NvM_00805].

Em relação à concorrência, aplica-se: na sincronização implícita, a aplicação não pode mais modificar os dados do buffer após a chamada até o término da tarefa; o acesso de leitura continua permitido [SWS_NvM_00698]. Na sincronização explícita, o buffer pode ser alterado até que a rotina de callback NvMWriteRamBlockToNvCallback seja chamada [SWS_NvM_00705].

Este texto foi gerado por uma IA e serve para orientação técnica com base na especificação.

Guia do implementador em breve (complexidade I2)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: ffad126a6872 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e semântica

A função NvM_RestorePRAMBlockDefaults restaura dados padrão no respectivo bloco RAM permanente ([SWS_NvM_00813], [SWS_NvM_00814]). O serviço opera de forma assíncrona e aceita, por meio do parâmetro BlockId, o identificador do descritor de bloco de NVRAM ([SWS_NvM_00813]). Na chamada, a solicitação é enfileirada na fila interna de tarefas ([SWS_NvM_00815]). O valor de retorno E_OK sinaliza a aceitação bem-sucedida, enquanto E_NOT_OK indica uma rejeição ([SWS_NvM_00813]). Se um bloco ROM estiver configurado, os dados são carregados a partir dele no âmbito do processamento assíncrono ([SWS_NvM_00816]).

Tratamento de erros e condições de contorno

Se nem dados padrão de ROM nem uma rotina de callback NvMInitBlockCallback estiverem definidos para o bloco, o status do bloco permanece inalterado e a chamada retorna E_NOT_OK ([SWS_NvM_00884]). Com a detecção de desenvolvimento (DET) ativada, são reportados erros específicos:

  • NVM_E_UNINIT: O módulo ainda não está inicializado ([SWS_NvM_00831]).
  • NVM_E_PARAM_BLOCK_ID: O BlockId passado está fora da faixa válida ([SWS_NvM_00834]).
  • NVM_E_BLOCK_PENDING: Já existe uma requisição enfileirada ou em processamento para o ID do bloco ([SWS_NvM_00832]).
  • NVM_E_BLOCK_WITHOUT_DEFAULTS: Não existem dados padrão de ROM nem callback de inicialização ([SWS_NvM_00886]).
  • NVM_E_PARAM_ADDRESS: Não está configurado nem bloco RAM permanente nem sincronização explícita ([SWS_NvM_00894]).

Concorrência e interação

O serviço é especificado como não reentrante ([SWS_NvM_00813]) e está disponível nas classes de configuração de API 2 e 3 ([SWS_NvM_00561], [SWS_NvM_00560]). A mesma lógica de restauração também é empregada internamente em NvM_ReadPRAMBlock se a operação de leitura subjacente falhar ([SWS_NvM_00789], [SWS_NvM_00882]).

Esta nota de uso baseia-se nas especificações do AUTOSAR Classic Release R20-11.

Guia do implementador em breve (complexidade I2)

função NvM_ReadAll [SWS_NvM_00460] 📄 PDF

void NvM_ReadAll (void);

Initiates a multi block read request.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: d6aaa62b8e91 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função NvM_ReadAll aciona de forma assíncrona uma solicitação de leitura multibloco para inicializar os blocos de dados da RAM [SWS_NvM_00460], [SWS_NvM_00158]. Ela não possui parâmetros, não retorna valor e não é reentrante [SWS_NvM_00460]. A chamada sinaliza a requisição ao módulo NvM e retorna imediatamente; o processamento real, no entanto, é postergado até que todas as filas de solicitações de bloco individual estejam vazias [SWS_NvM_00243].

Inicialmente, a solicitação valida o ID de configuração durante a inicialização do sistema, comparando o valor armazenado com o compilado [SWS_NvM_00073], [SWS_NvM_00246]:

  • Em caso de correspondência, ocorre a preparação normal para todos os blocos configurados [SWS_NvM_00247].
  • Uma divergência de configuração é ignorada se NvMDynamicConfiguration == FALSE estiver definido [SWS_NvM_00248].
  • Se NvMDynamicConfiguration == TRUE e NvMResistantToChangedSw == FALSE, uma preparação estendida é executada em caso de não correspondência [SWS_NvM_00249].

Em seguida, a solicitação itera sobre todos os blocos de usuário, começando pelo menor ID de bloco (exceto os IDs reservados 0 e 1) [SWS_NvM_00244]. São considerados blocos de RAM permanentes ou blocos com callback de sincronização configurado NvM_ReadRamBlockFromNvm, desde que NvmSelectBlockForReadall == TRUE esteja configurado [SWS_NvM_00118]. Blocos não lidos, mas selecionados, recebem o resultado NVM_REQ_BLOCK_SKIPPED [SWS_NvM_00287].

Em blocos redundantes (NVM_BLOCK_REDUNDANT), se a primeira tentativa de leitura falhar, o segundo bloco NV é lido automaticamente [SWS_NvM_00288]. Após o carregamento bem-sucedido na RAM, o status do bloco é definido como «valid/unmodified» e o resultado da solicitação como NVM_REQ_OK [SWS_NvM_00251], [SWS_NvM_00290], [SWS_NvM_00291]. Para blocos com NvMCalRamBlockCrC == TRUE, a solicitação requisita um recálculo de CRC [SWS_NvM_00292]. Se configurado, NvMSingleBlockCallback é chamado para cada bloco e MultiBlockCallback após o último bloco [SWS_NvM_00281].

Esta nota de uso baseia-se nos requisitos de especificação do AUTOSAR Classic R20-11.

Guia do implementador em breve (complexidade I1)

função NvM_WriteAll [SWS_NvM_00461] 📄 PDF

void NvM_WriteAll (void);

Initiates a multi block write request.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: a7a2e73b7711 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e contexto de chamada

A função NvM_WriteAll dispara de forma assíncrona uma solicitação de gravação multibloco e não possui parâmetros nem valores de retorno [SWS_NvM_00461]. Após a chamada, a função sinaliza a requisição ao módulo NvM e retorna imediatamente [SWS_NvM_00254]. O processamento real é adiado até que todas as filas para solicitações de bloco único sejam totalmente processadas [SWS_NvM_00254]. A chamada ocorre normalmente durante o procedimento fundamental de desligamento (shutdown) pelo BSW Mode Manager [SWS_NvM_00092].

Sequência e processamento de blocos

Durante o shutdown, a solicitação sincroniza blocos permanentes de RAM com os blocos NV correspondentes ou executa o callback de sincronização explícita NvM_WriteRamBlockToNvm [SWS_NvM_00018]. São considerados exclusivamente os blocos para os quais o parâmetro de configuração NvMSelectBlockForWriteAll está definido como true [SWS_NvM_00252], além do bloco 1 em caso de IDs de configuração divergentes com configuração dinâmica ativa [SWS_NvM_00310]. Se um CRC estiver configurado para um bloco de NVRAM, a solicitação exige um recálculo antes da operação de gravação e atualiza o checksum [SWS_NvM_00253]. Para blocos com NvMWriteBlockOnce == TRUE, a solicitação define imediatamente a flag de proteção contra gravação no bloco administrativo após uma gravação bem-sucedida [SWS_NvM_00329].

Simultaneidade e tratamento de erros

  • Reentrância: A função não é reentrante [SWS_NvM_00461].
  • Monitoramento de erros: Para evitar loops infinitos, um contador de novas tentativas monitora as repetições em caso de respostas sem sucesso do módulo MemIf [SWS_NvM_00296].
  • Resultados da solicitação: Se o processamento de pelo menos um bloco falhar, o resultado geral é definido como NVM_REQ_NOT_OK [SWS_NvM_00318]. Para blocos configurados que não foram gravados, é definido o resultado individual NVM_REQ_BLOCK_SKIPPED [SWS_NvM_00298]. Para blocos redundantes (NVM_BLOCK_REDUNDANT), a solicitação individual é considerada NVM_REQ_OK assim que pelo menos um dos blocos NV for gravado com sucesso [SWS_NvM_00337].
  • Cancelamento: Uma solicitação em andamento pode ser cancelada por NvM_CancelWriteAll [SWS_NvM_00019]. Isso leva ao resultado geral NVM_REQ_CANCELED [SWS_NvM_00237], sendo que o bloco atualmente em processamento é finalizado de forma não destrutiva e com consistência de dados [SWS_NvM_00238].

Este texto foi gerado por uma IA e serve como orientação. A especificação AUTOSAR é determinante.

Guia do implementador em breve (complexidade I1)

função NvM_CancelWriteAll [SWS_NvM_00458] 📄 PDF

void NvM_CancelWriteAll (void);

Service to cancel a running Nv M_ Write All request.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 2a47a7f76a8b Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e semântica

A função NvM_CancelWriteAll serve para cancelar prematuramente uma operação de gravação multibloco em andamento (NvM_WriteAll) [SWS_NvM_00458], [SWS_NvM_00019]. A chamada é assíncrona, não reentrante, não recebe parâmetros e não retorna nenhum valor [SWS_NvM_00458]. A função sinaliza a intenção de cancelamento diretamente ao módulo e retorna imediatamente [SWS_NvM_00232]. A solicitação não é inserida na fila de jobs; apenas uma solicitação deste tipo pode estar pendente por vez [SWS_NvM_00420]. Se nenhuma operação estiver ativa no momento da chamada, a chamada não surtirá efeito [SWS_NvM_00233].

Fluxo e consistência de dados

O cancelamento é realizado de modo que a consistência dos dados do bloco de NVRAM processado no momento do cancelamento não seja comprometida [SWS_NvM_00019]. O módulo finaliza este bloco ativo regularmente e define seu atributo de status, dependendo do sucesso, como NVM_REQ_OK ou NVM_REQ_NOT_OK, enquanto todos os blocos restantes ainda pendentes são definidos como NVM_REQ_CANCELED [SWS_NvM_00236]. O resultado global é predeterminado implicitamente pelo resultado da operação cancelada [SWS_NvM_00235], é armazenado em uma variável separada [SWS_NvM_00393] e pode ser consultado por meio de NvM_GetErrorStatus especificando o ID de bloco reservado 0 [SWS_NvM_00394]. Além disso, um callback de nível superior (NvMMultiBlockCallback) pode ser notificado opcionalmente [SWS_NvM_00260]. Desde que configurada por meio de NvMDrvModeSwitch, a solicitação comuta os dispositivos de memória após o cancelamento para o modo de operação lento («slow-mode») [SWS_NvM_00681].

Restrições e tratamento de erros

A chamada de NvM_CancelWriteAll é restrita funcionalmente e só pode ser realizada pelo BSW Mode Manager (BswM) [SWS_NvM_00703]. Além disso, a função pertence à classe de configuração de API 2 [SWS_NvM_00561]. O módulo deve ter sido inicializado antes da chamada [SWS_NvM_00716]; com a detecção de erros de desenvolvimento (DET) ativada, uma chamada no estado não inicializado leva à mensagem de erro NVM_E_UNINIT [SWS_NvM_00637].

Esta nota de uso foi criada automaticamente com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função NvM_ValidateAll [SWS_NvM_00855] 📄 PDF

void NvM_ValidateAll (void);

Initiates a multi block validation request.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 234ca1eec615 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função NvM_ValidateAll dispara a validação assíncrona de múltiplos blocos de NVRAM ([SWS_NvM_00855]) e pertence à classe de configuração de API 3 ([SWS_NvM_00560]). Ela é não reentrante, não espera parâmetros e não fornece valor de retorno ([SWS_NvM_00855]). Antes da chamada, o módulo NvM deve estar inicializado ([SWS_NvM_00859]).

Ao ser chamada, a função sinaliza a solicitação ao módulo e retorna imediatamente ([SWS_NvM_00858]). O processamento real, no entanto, é postergado até que todas as filas de tarefas de bloco único estejam completamente processadas ([SWS_NvM_00858]). Para tarefas multibloco, há apenas uma única vaga disponível no total na fila de tarefas ([SWS_NvM_00380]). O resultado geral da tarefa assíncrona é mantido em uma variável de estado separada ([SWS_NvM_00393]).

No âmbito do processamento de tarefas, tanto o resultado multibloco quanto os resultados dos blocos individuais afetados são definidos previamente como NVM_REQ_PENDING ([SWS_NvM_00861]). O processamento considera exclusivamente blocos para os quais NvMBlockUseAutoValidation está configurado como TRUE ([SWS_NvM_00856], [SWS_NvM_00860]):

  • São processados blocos RAM permanentes ou a sincronização explícita é executada por meio do callback NvM_WriteRamBlockToNvm ([SWS_NvM_00860]).
  • O status do bloco RAM é definido como "VALID / CHANGED" ([SWS_NvM_00856]).
  • Se, adicionalmente, estiver configurado um cálculo de CRC na RAM, a tarefa solicita o recálculo em segundo plano, o qual é processado por meio de NvM_MainFunction ([SWS_NvM_00857]).
  • Após a validação bem-sucedida do bloco RAM, o resultado específico do bloco muda para NVM_REQ_OK ([SWS_NvM_00862]).

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 97732570bd55 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função NvM_FirstInitAll dispara a inicialização inicial assíncrona de múltiplos blocos configurados ([SWS_NvM_91001]). O serviço é não reentrante, não espera parâmetros e não fornece valor de retorno ([SWS_NvM_91001]). O processamento não leva em consideração se um bloco já existe na memória não volátil ou se é válido ou corrompido ([SWS_NvM_91001]). O comprimento da fila para tarefas multibloco (entre outros de NvM_FirstInitAll) é um, de modo que apenas uma única tarefa multibloco pode estar enfileirada simultaneamente ([SWS_NvM_00380]).

O processamento difere de acordo com o tipo de gerenciamento do bloco:

  • NATIVE: Se houver dados padrão disponíveis, o bloco NV será gravado com eles ([SWS_NvM_00913]). Se o bloco possuir RAM permanente ou sincronização explícita, a RAM será atualizada com os dados padrão (ROM ou callback de inicialização) como em NvM_RestoreBlockDefaults ([SWS_NvM_00915]); sem RAM permanente e sem sincronização explícita, o buffer interno do NvM serve como RAM, permanecendo o estado da RAM inalterado ([SWS_NvM_00914]). Se faltarem dados padrão ([SWS_NvM_00919]) ou se um callback de inicialização configurado falhar com um valor de retorno diferente de E_OK ([SWS_NvM_00921]), o bloco será invalidado.
  • REDUNDANT: Se dados padrão estiverem disponíveis, ambas as instâncias do bloco serão gravadas com eles ([SWS_NvM_00916]) e, havendo RAM permanente ou sincronização explícita, a RAM será atualizada ([SWS_NvM_00918]); caso contrário, o buffer interno será utilizado ([SWS_NvM_00917]). Se um callback de inicialização não retornar E_OK, ambas as instâncias serão invalidadas ([SWS_NvM_00922]).
  • DATASET: Todos os blocos configurados para o processamento ou instâncias de blocos NV deste tipo são invalidados sem exceção ([SWS_NvM_00923], [SWS_NvM_00924]).

Se a escrita de um bloco NATIVE com dados padrão ([SWS_NvM_00925]), a invalidação de um bloco NATIVE ([SWS_NvM_00927]) ou a escrita de ambas as instâncias de um bloco REDUNDANT ([SWS_NvM_00926]) falhar, a tarefa define o resultado geral como NVM_REQ_NOT_OK.

Este texto foi gerado por uma IA com base na especificação R20-11.

Guia do implementador em breve (complexidade I1)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 44e91f5e39db Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

usar

A função de callback síncrona NvM_JobEndNotification é chamada pela abstração de memória subjacente para sinalizar ao NVRAM Manager a conclusão sem erros de uma tarefa [SWS_NvM_00462]. A função não possui parâmetros nem valor de retorno e está disponível por meio do arquivo de cabeçalho NvM_MemIf.h com o Service-ID 0x11 [SWS_NvM_00462]. Uma notificação bem-sucedida da abstração de memória abrange operações de leitura, escrita ou apagamento concluídas sem erros [SWS_NvM_00111].

Simultaneidade e restrições

A interface é especificada como não reentrante [SWS_NvM_00462]. Dependendo da função chamadora dentro da abstração de memória, esta rotina pode ser executada em contexto de interrupção [SWS_NvM_00111]. Todos os módulos da abstração de memória devem ser configurados para usar uniformemente o mesmo modo — callback ou polling [SWS_NvM_00111].

Configuração e interação

O módulo NvM disponibiliza a função de callback NvM_JobEndNotification apenas se o modo de polling estiver desativado através do parâmetro de configuração NvMPollingMode [SWS_NvM_00440]. Além disso, a função é influenciada por parâmetros gerais de configuração do NvM [SWS_NvM_00440].

Esta nota de uso baseia-se na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: aca80117b4e4 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função de callback NvM_JobErrorNotification ([SWS_NvM_00463]) serve para a camada de abstração de memória subjacente sinalizar a conclusão com erro de uma tarefa assíncrona ao módulo NVRAM Manager (NvM). A chamada ocorre de forma síncrona e é especificada como não reentrante ([SWS_NvM_00463]).

Uso e assinatura

  • Interface: A declaração da função é disponibilizada por meio do arquivo de cabeçalho NvM_MemIf.h ([SWS_NvM_00463]).
  • Assinatura: De acordo com void NvM_JobErrorNotification(void), a função não possui parâmetros de entrada, saída ou entrada/saída e não fornece valor de retorno ([SWS_NvM_00463]).
  • Service-ID: A função é identificada por meio do identificador hexadecimal 0x12 ([SWS_NvM_00463]).

Dependência de configuração e interação

O módulo NvM disponibiliza a função de callback NvM_JobErrorNotification apenas quando o modo de polling está desativado através do parâmetro de configuração NvMPollingMode ([SWS_NvM_00441]). Se o polling for utilizado, este mecanismo de notificação deixa de existir. Além disso, a função é influenciada pelos parâmetros gerais de configuração de acordo com [SWS_NvM_00028] texto ainda não importado ([SWS_NvM_00441]).

Tratamento de erros e simultaneidade

A função serve exclusivamente para a notificação de erros de tarefas e não define códigos de erro próprios nem retornos de DET ou DEM ([SWS_NvM_00463]). Devido à classificação como Non Reentrant, cabe presumivelmente ao chamador na abstração de memória assegurar que não ocorram chamadas sobrepostas ou interruptivas ([SWS_NvM_00463]). Pergunta Q-5f72d9d605c25922 (aberta)

Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR Classic R20-11.

Guia do implementador em breve (complexidade I1)

função NvM_MainFunction [SWS_NvM_00464] 📄 PDF

void NvM_MainFunction (void);

Service for performing the processing of the Nv M jobs.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e37fc51f7baf Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

usar

A função NvM_MainFunction não possui parâmetros de passagem nem valor de retorno (void NvM_MainFunction(void)) e é declarada por meio de SchM_NvM.h ([SWS_NvM_00464]). Ela serve para o processamento das tarefas do NVRAM Manager ([SWS_NvM_00464], [SWS_NvM_00256]). Após a conclusão de um serviço assíncrono, ela executa rotinas de callback configuradas para a notificação da camada superior ([SWS_NvM_00347]). Além disso, ela assume em segundo plano recálculos de CRC solicitados para blocos de NVRAM ([SWS_NvM_00333]), por exemplo, em decorrência de NvM_SetRamBlockStatus ([SWS_NvM_00121]) ou NvM_ValidateAll ([SWS_NvM_00857]).

Controle de fluxo e priorização

Sofern configurada, a função monitora a fila de prioridade imediata (immediate-priority queue) quanto a solicitações com prioridade imediata ([SWS_NvM_00259]). Se uma solicitação regular tiver sido cancelada destrutivamente por uma tarefa imediata, NvM_MainFunction a reinicia após a conclusão desta ([SWS_NvM_00258]). Com o modo de polling ativo, ela verifica o status das tarefas repassadas para a camada inferior ([SWS_NvM_00346]). Durante o processamento de NvM_WriteAll, ela consulta ciclicamente o estado da abstração de driver de memória por meio de MemIf_GetStatus para MEMIF_BROADCAST_ID e retém callbacks para a camada superior enquanto MEMIF_BUSY_INTERNAL for reportado ([SWS_NvM_00350]).

Tratamento de erros e repetições

Se callbacks específicos da aplicação falharem, NvM_MainFunction controla as tentativas de repetição:

  • Se NvMReadRamBlockFromNvCallback fornecer o valor E_NOT_OK, o módulo repetirá a chamada no próximo ciclo de NvM_MainFunction ([SWS_NvM_00839]).
  • Se NvMWriteRamBlockToNvCallback retornar E_NOT_OK, a repetição ocorrerá igualmente na próxima chamada de NvM_MainFunction ([SWS_NvM_00840]).
  • Se o callback de sincronização explícita em NvM_SetRamBlockStatus retornar E_NOT_OK, o módulo executará as repetições configuradas com uma tentativa por chamada de NvM_MainFunction ([SWS_NvM_00908]).

Este texto foi gerado por uma IA com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I2)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: f9058239e263 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

usar

A rotina de callback NvM_SingleBlockCallbackFunction notifica a camada superior de forma síncrona sobre a conclusão de uma solicitação assíncrona de bloco único previamente iniciada [SWS_NvM_00467].

A função processa dois parâmetros de passagem [SWS_NvM_00467]:

  • BlockRequest (tipo NvM_BlockRequestType): Passa o tipo da solicitação de bloco executada anteriormente, como operações de leitura ou escrita [SWS_NvM_00467].
  • JobResult (tipo NvM_RequestResultType): Reporta o resultado geral da tarefa de bloco processada [SWS_NvM_00467].

Como valor de retorno, a função fornece o tipo Std_ReturnType [SWS_NvM_00467]. Um processamento bem-sucedido do callback é sinalizado pelo retorno de E_OK; qualquer outro valor de retorno caracteriza uma execução mal-sucedida [SWS_NvM_00467].

Tratamento de erros e simultaneidade

A interface não especifica notificações de erro de DET ou DEM próprias [SWS_NvM_00467]. O resultado da tarefa anterior é transmitido pelo parâmetro JobResult, enquanto erros dentro do próprio processamento do callback são reportados por meio do valor de retorno da função [SWS_NvM_00467].

Em relação à concorrência, a rotina é declarada como não reentrante (Non Reentrant) [SWS_NvM_00467]. Ela é disponibilizada por meio do cabeçalho NvM_Externals.h [SWS_NvM_00467]. A chamada pelo módulo NvM deve ocorrer de forma síncrona no contexto de tarefa do processamento cíclico de tarefas do NvM (interpretação). Pergunta Q-f50640211851274f (aberta)

Esta nota de uso foi gerada por uma IA com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função 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

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: a3c38e2b6191 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A rotina de callback NvM_MultiBlockCallbackFunction notifica a camada superior de que uma tarefa assíncrona multibloco previamente iniciada foi concluída [SWS_NvM_00468]. A declaração da função é disponibilizada por meio do arquivo de cabeçalho NvM_Externals.h [SWS_NvM_00468].

Contexto de chamada e parâmetros

A chamada pelo NVRAM Manager ocorre de forma síncrona com o processamento no fluxo de execução [SWS_NvM_00468]. Na chamada, são passados dois parâmetros para a rotina:

  • MultiBlockRequest (tipo NvM_MultiBlockRequestType): Designa o tipo concreto de solicitação da tarefa multibloco processada anteriormente, como acessos de leitura ou escrita [SWS_NvM_00468].
  • JobResult (tipo NvM_RequestResultType): Transmite à camada superior o resultado final do processamento do job multibloco precedente [SWS_NvM_00468].

Valor de retorno e tratamento de erros

A rotina retorna um valor do tipo Std_ReturnType para o módulo chamador [SWS_NvM_00468]. O valor de retorno E_OK indica que a função de callback pôde ser processada com sucesso; por outro lado, qualquer outro valor de retorno sinaliza um processamento com falha [SWS_NvM_00468]. Códigos de erro específicos, mensagens de DET ou DEM não estão definidos no escopo da especificação para esta função. Interpretação: As consequências concretas de um valor de retorno diferente de E_OK devem ser específicas da implementação, uma vez que o padrão não prescreve um tratamento de erro subsequente. Pergunta Q-462dea7f3074ae9c (aberta)

Simultaneidade e restrições

A função é especificada como não reentrante (Non Reentrant) [SWS_NvM_00468]. Portanto, dentro do sistema chamador deve-se assegurar que não ocorram chamadas múltiplas concorrentes ou interruptivas desta interface de callback.

Este texto foi gerado por uma IA com base na especificação.

Guia do implementador em breve (complexidade I1)

função 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

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 6fa779cf7b62 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Utilização e contexto de chamada

A rotina de callback específica do usuário NvM_InitBlockCallbackFunction é chamada pelo módulo NvM quando dados padrão para um bloco de NVRAM precisam ser restaurados na RAM e nenhum bloco ROM correspondente está configurado [SWS_NvM_00469]. A chamada ocorre de forma síncrona e a interface é declarada por meio do cabeçalho NvM_Externals.h [SWS_NvM_00469].

Como parâmetro de passagem, a função recebe InitBlockRequest do tipo NvM_InitBlockRequestType [SWS_NvM_00469]. Este valor informa a rotina sobre o tipo específico de solicitação do bloco atualmente processado, como a leitura ou restauração de dados (read, restore) [SWS_NvM_00469].

Valores de retorno e tratamento de erros

A rotina retorna um valor de status do tipo Std_ReturnType [SWS_NvM_00469]:

  • E_OK: Sinaliza ao módulo NvM que a função de callback inicializou e processou os dados na RAM com sucesso [SWS_NvM_00469].
  • Qualquer outro valor de retorno: Indica que a inicialização não pôde ser concluída com sucesso [SWS_NvM_00469].

Códigos de erro específicos para DET ou DEM não são especificados para a interface em si [SWS_NvM_00469].

Concorrência e restrições de execução

A interface é definida como síncrona e não reentrante (Non Reentrant) [SWS_NvM_00469]. Como o NVRAM Manager aguarda sincronicamente o retorno da função, uma execução bloqueante dentro da rotina deve interromper imediatamente o processamento subsequente do NvM (interpretação). Pergunta Q-c0e43c9871c4f2d0 (aberta)

Esta nota de uso foi gerada por uma IA com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 5243b53cfd03 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função de callback específica do bloco NvM_WriteRamBlockToNvm serve para a sincronização explícita a fim de copiar dados da aplicação do bloco RAM para o espelho interno de RAM do módulo NvM [SWS_NvM_00539]. Ela está declarativamente disponível por meio de NvM_Externals.h e é chamada sincronicamente pelo NvM [SWS_NvM_00539].

Utilização e parâmetros

A função passa como parâmetro de saída o ponteiro NvMBuffer, que representa o endereço de destino do espelho do NvM no qual os dados devem ser gravados [SWS_NvM_00539]. Como valor de retorno, a rotina de callback fornece E_OK em caso de processamento bem-sucedido ou qualquer outro valor em caso de falha [SWS_NvM_00539].

Simultaneidade e restrições

De acordo com a especificação, NvM_WriteRamBlockToNvm é projetada como não reentrante (Non Reentrant) [SWS_NvM_00539].

Interação no módulo

  • Durante o desligamento, o job NvM_WriteAll sincroniza blocos RAM permanentes ou chama a rotina de callback NvM_WriteRamBlockToNvm para sincronização explícita [SWS_NvM_00018], desde que o parâmetro NvMSelectBlockForWriteAll para o bloco de NVRAM esteja configurado como true [SWS_NvM_00252].
  • Os jobs de escrita NvM_WriteBlock [SWS_NvM_00303] e NvM_WritePRAMBlock [SWS_NvM_00803] validam automaticamente um bloco RAM permanente ainda inválido após a chamada de NvM_WriteRamBlockToNvm.

Este texto foi gerado por uma IA com base na especificação AUTOSAR R20-11.

Guia do implementador em breve (complexidade I1)

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 1b2c937c4017 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

A função NvM_ReadRamBlockFromNvm é uma rotina de callback específica do bloco declarada por meio de NvM_Externals.h [SWS_NvM_00540]. Sua finalidade é permitir que a aplicação copie dados do buffer de espelho interno do módulo NvM para o respectivo bloco RAM a fim de realizar uma sincronização explícita [SWS_NvM_00540], [SWS_NvM_00118].

Utilização e semântica

  • Contexto de chamada e concorrência: A chamada ocorre de forma síncrona e é especificada como não reentrante (Non Reentrant) [SWS_NvM_00540].
  • Parâmetros: O ponteiro NvMBuffer (tipo const void*) atua como parâmetro de passagem. Ele passa o endereço do buffer a partir do qual os dados podem ser lidos e copiados para o bloco RAM [SWS_NvM_00540].
  • Valor de retorno e tratamento de erros: A função de callback retorna um Std_ReturnType. O valor de retorno E_OK sinaliza o processamento bem-sucedido; qualquer outro valor de retorno indica um processamento mal-sucedido [SWS_NvM_00540].

Interação

No âmbito do serviço multibloco NvM_ReadAll, NvM_ReadRamBlockFromNvm é chamado para a sincronização explícita dos blocos de NVRAM configurados de forma correspondente e para os quais se aplica NvmSelectBlockForReadall == TRUE [SWS_NvM_00118], [SWS_NvM_00356]. Isso representa a alternativa ao processo de cópia direta em blocos RAM permanentes, enquanto NvM_ReadAll inicializa os dados de gerenciamento dos blocos [SWS_NvM_00356].

Este texto foi gerado por um sistema de IA com base nas diretrizes da especificação.

Guia do implementador em breve (complexidade 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

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: e84ff8330bcb Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O tipo enumerado NvM_MultiBlockRequestType é disponibilizado por meio do arquivo de cabeçalho NvM.h e serve para a identificação inequívoca de uma solicitação multibloco executada [SWS_NvM_91003]. O tipo é utilizado quando o resultado ou o status de uma operação multibloco é sinalizado por meio de uma função de callback ou reportado ao módulo BswM [SWS_NvM_91003].

Faixa de valores e semântica

A enumeração define os seguintes valores para diferenciação das tarefas multibloco [SWS_NvM_91003]:

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

Interação

Por meio da passagem deste tipo, os callbacks chamados, bem como o BswM, podem determinar qual serviço multibloco concreto disparou a notificação. Interpretação: Presumivelmente, o retorno ao BswM serve para acoplar ações subsequentes ou mudanças de estado no sistema global à conclusão de serviços multibloco específicos. Pergunta Q-69b4d985301acfeb (aberta)

Este texto foi gerado por uma IA e serve como guia de orientação. As especificações referenciadas são determinantes.

Guia do implementador em breve (complexidade I1)

tipo NvM_RequestResultType [SWS_NvM_00470] 📄 PDF

Type NvM_RequestResultType.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 49d0056a8c31 Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O tipo NvM_RequestResultType é baseado em uint8, é disponibilizado via Rte_NvM_Type.h e mapeia o resultado de requisição assíncrona de solicitações de leitura, gravação e controle do gerenciador de NVRAM [SWS_NvM_00470]. O resultado é consultado primariamente por meio do serviço de API NvM_GetErrorStatus e pode adicionalmente ser sinalizado através de uma função de callback configurada [SWS_NvM_00470].

A faixa de valores mapeia diferentes estados de execução e casos de erro [SWS_NvM_00470]:

  • NVM_REQ_OK (0x00): A última solicitação assíncrona foi concluída com sucesso; este é também o valor padrão após um reset.
  • NVM_REQ_NOT_OK (0x01): A requisição assíncrona de leitura, gravação ou controle não foi concluída com sucesso.
  • NVM_REQ_PENDING (0x02): Uma requisição assíncrona ainda está em processamento no momento.
  • NVM_REQ_INTEGRITY_FAILED (0x03): Erro de integridade de dados em NvM_ReadBlock ou NvM_ReadAll. No caso de NvM_ReadBlock, o conteúdo do bloco de RAM foi alterado, mas tornou-se inválido; a aplicação é responsável por renovar e validar o conteúdo.
  • NVM_REQ_BLOCK_SKIPPED (0x04): O bloco referenciado foi ignorado durante NvM_ReadAll ou NvM_WriteAll (por ex., blocos de NVRAM do tipo dataset em NvM_ReadAll ou blocos sem bloco de RAM configurado permanentemente).
  • NVM_REQ_NV_INVALIDATED (0x05): O bloco NV referenciado está invalidado.
  • NVM_REQ_CANCELED (0x06): Cancelamento de NvM_WriteAll por NvM_CancelWriteAll ou cancelamento de uma solicitação de bloco único (NvM_ReadBlock, NvM_WriteBlock, NvM_EraseNvBlock, NvM_InvalidateNvBlock, NvM_RestoreBlockDefaults) por NvM_CancelJobs.
  • NVM_REQ_RESTORED_DEFAULTS (0x08): Os valores padrão foram copiados com sucesso para a imagem da RAM.

Em conjunto com blocos redundantes (NVM_BLOCK_REDUNDANT), a função NvM_InvalidateNvBlock define o resultado da requisição NvM_RequestResultType como NVM_REQ_OK somente quando ambos os blocos NV tiverem sido invalidados [SWS_NvM_00274].

Este texto foi gerado automaticamente. Todas as informações baseiam-se exclusivamente nos requisitos de especificação da versão R20-11 do AUTOSAR.

Guia do implementador em breve (complexidade 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

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: f4f68ded6ba5 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O tipo de dados NvM_InitBlockRequestType baseia-se em uint8 e é disponibilizado por meio do arquivo de cabeçalho Rte_NvM_Type.h [SWS_NvM_91123]. Ele serve para identificar o tipo da solicitação executada em um bloco de NVRAM quando esta for sinalizada por meio de uma função de callback correspondente [SWS_NvM_91123].

O intervalo de valores permitido compreende quatro tipos de solicitação [SWS_NvM_91123]:

  • NVM_INIT_READ_BLOCK (0x00): Indica que foi solicitado NvM_ReadBlock ou NvM_ReadPRAMBlock para o bloco [SWS_NvM_91123].
  • NVM_INIT_RESTORE_BLOCK_DEFAULTS (0x01): Sinaliza que foi solicitado NvM_RestoreBlockDefaults ou NvM_RestorePRAMBlockDefaults para o bloco [SWS_NvM_91123].
  • NVM_INIT_READ_ALL_BLOCK (0x02): Indica que o processamento do bloco ocorre no âmbito de NvM_ReadAll [SWS_NvM_91123].
  • NVM_INIT_FIRST_INIT_ALL (0x03): Identifica o processamento do bloco durante a execução de NvM_FirstInitAll [SWS_NvM_91123].

Com base neste valor de enumeração, a lógica de aplicação chamada pode distinguir se se trata de uma requisição explícita de bloco individual (leitura ou restauração de valores padrão) ou de uma operação coletiva global durante o arranque do sistema [SWS_NvM_91123]. Interpretação: O tipo deve ser passado como parâmetro para callbacks de inicialização relacionados a blocos, para que a aplicação possa fornecer dados padrão adequados à situação ou efetuar preparações específicas. Pergunta Q-42d0d469e305728e (aberta)

Esta nota de utilização baseia-se na especificação AUTOSAR Classic Release R20-11.

Guia do implementador em breve (complexidade I1)

tipo NvM_BlockRequestType [SWS_NvM_91002] 📄 PDF

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

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 68d31eddd2e0 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

O tipo de enumeração NvM_BlockRequestType baseia-se em uint8 e é disponibilizado por meio do cabeçalho Rte_NvM_Type.h [SWS_NvM_91002]. Ele serve para transmitir, em uma notificação por meio de uma função de callback, o tipo de solicitação executada anteriormente em um bloco de NVRAM [SWS_NvM_91002].

O intervalo de valores compreende seis solicitações de bloco específicas [SWS_NvM_91002]:

  • NVM_READ_BLOCK (0x00): Sinaliza que NvM_ReadBlock ou NvM_ReadPRAMBlock foi executado para o bloco [SWS_NvM_91002].
  • NVM_WRITE_BLOCK (0x01): Sinaliza que NvM_WriteBlock ou NvM_WritePRAMBlock foi executado para o bloco [SWS_NvM_91002].
  • NVM_RESTORE_BLOCK_DEFAULTS (0x02): Sinaliza que NvM_RestoreBlockDefaults ou NvM_RestorePRAMBlockDefaults foi executado [SWS_NvM_91002].
  • NVM_ERASE_NV_BLOCK (0x03): Sinaliza que NvM_EraseNvBlock foi executado no bloco [SWS_NvM_91002].
  • NVM_INVALIDATE_NV_BLOCK (0x04): Sinaliza que NvM_InvalidateNvBlock foi executado no bloco [SWS_NvM_91002].
  • NVM_READ_ALL_BLOCK (0x05): Sinaliza que NvM_ReadAll concluiu o processamento deste bloco [SWS_NvM_91002].

Na arquitetura da aplicação, o valor deve ser avaliado como parâmetro em rotinas de callback a fim de informar componentes de software de nível superior de forma diferenciada sobre a conclusão de determinadas operações de bloco [SWS_NvM_91002]. Pergunta Q-467801b6b5e898a2 (aberta) Na falta de outras diretrizes no payload sobre códigos de erro ou concorrência, os detalhes da especificação limitam-se à definição do tipo e ao intervalo de valores [SWS_NvM_91002].

Este texto foi criado por uma IA; a exatidão não pode ser garantida.

Guia do implementador em breve (complexidade 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#984a2567
Content hash
984a2567
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_NVRAMManager.pdf#nameddest=SWS_NvM_00447

Inicialização e estado

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

void NvM_GetVersionInfo (Std_VersionInfoType* versioninfo);
NvM_Init função

Service for resetting all internal variables.

void NvM_Init (const NvM_ConfigType* ConfigPtr);

Serviços · Read…

NvM_ReadAll função

Initiates a multi block read request.

void NvM_ReadAll (void);
NvM_ReadBlock função

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

Serviços · 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);

Serviços · Write…

NvM_WriteAll função

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

Serviços · 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);

Serviços · 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);

Serviços · 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);

Serviços · 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);

Serviços · Outros

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.