DEENESPTFRRUARHIKOZHNL

NVRAM Manager (NvM)

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

모듈 가이드AI 생성

비휘발성 데이터 블록을 관리하며, 이를 RAM과 NV 메모리 간에 비동기적으로 동기화합니다.
AI 생성 미검증 모델: claude-opus-5-5 · 노력: high · 온도: 제어 불가 · 프롬프트: 1d912b11517a 출처 열린 질문 (1)
인과 앵커: R20-11 R20-11부터 유효 이 사양 릴리스용으로 새로 합성되었습니다.
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

비휘발성 데이터 블록을 관리하며, 이를 RAM과 NV 메모리 간에 비동기적으로 동기화합니다.

NVRAM Manager(NvM)는 비휘발성 메모리로 접근하는 유일한 통로입니다. 이는 NVRAM 블록을 RAM과 NV 메모리 간에 암시적으로 복사합니다 [SWS_NvM_00038]. 시작 시에는 BswM에 의해 트리거된 NvM_ReadAll이 RAM 블록을 채우고, 셧다운 시에는 NvM_WriteAll가 변경된 블록을 저장합니다. NvM_WriteBlock과 같은 개별 요청은 비동기적으로 큐에 등록되어 우선순위에 따라 처리되며, 상태 또는 콜백을 통해 확인 응답됩니다 [SWS_NvM_00185]. NvM은 재시도, 중복 복사본 및 기본 데이터를 통해 읽기 오류를 처리하지만, 사용자는 여전히 블록 상태를 직접 확인해야 합니다.

NVRAM Manager(NvM)는 비휘발성 메모리로의 유일한 접근 통로입니다 [SWS_NvM_00384]. 이는 블록을 NVRAM과 RAM 간에 암시적으로 복사하며, 애플리케이션은 RAM 데이터와 직접 작동합니다 [SWS_NvM_00038]. 하위로는 Fee 또는 Ea와 함께 Memory Abstraction Interface를 사용합니다 [SWS_NvM_00051]. 상태는 BswM에 보고하고 오류는 DEM 및 DET에 보고합니다 [SWS_NvM_00745] [SWS_NvM_00592].

kontext nutzer NvM 사용자 (RTE를 통한 SW-C, BSW 모듈) nvm NvM (NVRAM Manager) nutzer->nvm 개별 작업 NvM_ReadBlock, NvM_WriteBlock, … bswm BswM bswm->nvm NvM_Init, NvM_ReadAll, NvM_WriteAll, NvM_CancelWriteAll nvm->nutzer SingleBlock, InitBlock 및 Mirror 콜백 nvm->bswm BswM_NvM_CurrentJobMode, BswM_NvM_CurrentBlockMode memif MemIf nvm->memif 읽기/쓰기 작업, MemIf_GetJobResult dem Dem nvm->dem Produktionsfehler det Det nvm->det Entwicklungsfehler crc Crc nvm->crc CRC-Berechnung fee Fee / Ea memif->fee Weiterleitung fee->nvm NvM_JobEndNotification, NvM_JobErrorNotification

컨텍스트 다이어그램: 사용자, BswM, MemIf/Fee/Ea 그리고 DEM 및 DET 사이의 NvM 임베딩. 출처: [SWS_NvM_00384] [SWS_NvM_00465] [SWS_NvM_00746]

각 NVRAM 블록은 NV 블록, RAM 블록 및 Administrative Block으로 구성되며, 선택적으로 기본 데이터가 포함된 ROM 블록이 추가됩니다 [SWS_NvM_00138]. Native, Redundant 및 Dataset 유형이 있으며, 이들은 NV 및 ROM 블록의 수에서 차이가 납니다 [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559]. NvM은 RAM 블록을 직접 암시적으로 동기화하거나 콜백이 있는 RAM 미러를 통해 명시적으로 동기화합니다 [SWS_NvM_00511].

수명 주기는 세 단계로 진행됩니다:

NvM_WriteBlock과 같은 개별 요청은 큐에 등록된 후 NVM_REQ_PENDING 상태가 됩니다 [SWS_NvM_00185]. 선택적으로 NvM은 Immediate 요청을 위한 전용 큐를 사용합니다 [SWS_NvM_00378]. 결과는 NvM_GetErrorStatus 또는 구성된 콜백이 제공합니다 [SWS_NvM_00015] [SWS_NvM_00740].

피드백이 있는 비동기 단일 블록 작업NvM-AnwenderNvMBswMBSW-TaskMemIfNvM_WriteBlock(BlockId, NvM_SrcPtr)einreihen, Blockergebnis:NVM_REQ_PENDINGoptNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, NVM_REQ_PENDING)E_OKloop쓰기 작업이 완료될 때까지NvM_MainFunction()Schreibauftrag / Status abfragenJob-ErgebnisoptNvMSingleBlockCallback konfiguriertNvM_SingleBlockCallbackFunction(NVM_WRITE_BLOCK, JobResult)optNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, Ergebnis)NvM_GetErrorStatus(BlockId, RequestResultPtr)E_OK, Ergebnis

시퀀스 다이어그램: 비동기 쓰기 요청이 큐에 등록되고, NvM_MainFunction에서 처리되며, 콜백, BswM 알림 및 상태 조회를 통해 확인 응답됩니다. 출처: [SWS_NvM_00185] [SWS_NvM_00347] [SWS_NvM_00891], SWS NvM 160쪽

NvM은 세 단계를 통해 읽기 오류를 처리합니다:

Interpretation: 단계의 순서는 Error Description의 열거를 따를 것으로 추정됩니다. 질문 Q-027e7f981e4d0a43 (열림) NvM은 쓰기 오류 시 NVM_MAX_NUM_OF_WRITE_RETRIES까지 재시도한 다음 DEM에 NVM_E_REQ_FAILED을 보고합니다 [SWS_NvM_00684]. 사용자는 자신의 블록 상태를 직접 확인합니다 [SWS_NvM_00694].

메모리 스택에서의 역할: 비휘발성 메모리로의 유일한 접근 통로

NVRAM Manager(NvM)는 비휘발성 데이터에 대한 접근을 통합합니다. 환경은 NvM만을 통해 비휘발성 메모리와 통신하며, NvM은 이를 위해 콜백 인터페이스를 제공합니다 [SWS_NvM_00384]. 접근은 암시적입니다. NvM은 NVRAM과 공유 RAM 간에 블록을 복사합니다. 애플리케이션은 동기화 규칙을 준수하면서 RAM 데이터와 직접 작동합니다 [SWS_NvM_00038] [SWS_NvM_00692]. 블록은 구성된 블록 ID를 통해 선택됩니다 [SWS_NvM_00069] [SWS_NvM_00471]. 상위 계층은 이를 위해 NvM.h만을 포함합니다 [SWS_NvM_00691]. 암시적 업데이트에 관한 다이어그램은 역할 분담을 보여줍니다. 기본 소프트웨어의 다른 부분들이 ECU 상태에 따라 모든 블록의 저장 및 복원을 트리거합니다. SW-C는 해당 RAM 블록의 내용에만 접근합니다(SWS NvM 121쪽).

하위 계층에 대해 NvM은 Memory Abstraction Interface와 연동합니다. 이는 Fee 또는 Ea와 함께 가상 선형 32비트 주소 공간을 제공합니다 [SWS_NvM_00051] [SWS_NvM_00465]. NvM은 Crc 모듈을 통해 체크섬을 생성합니다 [SWS_NvM_00466]. 하위 계층 작업의 종료는 두 가지 방식으로 인식합니다:

프로덕션 오류는 DEM으로 전송되고 [SWS_NvM_00592], 개발 오류는 DET로 전송됩니다 [SWS_NvM_00614]. NvM은 작업 상태를 BswM에 보고합니다 [SWS_NvM_00745] [SWS_NvM_00746].

kontext nutzer NvM 사용자 (RTE를 통한 SW-C, BSW 모듈) nvm NvM (NVRAM Manager) nutzer->nvm 개별 작업 NvM_ReadBlock, NvM_WriteBlock, … bswm BswM bswm->nvm NvM_Init, NvM_ReadAll, NvM_WriteAll, NvM_CancelWriteAll nvm->nutzer SingleBlock, InitBlock 및 Mirror 콜백 nvm->bswm BswM_NvM_CurrentJobMode, BswM_NvM_CurrentBlockMode memif MemIf nvm->memif 읽기/쓰기 작업, MemIf_GetJobResult dem Dem nvm->dem Produktionsfehler det Det nvm->det Entwicklungsfehler crc Crc nvm->crc CRC-Berechnung fee Fee / Ea memif->fee Weiterleitung fee->nvm NvM_JobEndNotification, NvM_JobErrorNotification

컨텍스트 다이어그램: NvM은 한쪽의 사용자와 BswM, 다른 쪽의 MemIf/Fee/Ea 사이를 중개합니다. 오류는 DEM과 DET에 보고합니다. 출처: [SWS_NvM_00384] [SWS_NvM_00745] [SWS_NvM_00746] [SWS_NvM_00465] [SWS_NvM_00466], Error Description 43쪽

NVRAM 블록의 구조와 세 가지 관리 유형

NVRAM 블록은 필수 구성 요소인 NV 블록, RAM 블록 및 Administrative Block으로 이루어집니다. 기본 데이터가 포함된 ROM 블록은 선택 사항입니다 [SWS_NvM_00138] [SWS_NvM_00139] [SWS_NvM_00020]. 구성 요소의 조합은 구성 시 블록 디스크립터에 의해 결정됩니다 [SWS_NvM_00140]. 개별 구성 요소:

NvM은 NVM_BLOCK_NATIVE, NVM_BLOCK_REDUNDANT 및 NVM_BLOCK_DATASET 유형을 지원합니다 [SWS_NvM_00137]. 이들은 NV 및 ROM 블록의 수에서 차이가 납니다 [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559] (SWS NvM 10쪽). Dataset 블록의 경우 다음이 적용됩니다:

blockaufbau nvram NVRAM-Block (BlockId, Verwaltungstyp) nv NV-Block Header (opt.), Daten, CRC (opt.) nvram->nv NATIVE: 1 REDUNDANT: 2 DATASET: 1..m ram 영구, 임시 또는 RAM 미러 RAM 블록 nvram->ram genau 1 rom ROM-Block (optional) Defaultdaten nvram->rom NATIVE/REDUNDANT: 0..1 DATASET: 0..n adm Administrative Block Index, Attribute, Fehler-/Status nvram->adm genau 1

협업 다이어그램(블록 구조): 관리 유형별 카디널리티를 포함한 NVRAM 블록의 필수 및 선택적 구성 요소. 출처: [SWS_NvM_00138] [SWS_NvM_00557] [SWS_NvM_00558] [SWS_NvM_00559] [SWS_NvM_00134], SWS NvM 10쪽

수명 주기: NvM_Init, NvM_ReadAll 및 NvM_WriteAll

BswM이 NvM_Init을 독점적으로 호출합니다 [SWS_NvM_00693]. NvM_Init는 큐와 상태 머신을 재설정하고 내부적으로 "INIT DONE"을 신호합니다 [SWS_NvM_00399]. 이는 RAM 블록이나 하위 모듈을 초기화하지 않습니다 [SWS_NvM_00091] [SWS_NvM_00193]. 구성 포인터는 항상 NULL_PTR입니다 [SWS_NvM_00881]. 그 이후에야 NvM_MainFunction이 요청을 처리합니다 [SWS_NvM_00257].

이어서 NvM_ReadAll이 RAM 블록을 채웁니다 [SWS_NvM_00718]. 이 호출은 요청만을 신호합니다. 처리는 개별 블록 요청이 완료될 때까지 연기됩니다 [SWS_NvM_00243]. 그 후 작업은 세 단계로 실행됩니다:

  1. 먼저 저장된 구성 ID와 컴파일된 구성 ID를 비교합니다 [SWS_NvM_00073]. 불일치할 경우의 동작은 NvMDynamicConfiguration에 따라 달라집니다. NvMDynamicConfiguration == FALSE의 경우 불일치가 무시됩니다 [SWS_NvM_00248]. 그렇지 않으면 변경에 저항력이 없는 블록에 기본 데이터가 제공됩니다 [SWS_NvM_00249] [SWS_NvM_00674] (NV Data Handling 15쪽).
  2. 그런 다음 블록 ID 0 및 1을 제외한 사용자 블록을 순회합니다 [SWS_NvM_00244]. 이때 영구 RAM 블록이 있거나 명시적 동기화를 사용하는 블록만 처리합니다 [SWS_NvM_00118].
  3. 마지막으로 전체 결과를 NVM_REQ_OK 또는 NVM_REQ_NOT_OK로 설정합니다 [SWS_NvM_00895] [SWS_NvM_00301].

모드 관리 예제에서 BswM 규칙 NvMReadAllFinished은 NvM_ReadAll이 완료된 후에야 나머지 초기화를 시작합니다 (Mode Management Guide 31쪽).

시작: NvM_Init 및 NvM_ReadAllBSW-TaskBswMNvMMemIf / Fee / EaUse Case: InitialisierungNvM_Init(NULL_PTR)큐 및 상태 초기화,“INIT DONE” – RAM 블록 변경 없음NvM_Init()Use Case: Multiblock-Auftrag NvM_ReadAllNvM_ReadAll()NvM_ReadAll()optNvMBswMMultiBlockJobStatusInformation == TRUEBswM_NvM_CurrentJobMode(ReadAll, NVM_REQ_PENDING)NvM_MainFunction()첫 번째 단계: 저장된 및kompilierte Konfigurations-ID vergleichenloopNvM_ReadAll 대상 사용자 블록별 (블록 ID 0 및 1 제외)NvM_MainFunction()NV-Block lesenJob-ErgebnisRAM 블록 또는 미러 채우기,Blockergebnis setzenoptNvMBswMMultiBlockJobStatusInformation == TRUEBswM_NvM_CurrentJobMode(ReadAll, Ergebnis)BswM_MainFunction()Regel NvMReadAllFinished:restliche BSW-Initialisierung

시퀀스 다이어그램: NvM_Init, NvM_ReadAll을 통한 비동기 시작 및 BswM으로의 다중 블록 상태 피드백. 출처: [SWS_NvM_00693] [SWS_NvM_00243] [SWS_NvM_00073] [SWS_NvM_00888] [SWS_NvM_00889], NV Data Handling 20쪽

셧다운 시 BswM이 NvM_WriteAll을 호출합니다 [SWS_NvM_00092]. 작업은 다음과 같이 동작합니다:

  • 영구 RAM 블록을 쓰거나, NvM_WriteRamBlockToNvm을 통해 명시적으로 동기화된 데이터를 가져옵니다 [SWS_NvM_00252].
  • 사전에 "valid/modified" 상태를 확인합니다 [SWS_NvM_00682].
  • 보호되거나 잠긴 블록은 오류 보고 없이 건너뜁니다 [SWS_NvM_00434] [SWS_NvM_00750].
  • 다른 요청이 이를 중단시키지 않습니다 [SWS_NvM_00567].

API가 활성화되어 있는 경우, 사용자는 NvM_SetRamBlockStatus(…, TRUE)을 사용하여 변경된 블록을 표시합니다 [SWS_NvM_00406] [SWS_NvM_00408]. Dirty Flag 블록의 경우 RTE가 이 호출을 수행합니다 (NV Data Handling 41쪽).

NvM_CancelWriteAll은 BswM 전용이며 [SWS_NvM_00703], 실행 중인 NvM_WriteAll가 없으면 아무런 효과가 없습니다 [SWS_NvM_00233]. 현재 블록은 비파괴적으로 완료됩니다 [SWS_NvM_00238]. 나머지 블록 및 다중 블록 결과는 NVM_REQ_CANCELED를 받습니다 [SWS_NvM_00236] [SWS_NvM_00237] (SWS NvM 161쪽).

두 개의 추가 다중 블록 요청이 수명 주기를 보완합니다:

  • NvM_ValidateAll은 자동 유효성 검사가 설정된 블록을 "VALID / CHANGED"로 설정합니다 [SWS_NvM_00856].
  • NvM_FirstInitAll은 블록에 기본 데이터를 쓰거나, 기본 데이터가 없는 경우 블록을 무효화합니다 [SWS_NvM_00913] [SWS_NvM_00919].

모든 다중 블록 요청에 대해 큐 길이는 1이 적용됩니다 [SWS_NvM_00380].

종료: NvM_WriteAll 및 NvM_CancelWriteAllBSW-TaskBswMNvMNvM_WriteAll()NvM_WriteAll()loop영구 RAM 또는 명시적 동기화가 있는 블록별NvM_MainFunction()“valid/modified” 검사; 보호된 및잠긴 블록 건너뛰기; 쓰기 수행altAbbruch angefordertNvM_CancelWriteAll()NvM_CancelWriteAll()NvM_MainFunction()현재 블록을 비파괴적으로 종료,나머지 블록: NVM_REQ_CANCELEDBswM_NvM_CurrentJobMode(WriteAll, NVM_REQ_CANCELED)정상 완료BswM_NvM_CurrentJobMode(WriteAll, Ergebnis)Regel NvMWriteAllFinished:EcuM_GoDown

시퀀스 다이어그램: NvM_WriteAll을 사용한 셧다운 및 NvM_CancelWriteAll에 의한 선택적 중단. 출처: [SWS_NvM_00092] [SWS_NvM_00682] [SWS_NvM_00238] [SWS_NvM_00237] [SWS_NvM_00889], Mode Management Guide 37쪽

개별 요청: 큐, 우선순위 및 피드백

NvM_ReadBlock, NvM_WriteBlock 또는 NvM_RestoreBlockDefaults와 같은 개별 블록 요청은 비동기적입니다. 함수는 매개변수를 인계받아 요청을 큐에 등록하고 리턴합니다 [SWS_NvM_00195] [SWS_NvM_00208] [SWS_NvM_00224]. 그 후 블록 결과는 NVM_REQ_PENDING 상태가 됩니다 [SWS_NvM_00185]. 큐 오버플로 시 함수는 E_NOT_OK을 반환합니다 [SWS_NvM_00184]. 블록은 이미 대기 중이거나 처리 중이 아닐 때만 큐에 등록됩니다 [SWS_NvM_00385].

다른 서비스들은 NvM_SetDataIndex, [SWS_NvM_00448] 및 NvM_GetErrorStatus와 같이 호출자의 컨텍스트에서 동기적으로 작동합니다 (SWS NvM 158쪽). NvM_CancelJobs는 블록의 대기 중인 요청을 제거하지만, 실행 중인 작업은 계속 진행됩니다 [SWS_NvM_00536] [SWS_NvM_00537].

처리는 우선순위에 따라 직렬화되어 수행됩니다 [SWS_NvM_00162]. NvMJobPrioritization이 활성화된 경우 NvM은 두 개의 큐를 사용하며, 그중 하나는 Immediate 쓰기 요청(충돌 데이터)을 위한 것입니다 [SWS_NvM_00564] [SWS_NvM_00378]. 이러한 NvM_WriteBlock는 대기 중인 작업을 파괴적으로 중단합니다 [SWS_NvM_00300]. NvM_MainFunction은 중단된 작업을 이후에 다시 시작합니다 [SWS_NvM_00258]. 우선순위 지정이 없으면 NvM은 Immediate 작업 없이 수신된 순서대로 작업합니다 [SWS_NvM_00379]. 다중 블록 요청 중에 수신된 요청은 큐에 등록된 후 이어서 실행됩니다 [SWS_NvM_00568] [SWS_NvM_00569].

각 비동기 요청은 오류/상태 필드에 결과를 저장합니다 [SWS_NvM_00175]. NvM_GetErrorStatus은 이 필드를 읽습니다 [SWS_NvM_00015]. 이외에도 두 가지 선택적 피드백 경로가 있습니다:

피드백이 있는 비동기 단일 블록 작업NvM-AnwenderNvMBswMBSW-TaskMemIfNvM_WriteBlock(BlockId, NvM_SrcPtr)einreihen, Blockergebnis:NVM_REQ_PENDINGoptNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, NVM_REQ_PENDING)E_OKloop쓰기 작업이 완료될 때까지NvM_MainFunction()Schreibauftrag / Status abfragenJob-ErgebnisoptNvMSingleBlockCallback konfiguriertNvM_SingleBlockCallbackFunction(NVM_WRITE_BLOCK, JobResult)optNvMBswMBlockStatusInformation == TRUEBswM_NvM_CurrentBlockMode(BlockId, Ergebnis)NvM_GetErrorStatus(BlockId, RequestResultPtr)E_OK, Ergebnis

시퀀스 다이어그램: BswM 상태 알림, 콜백 및 상태 조회가 포함된 비동기 쓰기 요청. 출처: [SWS_NvM_00185] [SWS_NvM_00347] [SWS_NvM_00740] [SWS_NvM_00890] [SWS_NvM_00891], SWS NvM 160쪽

RAM 블록 동기화 및 블록 상태

NvM에는 애플리케이션의 RAM 블록과 데이터를 동기화하는 두 가지 방법이 있습니다. 암시적 동기화의 경우 이 RAM 블록에서 직접 작업합니다. 애플리케이션은 블록을 제공하고 요청이 완료될 때까지 해당 블록에 접근하지 않습니다 [SWS_NvM_00698] [SWS_NvM_00699]. 애플리케이션이 NULL_PTR를 전달하면 NvM은 영구 RAM 블록을 사용합니다 [SWS_NvM_00898] [SWS_NvM_00900]. 포인터를 통한 임시 블록도 여전히 가능합니다 [SWS_NvM_00278]. PRAM 서비스는 항상 영구 RAM 블록에서 작동합니다 [SWS_NvM_00765] [SWS_NvM_00794]. RTE 시나리오에서 이 블록은 Per-Instance-Memory입니다 (NV Data Handling 32쪽).

명시적 동기화(NvMBlockUseSyncMechanism)의 경우 교환은 내부 RAM 미러를 통해 실행됩니다 [SWS_NvM_00511]. 이는 정확히 하나만 존재하며, 영향을 받는 가장 큰 블록에 맞추어 크기가 결정됩니다 [SWS_NvM_00513]. NvM은 NvMWriteRamBlockToNvCallback 또는 NvMReadRamBlockFromNvCallback를 호출합니다 [SWS_NvM_00515] [SWS_NvM_00516]. 콜백이 E_NOT_OK을 반환하면 다음 주기에서 호출을 최대 NvMRepeatMirrorOperations회까지 재시도합니다 [SWS_NvM_00579] [SWS_NvM_00840]. 콜백 전까지 애플리케이션은 여전히 RAM 블록을 수정할 수 있습니다 [SWS_NvM_00705]. 블록은 명시적 동기화 또는 영구 RAM 블록 중 하나만 사용하며, 둘 다 사용하지는 않습니다 [SWS_NvM_00904]. 이 메커니즘을 통해 NvBlockSwComponentType을 통한 공유 블록이 가능합니다 (NV Data Handling 12쪽).

명시적 동기화를 사용한 쓰기Anwendung (SW-C/RTE)NvMBSW-TaskMemIfRAM 블록을 데이터로 채움NvM_WriteBlock(BlockId, NULL_PTR)E_OKRAM 블록은 콜백 전까지여전히 수정될 수 있음NvM_MainFunction()NvM_WriteRamBlockToNvm(NvMBuffer)(NvMWriteRamBlockToNvCallback)RAM-Block in RAM-Mirror kopierenaltE_OK 반환E_OKMirror-Inhalt in NV-Block schreibenE_NOT_OK 반환E_NOT_OK다음 NvM_MainFunction에서 콜백erneut aufrufen (max. NvMRepeatMirrorOperations)

시퀀스 다이어그램: E_NOT_OK에서의 재시도를 포함한 RAM 미러를 통한 명시적 동기화 쓰기 요청. 출처: [SWS_NvM_00515] [SWS_NvM_00705] [SWS_NvM_00579] [SWS_NvM_00840], NV Data Handling 27쪽

영구 RAM 블록 또는 미러에 대해 NvM은 "valid"/"invalid" 상태를 유지합니다 [SWS_NvM_00128] [SWS_NvM_00132]. 세부 전이:

  • NvM_ReadBlock은 큐에 등록할 때 이미 영구 RAM 블록을 무효화합니다 [SWS_NvM_00198].
  • 성공적으로 읽은 후에는 "valid/unchanged" 상태가 됩니다 [SWS_NvM_00200].
  • 기본 데이터를 로드한 후에는 "valid/changed" 상태가 됩니다 [SWS_NvM_00366].
  • NvM_SetRamBlockStatus(…, TRUE)은 이를 변경됨으로 표시하고 백그라운드에서 CRC 재계산을 트리거합니다 [SWS_NvM_00406] [SWS_NvM_00121].
  • 성공적으로 쓴 후에는 "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) 또는 NvM_ValidateAll changed->invalid NvM_ReadBlock angenommen (permanenter RAM) changed->unchanged erfolgreich in NV geschrieben

상태 다이어그램: RAM 블록 상태 및 트리거 이벤트. 출처: [SWS_NvM_00198] [SWS_NvM_00200] [SWS_NvM_00366] [SWS_NvM_00406] [SWS_NvM_00472] [SWS_NvM_00856]

구성, 보호 메커니즘 및 파티션 참조

제한된 리소스를 위해 세 가지 API 구성 클래스가 있습니다 [SWS_NvM_00149]. 클래스 1은 Dataset 블록을 지원하지 않습니다 [SWS_NvM_00365]. 디스크립터 테이블이 생성됩니다 [SWS_NvM_00143]. 메모리 요구 사항은 구성 시 사용자가 선언합니다 [SWS_NvM_00030]. BSW 모듈은 NvBlockNeeds를 통해 이를 수행합니다 (BSWMD Template 241쪽). ECU 통합자는 이를 바탕으로 NvM 구성을 도출합니다 (Methodology 444쪽).

개별 블록을 위해 여러 보호 메커니즘을 사용할 수 있습니다:

  • 속성 필드가 쓰기 방지를 관리하며 [SWS_NvM_00054], NvMBlockWriteProt이 이를 기본값으로 활성화합니다 [SWS_NvM_00326].
  • NvMWriteBlockOnce이 설정된 블록은 한 번만 기록됩니다 [SWS_NvM_00397]. 최초 읽기 전의 쓰기 요청은 NvM이 거부합니다 [SWS_NvM_00952].
  • 잠긴 블록(NvM_SetBlockLockStatus)에 대해 NvM_WriteBlock은 E_NOT_OK를 반환합니다 [SWS_NvM_00749]. NvM_SetRamBlockStatus도 NvM_SetBlockProtection도 잠금을 변경하지 않습니다 [SWS_NvM_00754].
  • 선택 사항으로는 정적 블록 ID 헤더 [SWS_NvM_00522], 불필요한 쓰기를 방지하기 위한 CRC 비교 [SWS_NvM_00849], CSM을 통한 암호화 [SWS_NvM_00976]도 있습니다.

파티셔닝의 경우 NvM은 각각 할당된 파티션의 컨텍스트에서 인터페이스를 호출합니다. 일반 함수는 마스터 파티션에서 실행됩니다 [SWS_NvM_00969]. NvM_ReadAll 및 NvM_WriteAll는 마스터에서만 제공합니다 [SWS_NvM_00970] [SWS_NvM_00971] [SWS_NvM_CONSTR00974]. SW-C는 블록 관련 포트를 통해 NvM에 도달합니다:

오류가 발생한 경우의 동작

읽기 시 NvM은 MemIf의 메시지를 다르게 평가합니다:

그 후 여러 복구 단계가 적용됩니다:

  1. CRC 오류의 경우 구성된 읽기 재시도가 따릅니다 [SWS_NvM_00526].
  2. 중복 블록의 경우 NvM은 두 번째 복사본을 읽고 중복성을 복원하려고 시도합니다 [SWS_NvM_00199] [SWS_NvM_00531]. 실패하면 NVM_E_LOSS_OF_REDUNDANCY를 보고합니다 [SWS_NvM_00546].
  3. 마지막으로 NvM은 결과 NVM_REQ_RESTORED_DEFAULTS과 함께 기본 데이터를 로드합니다 [SWS_NvM_00202]. 이때 NV 내용은 변경되지 않은 상태로 유지됩니다 [SWS_NvM_00172].

기본 데이터가 없으면 RAM 블록은 유효하지 않은 상태로 유지됩니다 [SWS_NvM_00658] [SWS_NvM_00204]. Interpretation: 단계의 순서는 Error Description의 열거를 따를 것으로 추정됩니다 (Error Description 62쪽). 질문 (열림) 이 출처는 두 가지 점에서 요구사항과 차이가 있습니다. NVM_REQ_RESTORED_DEFAULTS 대신 NVM_REQ_RESTORED_FROM_ROM을 언급합니다. 또한 최종 실패를 일괄적으로 NVM_E_REQ_FAILED로 요약합니다. 규범적인 것은 위에 언급된 요구사항입니다.

lesefehler lesen MemIf를 통해 NV 블록 읽기 pruef MemIf 결과 및 CRC 검증 결과는? lesen->pruef erfolg NVM_REQ_OK RAM-Block VALID / UNCHANGED pruef->erfolg in Ordnung inv NVM_REQ_NV_INVALIDATED Dem 보고 없음 pruef->inv MEMIF_BLOCK_INVALID retry Lesewiederholung (NVM_MAX_NUM_OF_READ_RETRIES) pruef->retry 오류 발생, 재시도 횟수 남음 red NVM_BLOCK_REDUNDANT? pruef->red 오류 발생, 재시도 횟수 소진됨 retry->lesen zweit zweiten NV-Block lesen red->zweit 예 def Defaultdaten vorhanden? (ROM-Block / Init-Callback) red->def 아니요 zweitok zweite Kopie in Ordnung? zweit->zweitok wieder 이중화 복원; 실패 시 NVM_E_LOSS_OF_REDUNDANCY zweitok->wieder 예 zweitok->def 아니요 wieder->erfolg restore Defaults in RAM laden NVM_REQ_RESTORED_DEFAULTS def->restore 예 fail RAM 블록이 유효하지 않은 상태로 유지됨 NVM_REQ_INTEGRITY_FAILED / NVM_REQ_NOT_OK Dem에 보고 def->fail 아니요

액티비티 다이어그램: 재시도부터 중복 복사본, 기본 데이터 로드에 이르는 읽기 오류 처리. Interpretation: 순서는 Error Description의 열거를 따릅니다. 출처: [SWS_NvM_00526] [SWS_NvM_00199] [SWS_NvM_00202] [SWS_NvM_00341] [SWS_NvM_00658], Error Description 62쪽

쓰기 시 NvM은 부정적인 피드백을 NVM_MAX_NUM_OF_WRITE_RETRIES까지 카운트합니다 [SWS_NvM_00213] [SWS_NvM_00216]. 한도를 초과하면 NVM_REQ_NOT_OK을 설정하고 NVM_E_REQ_FAILED를 보고합니다 [SWS_NvM_00683] [SWS_NvM_00684] (Error Description 43쪽). 두 가지 추가 오류 양상:

  • 쓰기 검증이 실패하면 NvM은 NVM_E_VERIFY_FAILED을 보고하고 쓰기를 재시도합니다 [SWS_NvM_00528] [SWS_NvM_00529].
  • 중복 블록은 한 복사본이 성공하는 즉시 작성된 것으로 간주됩니다 [SWS_NvM_00284].

개발 오류 감지가 활성화된 경우 NvM은 잘못된 조작을 DET에 보고합니다. 예로는 NVM_E_UNINIT 및 NVM_E_BLOCK_PENDING [SWS_NvM_00614] [SWS_NvM_00615]과 NVM_E_WRITE_PROTECTED [SWS_NvM_00962]가 있습니다. 다중 블록 요청은 단일 블록이 실패하는 즉시 NVM_REQ_NOT_OK으로 종료됩니다 [SWS_NvM_00318]. 사용자는 자신의 블록 상태를 직접 확인합니다 [SWS_NvM_00694]. 읽기가 실패한 후에는 다음 쓰기 전에 유효한 데이터를 제공합니다 [SWS_NvM_00696].

더 자세한 증거

R20-11 요구사항 및 관련 문서 위치를 기반으로 생성된 AI 가이드입니다. 다른 릴리스의 문서 위치는 보충용입니다. 링크된 사양서 텍스트가 우선합니다.

NVRAM Manager (NvM)

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

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

함수 NvM_Init [SWS_NvM_00447] 📄 PDF

void NvM_Init (const NvM_ConfigType* ConfigPtr);

Service for resetting all internal variables.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: d241ed15a825 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 호출 컨텍스트

함수 NvM_Init은 NVRAM Manager의 모든 내부 변수를 동기식으로 재설정하는 데 사용됩니다[SWS_NvM_00447]. 이 함수는 전달 매개변수 ConfigPtr로 선택된 구성 데이터 레코드에 대한 포인터를 기대하며 반환값이 없습니다[SWS_NvM_00447]. 타입 4 API로서 구성 클래스 2 및 3의 일부입니다[SWS_NvM_00560], [SWS_NvM_00561]. 이 함수는 비재진입이며 BSW Mode Manager에 의해서만 호출될 수 있습니다[SWS_NvM_00447], [SWS_NvM_00693].

초기화 작업

호출되는 동안 이 함수는 다음 동작을 수행합니다:

  • 상태 머신, 작업 큐 및 요청 플래그를 포함한 모든 내부 변수를 초기값으로 재설정[SWS_NvM_00399].
  • NVM_BLOCK_DATASET 타입의 모든 NVRAM 블록의 데이터 세트 인덱스를 0으로 설정[SWS_NvM_00192].
  • 모듈 내에서 작업 처리, 큐 관리 및 CRC 재계산의 전제 조건이 되는 “INIT DONE” 신호를 내부적으로 설정[SWS_NvM_00257], [SWS_NvM_00399].

제약 사항 및 상호작용

ECU 시작 시간에 대한 엄격한 요구사항으로 인해 NvM_Init은 구성된 NVRAM 블록을 초기화하지 않습니다[SWS_NvM_00091]. 영구 RAM 블록 내용은 변경되지 않으며 동기화 콜백은 호출되지 않습니다. 이는 함수 NvM_ReadAll의 역할입니다[SWS_NvM_00400]. 또한 NvM_Init는 BSW Mode Manager에 의한 초기화가 전제되므로 하위 드라이버, 메모리 하드웨어 추상화 또는 외부 모듈을 초기화하지 않습니다[SWS_NvM_00157], [SWS_NvM_00193].

이 사용 지침은 AUTOSAR 명세 R20-11을 기반으로 자동 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_SetBlockProtection [SWS_NvM_00450] 📄 PDF

Std_ReturnType NvM_SetBlockProtection (NvM_BlockIdType BlockId, boolean ProtectionEnabled);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: f3fd900b11e8 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 의미론

동기 및 재진입 함수 NvM_SetBlockProtection은 관리 블록의 해당 속성을 통해 NVRAM 블록에 대한 쓰기 방지를 설정하거나 재설정하는 데 사용됩니다[SWS_NvM_00450], [SWS_NvM_00016]. 이 함수는 API 구성 클래스 3에 할당되어 있습니다[SWS_NvM_00560]. NvM 모듈 환경은 매개변수 ProtectionEnabled를 통해 쓰기 방지를 선택적으로 활성화하거나 비활성화할 수 있습니다[SWS_NvM_00578]. 이 함수는 성공적으로 실행되면 E_OK을, 오류가 발생하면 E_NOT_OK을 반환합니다[SWS_NvM_00450].

제약 사항 및 동시성

쓰기 방지 변경은 매개변수 NvMBlockWriteProt의 값과 관계없이 NvMWriteBlockOnce이 FALSE로 구성된 블록에 대해서만 허용됩니다[SWS_NvM_00325]. NvMWriteBlockOnce가 TRUE로 구성된 경우 쓰기 방지를 활성화하거나 비활성화할 수 없습니다[SWS_NvM_00398], [SWS_NvM_00577]. 이 보호는 읽기 작업 후에도 해제될 수 없습니다[SWS_NvM_00314], [SWS_NvM_00316], [SWS_NvM_00784]. 또한 NvM_SetBlockLockStatus을 통해 설정된 잠금 상태는 NvM_SetBlockProtection에 의해 수정될 수 없습니다[SWS_NvM_00754]. 동일한 블록에 대한 단일 블록 작업이 활성 상태이거나 대기열에 있는 동안에는 호출이 허용되지 않습니다[SWS_NvM_00704].

오류 처리

개발 오류 감지(DET)가 활성화된 경우 이 함수는 특정 오류 상태를 보고합니다:

  • NvM 모듈이 아직 초기화되지 않은 경우 NVM_E_UNINIT [SWS_NvM_00606].
  • 전달된 BlockId이 유효 범위를 벗어난 경우 NVM_E_PARAM_BLOCK_ID[SWS_NvM_00609].
  • 블록에 대한 작업이 이미 활성 상태이거나 대기열에 있는 경우 NVM_E_BLOCK_PENDING [SWS_NvM_00607].
  • 블록이 NvMWriteBlockOnce = TRUE로 구성된 경우 NVM_E_BLOCK_CONFIG [SWS_NvM_00608].
  • 블록이 잠겨 있는 경우 NVM_E_BLOCK_LOCKED [SWS_NvM_00759].

이 사용 지침은 AUTOSAR Classic R20-11의 NVRAM Manager 명세를 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_GetErrorStatus [SWS_NvM_00451] 📄 PDF

Std_ReturnType NvM_GetErrorStatus (NvM_BlockIdType BlockId, NvM_RequestResultType* RequestResultPtr);

Service to read the block dependent error/ status information.

함수 NvM_SetRamBlockStatus [SWS_NvM_00453] 📄 PDF

Std_ReturnType NvM_SetRamBlockStatus (NvM_BlockIdType BlockId, boolean BlockChanged);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: f2f026a0e790 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

동기 및 재진입 함수 NvM_SetRamBlockStatus은 영구 RAM 블록 또는 명시적 동기화가 있는 블록에 대해 RAM 블록 상태를 설정하는 데 사용됩니다[SWS_NvM_00453]. 이 함수는 구성 매개변수 NvMSetRamBlockStatusApi를 통해 활성화된 경우 API 구성 클래스 2 및 3에서 사용할 수 있습니다[SWS_NvM_00561], [SWS_NvM_00560], [SWS_NvM_00408].

매개변수 BlockChanged을 통해 블록을 유효하고 변경됨(TRUE)으로 표시할지 또는 유효하지 않고 변경되지 않음(FALSE)으로 표시할지 제어합니다[SWS_NvM_00453], [SWS_NvM_00406]. TRUE가 전달되면 모듈은 데이터의 유효성을 가정합니다[SWS_NvM_00241]. 함수는 상태 변경이 성공하면 E_OK을 반환하고 오류 발생 시 E_NOT_OK을 반환합니다[SWS_NvM_00453].

BlockChanged이 TRUE로 설정되고 NvMCalcRamBlockCrc이 구성되어 있는 경우, 이 함수는 백그라운드에서 NvM_MainFunction의 체크섬 재계산을 요청합니다[SWS_NvM_00121]. 명시적 동기화가 있는 영구 RAM이 없는 블록의 경우, 이 작업은 데이터 수집을 위해 쓰기 콜백을 사용합니다[SWS_NvM_00906]. 이것이 실패하면 NvM_MainFunction 호출당 구성된 재시도가 수행됩니다[SWS_NvM_00907], [SWS_NvM_00908]. 모든 시도가 실패하더라도 작업은 종료된 것으로 간주되며 블록은 변경된 상태로 유지됩니다[SWS_NvM_00909].

호출 전에 NvM 모듈이 초기화되어 있어야 합니다[SWS_NvM_00711]. 개발 오류 감지가 활성화된 경우, 이 함수는 초기화되지 않은 모듈에 대해 NVM_E_UNINIT을[SWS_NvM_00643], 유효하지 않은 BlockId에 대해 NVM_E_PARAM_BLOCK_ID을[SWS_NvM_00645], 이미 실행 중이거나 대기열에 있는 작업에 대해 NVM_E_BLOCK_PENDING을 보고합니다[SWS_NvM_00644]. 단일 블록 작업이 활성 상태인 동안에는 해당 블록에 대해 이 함수를 호출해서는 안 됩니다[SWS_NvM_00704]. NvM_SetBlockLockStatus를 통해 설정된 블록 잠금은 이를 통해 변경할 수 없습니다[SWS_NvM_00754].

이 사용 지침은 AUTOSAR 명세 R20-11을 기반으로 자동 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_SetBlockLockStatus [SWS_NvM_00548] 📄 PDF

void NvM_SetBlockLockStatus (NvM_BlockIdType BlockId, boolean BlockLocked);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 9c1d841bb0f7 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 호출 컨텍스트

동기식 및 재진입 가능 함수 NvM_SetBlockLockStatus은 영구적으로 구성된 RAM 블록 또는 NVRAM 블록의 명시적 동기화를 잠그거나(BlockLocked = TRUE) 잠금 해제(BlockLocked = FALSE)하는 데 사용됩니다 [SWS_NvM_00548]. 이 함수는 API 구성 클래스 2 및 3의 기능 범위에 속합니다 [SWS_NvM_00561], [SWS_NvM_00560]. 이 함수는 ServicePort 인터페이스에 포함되지 않으며 주로 DCM 및 복합 디바이스 드라이버(CDD)에 의해 호출됩니다 [SWS_NvM_00732].

제약 사항 및 상호작용

이 호출은 영구 RAM 블록이 있거나 명시적 동기화가 구성된 NVRAM 블록에만 영향을 미치며; 다른 모든 블록에는 아무런 영향을 미치지 않습니다 [SWS_NvM_00732]. 블록이 잠기면(BlockLocked = TRUE), NvM은 연결된 NV 데이터가 수정되지 않도록 보장합니다: 블록은 NvM_WriteAll에서 건너뛰어지고 서비스 NvM_WriteBlock, NvM_WritePRAMBlock, NvM_InvalidateNvBlock 및 NvM_EraseNvBlock은 거부됩니다 [SWS_NvM_00751]. 다음 시작 시 NvM은 NvM_ReadBlock 또는 NvM_ReadPRAMBlock에서 해당 블록이 NV 메모리로부터 로드되도록 보장합니다 [SWS_NvM_00752]. 설정된 잠금 상태는 NvM_SetRamBlockStatus이나 NvM_SetBlockProtection를 통해서도 수정할 수 없습니다 [SWS_NvM_00754]. BlockLocked = FALSE를 전달하면 정규 처리가 복원됩니다 [SWS_NvM_00753].

오류 처리

개발 오류 감지(DET)가 활성화된 경우 함수는 특정 개발 오류를 보고합니다:

  • 호출 시점에 NvM 모듈이 아직 초기화되지 않은 경우 NVM_E_UNINIT [SWS_NvM_00728].
  • 매개변수 BlockId이 허용된 범위를 벗어난 경우 NVM_E_PARAM_BLOCK_ID [SWS_NvM_00731].
  • 참조된 NVRAM 블록이 매개변수 NvMWriteBlockOnce = TRUE로 구성된 경우 NVM_E_BLOCK_CONFIG [SWS_NvM_00730].

이 사용 지침은 AUTOSAR Classic 사양 R20-11을 기반으로 하며 API의 호출, 보호 효과 및 오류 처리에 관한 요구 사항을 요약합니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_CancelJobs [SWS_NvM_00535] 📄 PDF

Std_ReturnType NvM_CancelJobs (NvM_BlockIdType BlockId);

Service to cancel all jobs pending for a NV block.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 692d02b963f0 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 의미론

NvM.h을 통해 사용 가능한 함수 NvM_CancelJobs은 특정 NVRAM 블록에 대해 대기열에 대기 중인 모든 작업을 동기식으로 취소하는 데 사용됩니다 [SWS_NvM_00535], [SWS_NvM_00536]. 이 함수는 재진입 가능하도록 설계되었으며, 해당 NVRAM 블록의 블록 디스크립터를 고유하게 식별하는 BlockId를 매개변수로 기대합니다 [SWS_NvM_00535]. 이 호출은 대기 중인 작업을 대기열에서 성공적으로 제거할 수 있었던 경우 E_OK을 반환하고, 지정된 블록에 대한 작업을 대기열에서 찾을 수 없는 경우 E_NOT_OK을 반환합니다 [SWS_NvM_00535].

흐름 및 동시성

함수 호출 시점에 이미 활발히 처리 중인 작업은 NvM_CancelJobs에 의해 중단되지 않고 끝까지 계속 실행됩니다 [SWS_NvM_00537]. 대기 중인 작업에 대한 취소 요청이 수락되면 서비스는 블록별 요청 결과를 사전에 NVM_REQ_CANCELED로 설정합니다 [SWS_NvM_00225], [SWS_NvM_00536]. 이러한 정리 작업의 목적은 예를 들어 파티션의 종료 또는 재시작 시 대기열을 비워 완료된 작업에 대한 향후 알림을 방지하는 것입니다 [SWS_NvM_00225].

오류 처리 및 구성

개발 오류 감지(DET)가 활성화된 경우 함수는 전제 조건을 확인합니다: 모듈이 아직 초기화되지 않은 경우 오류 NVM_E_UNINIT이 보고됩니다 [SWS_NvM_00648]. 전달된 BlockId가 유효한 범위를 벗어나는 경우 DET 메시지 NVM_E_PARAM_BLOCK_ID이 발생합니다 [SWS_NvM_00649]. NvM_CancelJobs는 타입 2 API로 분류되며 API 구성 클래스 2 및 3에서 사용할 수 있습니다 [SWS_NvM_00561], [SWS_NvM_00560].

이 사용 지침은 AUTOSAR 사양을 기반으로 자동 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_ReadBlock [SWS_NvM_00454] 📄 PDF

Std_ReturnType NvM_ReadBlock (NvM_BlockIdType BlockId, void* NvM_DstPtr);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 423f54bb75f5 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 의미론

함수 NvM_ReadBlock은 비휘발성(NV) 메모리에서 연관된 RAM 블록으로 페이로드 데이터를 비동기 복사하는 역할을 합니다 [SWS_NvM_00010], [SWS_NvM_00454]. 이 호출은 재진입 가능합니다 [SWS_NvM_00454]. 매개변수를 수락하고 판독 요청을 내부 작업 큐에 큐잉하며 성공적으로 수락되면 E_OK를, 거부되면 E_NOT_OK를 즉시 반환합니다 [SWS_NvM_00195], [SWS_NvM_00454].

포인터 NvM_DstPtr이 전달되면 블록 구성과 다르게 데이터를 임시 RAM 버퍼로 읽어올 수 있습니다. 이 시나리오에서 유효하지 않은 NULL 포인터는 DET 오류로 이어집니다 [SWS_NvM_00196], [SWS_NvM_00278]. 구성된 영구 RAM 블록은 큐잉 시점 또는 작업 처리 시작 시 즉시 유효하지 않은 것으로 표시됩니다 [SWS_NvM_00198]. 성공적인 복사 작업 후에만 RAM 블록이 유효하고 변경되지 않은 것으로 간주되며 [SWS_NvM_00200], 작업 결과는 NVM_REQ_OK으로 전환됩니다 [SWS_NvM_00206].

오류 처리 및 데이터 무결성

블록에 대해 체크섬이 활성화된 경우(NvMCalRamBlockCrC == TRUE), 작업은 복사 후 재계산을 요청합니다 [SWS_NvM_00201]:

  • CRC 오류 발생 시 NVM_E_INTEGRITY_FAILED이 DEM에 보고됩니다 [SWS_NvM_00203]. 존재하는 경우 기본값이 로드되고 결과는 NVM_REQ_RESTORED_DEFAULTS로 설정됩니다 [SWS_NvM_00202]. ROM 데이터 및 초기화 콜백이 없으면 NVM_REQ_INTEGRITY_FAILED가 발생합니다 [SWS_NvM_00204].
  • 메모리 드라이버가 MEMIF_JOB_FAILED을 보고하고 대체 값을 사용할 수 없는 경우 작업은 NVM_REQ_NOT_OK로 종료됩니다 [SWS_NvM_00359].

블록 타입의 특성

  • Redundant: 첫 번째 사본 읽기에 실패하면 두 번째 NV 사본이 자동으로 사용됩니다 [SWS_NvM_00199]. 두 사본 모두 유효하지 않은 경우 전체 블록이 무효화됩니다 [SWS_NvM_00317].
  • Dataset: 데이터 세트 인덱스를 통해 선택된 블록이 유효하지 않은 것으로 표시된 경우 RAM으로의 복사가 수행되지 않습니다 [SWS_NvM_00355].
  • Write-Once: NVM_WRITE_BLOCK_ONCE이 설정된 상태에서 일관되게 읽힌 블록은 영구적으로 쓰기 방지됩니다 [SWS_NvM_00316].

이 텍스트는 AI에 의해 생성되었으며 R20-11 릴리스의 사양만을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_WriteBlock [SWS_NvM_00455] 📄 PDF

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

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: d2775f30ff1b 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 NvM_WriteBlock은 RAM 블록의 데이터를 할당된 NV 블록으로 복사하는 데 사용됩니다[SWS_NvM_00455], [SWS_NvM_00410]. 호출은 재진입 가능하고 비동기식으로 실행됩니다: 함수는 전달된 매개변수 BlockId 및 NvM_SrcPtr를 인계받아 쓰기 작업을 내부 작업 큐에 대기시키고 즉시 반환합니다[SWS_NvM_00208]. 반환값은 E_OK으로 작업의 성공적인 수락을 알리거나 E_NOT_OK로 작업의 거부를 알립니다[SWS_NvM_00455].

매개변수화 및 데이터 소스와 관련하여 다음 요구사항이 적용됩니다:

  • NvM_SrcPtr을 통해 유효한 RAM 주소가 전달되면 쓰기 작업은 이 버퍼를 사용합니다[SWS_NvM_00210]. 이를 통해 실제로 영구적으로 구성된 블록 또는 명시적 동기화의 경우에도 임시 RAM 블록을 저장할 수 있습니다[SWS_NvM_00280].
  • 구성된 영구 RAM 블록은 유효한 것으로 간주되거나 복사 작업 전에 자동으로 유효성이 검증됩니다 [SWS_NvM_00303].
  • NV 블록에 체크섬이 구성되어 있는 경우, 작업은 쓰기 작업 전에 CRC 재계산을 요청합니다 [SWS_NvM_00212].
  • 데이터셋 블록(NVM_BLOCK_DATASET)의 경우, 관리 블록에 저장된 데이터 인덱스를 통해 대상이 선택됩니다 [SWS_NvM_00338].
  • 이중화 블록(NVM_BLOCK_REDUNDANT)의 경우, 최소 하나의 사본이 성공적으로 기록되면 작업이 NVM_REQ_OK(으)로 완료됩니다 [SWS_NvM_00284].
  • NvMWriteBlockOnce == TRUE이(가) 설정된 경우, 작업은 쓰기가 성공한 후 관리 블록의 쓰기 방지를 즉시 활성화합니다 [SWS_NvM_00328].
  • 예약된 블록 ID 1에 대한 쓰기 요청은 NvMDynamicConfiguration이(가) 활성화된 경우에만 허용됩니다 [SWS_NvM_00311].

오류 처리 및 동시성:

  • 개발 오류 감지가 활성화된 경우, NvM_WriteBlock은(는) 모듈이 초기화되지 않은 경우 DET 오류 NVM_E_UNINIT을(를) 보고하고 [SWS_NvM_00619] 동일한 블록이 이미 처리 중이거나 큐에 대기 중인 경우 NVM_E_BLOCK_PENDING을(를) 보고합니다 [SWS_NvM_00620]. 임시 버퍼에 소스 포인터가 누락된 경우 DET 매개변수 오류가 발생합니다 [SWS_NvM_00280].
  • 메모리 인터페이스의 부정적인 피드백은 재시도 카운터를 증가시키며, NVM_MAX_NUM_OF_WRITE_RETRIES을(를) 초과하면 작업이 NVM_REQ_NOT_OK(으)로 종료됩니다 [SWS_NvM_00213], [SWS_NvM_00216].
  • 블록이 즉각 우선순위(Immediate Priority)로 구성된 경우, 쓰기 요청이 다음에 처리되도록 NvM_WriteBlock은(는) 현재 실행 중인 작업을 파괴적으로 중단합니다 [SWS_NvM_00300].

이 사용 지침은 AUTOSAR 사양을 기반으로 자동 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_RestoreBlockDefaults [SWS_NvM_00456] 📄 PDF

Std_ReturnType NvM_RestoreBlockDefaults (NvM_BlockIdType BlockId, void* NvM_DestPtr);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 01efa016ebb0 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 의미론

함수 NvM_RestoreBlockDefaults은 할당된 RAM 블록에서 기본 데이터를 복원합니다([SWS_NvM_00456], [SWS_NvM_00012]). 이 함수는 비동기식으로 작동합니다. 호출 후 매개변수를 수락하고 요청을 내부 작업 대기열에 큐잉하며, 성공적으로 수락되면 E_OK을, 거부되면 E_NOT_OK를 즉시 반환합니다([SWS_NvM_00456], [SWS_NvM_00224]). 출력 매개변수 NvM_DestPtr을 통해 유효한 RAM 주소가 전달되면 이를 대상 주소로 사용합니다([SWS_NvM_00435]). 영구 RAM 블록 또는 동기화 콜백이 구성되어 있음에도 불구하고 ROM 데이터를 임시 RAM 블록으로 복사하려면 호출자는 반드시 NULL가 아닌 포인터를 전달해야 합니다([SWS_NvM_00436]).

오류 처리 및 제약 조건

이 함수는 재진입 불가능([SWS_NvM_00456])하며 API 구성 클래스 2 및 3의 일부입니다([SWS_NvM_00561], [SWS_NvM_00560]). 개발 오류 감지(DET)가 활성화된 경우 모듈이 아직 초기화되지 않았으면 NVM_E_UNINIT을([SWS_NvM_00625]), 유효하지 않은 BlockId의 경우 NVM_E_PARAM_BLOCK_ID를 보고하며([SWS_NvM_00630]), 영구 구성된 블록에 대해 임시 복사를 위한 유효한 대상 포인터가 전달되지 않은 경우 매개변수 오류를 보고합니다([SWS_NvM_00436]). 블록이 NVM_BLOCK_DATASET 타입이고 최소 하나의 ROM 블록이 존재하며 현재 데이터 인덱스가 NV 블록을 가리키는 경우 함수는 동기식으로 E_NOT_OK와 함께 실패합니다([SWS_NvM_00353]).

작업 처리 및 상호작용

비동기 작업 처리의 일환으로 이 서비스는 구성된 ROM 블록에서 기본값을 로드합니다([SWS_NvM_00267]). 영구 RAM 블록이 요청되었거나 명시적 동기화 콜백(NvMReadRamBlockFromNvCallback)이 사용되는 경우, 복사 작업 전 또는 콜백 호출 전에 RAM 블록이 무효화됩니다([SWS_NvM_00227]). 성공적인 복사 작업 후 또는 동기화 콜백이 E_OK을 반환한 후 RAM 블록이 유효화되고 변경된 것으로 표시됩니다([SWS_NvM_00228]). 블록에 대해 체크섬이 구성된 경우 작업은 마지막으로 CRC 재계산을 요청합니다([SWS_NvM_00229]). 동일한 복원 로직이 메모리 읽기 접근 오류 또는 CRC 오류 발생 시 대체 메커니즘으로 NvM_ReadBlock 및 NvM_ReadAll에서도 사용됩니다([SWS_NvM_00202], [SWS_NvM_00293], [SWS_NvM_00657]).

이 사용 지침은 AUTOSAR Classic R20-11 사양을 기반으로 자동으로 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_EraseNvBlock [SWS_NvM_00457] 📄 PDF

Std_ReturnType NvM_EraseNvBlock (NvM_BlockIdType BlockId);

Service to erase a NV block.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: e5129c2997d6 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

API 구성 클래스 3([SWS_NvM_00560])의 재진입 가능 비동기 함수 NvM_EraseNvBlock([SWS_NvM_00457])은 전달된 BlockId을 기반으로 비휘발성 메모리 블록을 지우는 역할을 합니다. 쓰기 방지가 활성화되어 있지 않은 경우 함수는 매개변수를 수락하고 지우기 작업을 내부 작업 대기열에 큐잉하며 즉시 반환합니다([SWS_NvM_00231], [SWS_NvM_00418]). 반환값 E_OK은 작업의 성공적인 수락을 나타내며 E_NOT_OK은 거부를 나타냅니다([SWS_NvM_00457]).

호출 전 NvM 모듈이 완전히 초기화되어 있어야 합니다([SWS_NvM_00715]). 큐잉 후 작업이 대기열에서 제거되기 전까지 쓰기 방지는 다시 검사되지 않습니다([SWS_NvM_00662]). NVM_BLOCK_REDUNDANT 타입의 중복 블록의 경우 두 중복 NV 블록이 모두 지워져야만 지우기 작업이 성공한 것으로 간주됩니다([SWS_NvM_00269]). 할당된 RAM 블록의 데이터 콘텐츠는 작업 처리를 통해 항상 변경되지 않은 상태를 유지합니다([SWS_NvM_00416]).

데이터 세트 블록의 ROM 블록이 주소 지정되거나([SWS_NvM_00661]) 블록이 NvM_SetBlockLockStatus을 통해 잠긴 경우([SWS_NvM_00751]) 호출이 거부됩니다. 개발 오류 감지(DET)가 활성화된 경우 함수는 초기화되지 않은 모듈에 대해 NVM_E_UNINIT을([SWS_NvM_00631]), 유효하지 않은 BlockId에 대해 NVM_E_PARAM_BLOCK_ID를([SWS_NvM_00635]), 차단된 블록에 대해 NVM_E_BLOCK_LOCKED을 보고합니다([SWS_NvM_00757]). 블록에 즉시 우선순위("immediate priority")가 없거나 표준 우선순위가 구성된 경우, DET가 활성화되어 있으면 오류 NVM_E_BLOCK_CONFIG이 보고되고 E_NOT_OK이 반환됩니다([SWS_NvM_00357], [SWS_NvM_00636]). 이후 비동기 실행이 실패하면 요청 상태가 NVM_REQ_NOT_OK로 설정되고([SWS_NvM_00271]) NVM_E_REQ_FAILED이 DEM에 보고됩니다([SWS_NvM_00663]).

이 사용 지침은 명세를 기반으로 자동 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_InvalidateNvBlock [SWS_NvM_00459] 📄 PDF

Std_ReturnType NvM_InvalidateNvBlock (NvM_BlockIdType BlockId);

Service to invalidate a NV block.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: a20887273850 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 NvM_InvalidateNvBlock은 NV 블록을 무효화하기 위한 API 구성 클래스 3의 비동기 및 재진입 가능 서비스입니다 [SWS_NvM_00459], [SWS_NvM_00560]. 호출 조건으로 NvM 모듈이 모듈 환경에 의해 사전에 초기화되어 있어야 합니다 [SWS_NvM_00717]. 호출은 매개변수 BlockId를 전달받아 쓰기 보호가 비활성화된 경우 요청을 대기열에 큐잉하고 E_OK와 함께 반환됩니다 [SWS_NvM_00239], [SWS_NvM_00424]. 작업을 수락할 수 없는 경우 함수는 E_NOT_OK을 반환합니다 [SWS_NvM_00459].

BlockId을 통해 데이터셋 블록(Dataset)의 ROM 블록이 지정된 경우 호출은 E_NOT_OK과 함께 동기식으로 거부됩니다 [SWS_NvM_00664]. 블록이 이전에 NvM_SetBlockLockStatus을 통해 잠긴 경우, NvM은 작업을 거부하고 [SWS_NvM_00751] 개발 인터페이스가 활성화되어 있으면 DET 오류 NVM_E_BLOCK_LOCKED를 보고합니다 [SWS_NvM_00756]. 블록이 이미 대기열에 있거나 실행 중인 경우 DET 메시지 NVM_E_BLOCK_PENDING이 발생합니다 [SWS_NvM_00639].

실제 비동기 작업은 다음 제약 조건을 고려하여 참조된 NV 블록 [SWS_NvM_00421]을 무효화합니다:

  • 중복 블록(NVM_BLOCK_REDUNDANT)의 경우 두 중복 NV 블록이 모두 성공적으로 무효화된 후에만 작업 결과가 NVM_REQ_OK로 설정되며 [SWS_NvM_00274]; 동일한 메커니즘이 NvM_FirstInitAll에도 적용됩니다 [SWS_NvM_00919], [SWS_NvM_00920].
  • NVM_WRITE_BLOCK_ONCE이 포함된 블록의 경우 작업은 쓰기 보호를 변경하지 않고 유지합니다 [SWS_NvM_00960]. 읽기 프로세스가 선행되지 않은 경우 작업은 DET 오류 NVM_E_WRITE_ONCE_STATUS_UNKNOWN를 보고합니다 [SWS_NvM_00958].
  • 비동기 처리 중 오류가 발생하면 요청 결과는 NVM_REQ_NOT_OK으로 설정되고 [SWS_NvM_00275] 생산 오류 NVM_E_REQ_FAILED가 DEM으로 전송됩니다 [SWS_NvM_00666].

이 사용 지침은 AI에 의해 생성되었으며 AUTOSAR R20-11의 사양 데이터만을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_ReadPRAMBlock [SWS_NvM_00764] 📄 PDF

Std_ReturnType NvM_ReadPRAMBlock (NvM_BlockIdType BlockId);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 657ec2501bdc 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용

비동기 및 재진입 가능 함수 [SWS_NvM_00764]은 NV 블록의 데이터를 연결된 영구 RAM 블록으로 복사하는 데 사용됩니다. 호출은 BlockId을 전달받아 내부 작업 대기열에 읽기 요청을 큐잉하고 즉시 반환됩니다 [SWS_NvM_00766]. 반환값 E_OK은 작업 수락을 확인하는 반면, E_NOT_OK는 거부를 알립니다 [SWS_NvM_00764]. 이 함수는 API 구성 클래스 2 및 3의 기능 범위에 속합니다 [SWS_NvM_00560], [SWS_NvM_00561].

동작 순서 및 동기화

작업이 성공적으로 큐에 등록되거나 처리가 시작되면 영구 RAM 블록은 즉시 무효화됩니다 [SWS_NvM_00767]. 블록에 대해 명시적 동기화가 설정된 경우 애플리케이션은 동기화 루틴이 도착할 때까지 RAM 블록을 수정할 수 있으며; 이 경우 무효화는 NvMReadRamBlockFromNvCallback 호출 직전에 수행됩니다 [SWS_NvM_00706], [SWS_NvM_00767]. NV 데이터가 오류 없이 RAM으로 전송되면 작업은 NVM_REQ_OK 상태로 완료됩니다 [SWS_NvM_00765], [SWS_NvM_00775].

오류 처리 및 중복성

타입 NVM_BLOCK_REDUNDANT 블록의 경우 첫 번째 읽기 시도가 실패하면 작업은 두 번째 블록에 대해 자동으로 읽기 시도를 시작합니다 [SWS_NvM_00768]. 데이터셋(NVM_BLOCK_DATASET)의 경우 인덱스를 통해 선택된 NV 블록이 일관되지 않으면 복사가 차단됩니다 [SWS_NvM_00771]; 인덱스가 ROM 데이터를 가리키는 경우 해당 데이터가 로드되고 결과는 NVM_REQ_OK로 설정됩니다 [SWS_NvM_00772]. 기본 데이터가 구성되어 있고 유효하지 않은 RAM 상태에서 NV 블록을 읽을 수 없는 경우 암시적 복구가 수행되어 [SWS_NvM_00575], RAM 블록을 유효하고 변경된 상태로 분류합니다 [SWS_NvM_00774]; 구성된 기본값이 없으면 복구가 생략됩니다 [SWS_NvM_00572]. 이전에 NvM_SetBlockLockStatus가 활성화된 경우 NV 메모리로부터의 다시 로드가 강제 적용됩니다 [SWS_NvM_00752].

이 사용 지침은 AUTOSAR CP R20-11 사양 버전을 기반으로 자동 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_WritePRAMBlock [SWS_NvM_00793] 📄 PDF

Std_ReturnType NvM_WritePRAMBlock (NvM_BlockIdType BlockId);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 5a26959f15b3 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

재진입 가능한 비동기 함수 NvM_WritePRAMBlock은 영구 RAM 블록의 데이터를 연결된 NV 블록에 기록하도록 트리거합니다 [SWS_NvM_00793], [SWS_NvM_00794]. 이 함수는 API 구성 클래스 2 및 3에서 사용할 수 있습니다 [SWS_NvM_00561], [SWS_NvM_00560]. 예약된 블록 ID 1은 NvMDynamicConfiguration가 TRUE으로 설정된 경우에만 전달될 수 있습니다 [SWS_NvM_00311].

전달 시 함수는 성공적으로 수락된 경우 E_OK을 반환하거나 E_NOT_OK을 반환합니다 [SWS_NvM_00793]. 참조된 블록이 잠겨 있으면 호출은 E_NOT_OK과 함께 실패하고 모듈은 DET 오류를 보고합니다 [SWS_NvM_00797]. 블록 보호는 작업 대기열에 큐잉될 때 이미 검사되며 작업 실행 전에는 다시 유효성을 검사하지 않습니다 [SWS_NvM_00799]. NVRAM 블록에 즉시 우선순위(immediate priority)가 있는 경우 진행 중인 작업이 즉시 파괴적으로 중단되고 이 쓰기 작업이 다음으로 처리됩니다 [SWS_NvM_00800].

실제 NV 메모리로 전송하기 전에 블록이 CRC로 구성되어 있으면 작업은 CRC 재계산을 요청합니다 [SWS_NvM_00801]. 아직 유효하지 않은 영구 RAM 블록은 자동으로 검증됩니다 [SWS_NvM_00803]. 중복 블록(NVM_BLOCK_REDUNDANT)의 경우 이전 읽기 작업에서 읽지 않은 블록부터 시작하여 두 NV 블록 모두에 기록됩니다 [SWS_NvM_00807], [SWS_NvM_00808]. 쓰기 오류 시 재시도 횟수는 NVM_MAX_NUM_OF_WRITE_RETRIES에 의해 제한됩니다 [SWS_NvM_00806]; 오버플로가 발생하면 NvM은 작업 결과를 NVM_REQ_NOT_OK로 설정하고 [SWS_NvM_00804] DEM에 NVM_E_REQ_FAILED를 보고합니다 [SWS_NvM_00805].

동시성과 관련하여 다음이 적용됩니다: 암시적 동기화의 경우 애플리케이션은 호출 후 작업이 끝날 때까지 버퍼 데이터를 더 이상 수정해서는 안 되며, 읽기 액세스는 허용된 상태로 유지됩니다 [SWS_NvM_00698]. 명시적 동기화의 경우 콜백 루틴 NvMWriteRamBlockToNvCallback이 호출될 때까지 버퍼를 수정할 수 있습니다 [SWS_NvM_00705].

이 텍스트는 AI에 의해 생성되었으며 사양을 기반으로 한 기술적 오리엔테이션을 제공하기 위한 것입니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_RestorePRAMBlockDefaults [SWS_NvM_00813] 📄 PDF

Std_ReturnType NvM_RestorePRAMBlockDefaults (NvM_BlockIdType BlockId);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: ffad126a6872 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 의미론

함수 NvM_RestorePRAMBlockDefaults은 관련 영구 RAM 블록의 기본 데이터를 복원합니다([SWS_NvM_00813], [SWS_NvM_00814]). 서비스는 비동기식으로 작동하며 매개변수 BlockId을 통해 NVRAM 블록 디스크립터의 식별자를 전달받습니다([SWS_NvM_00813]). 호출 시 요청은 내부 작업 대기열에 큐잉됩니다([SWS_NvM_00815]). 반환값 E_OK은 성공적인 수락을 알리는 반면, E_NOT_OK은 거부를 나타냅니다([SWS_NvM_00813]). ROM 블록이 구성된 경우 비동기 처리의 일환으로 해당 블록에서 데이터를 로드합니다([SWS_NvM_00816]).

오류 처리 및 제약 조건

블록에 대해 ROM 기본 데이터나 콜백 루틴 NvMInitBlockCallback이 모두 저장되어 있지 않으면 블록 상태는 변경되지 않고 호출은 E_NOT_OK을 반환합니다([SWS_NvM_00884]). 개발 오류 감지(DET)가 활성화된 경우 특정 오류가 보고됩니다:

  • NVM_E_UNINIT: 모듈이 아직 초기화되지 않았습니다([SWS_NvM_00831]).
  • NVM_E_PARAM_BLOCK_ID: 전달된 BlockId이 유효 범위를 벗어납니다([SWS_NvM_00834]).
  • NVM_E_BLOCK_PENDING: 해당 블록 ID에 대한 작업이 이미 큐에 대기 중이거나 처리 중입니다([SWS_NvM_00832]).
  • NVM_E_BLOCK_WITHOUT_DEFAULTS: ROM 기본 데이터와 초기화 콜백이 모두 존재하지 않습니다([SWS_NvM_00886]).
  • NVM_E_PARAM_ADDRESS: 영구 RAM 블록과 명시적 동기화가 모두 구성되어 있지 않습니다([SWS_NvM_00894]).

동시성 및 상호 작용

이 서비스는 재진입 불가([SWS_NvM_00813])로 명시되어 있으며([SWS_NvM_00561]) API 구성 클래스 2 및 3에서 사용할 수 있습니다([SWS_NvM_00560]). 하위 읽기 작업이 실패하는 경우 동일한 복구 로직이 내부적으로 NvM_ReadPRAMBlock에서도 사용됩니다([SWS_NvM_00789], [SWS_NvM_00882]).

이 사용 지침은 AUTOSAR Classic Release R20-11 사양을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_ReadAll [SWS_NvM_00460] 📄 PDF

void NvM_ReadAll (void);

Initiates a multi block read request.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: d6aaa62b8e91 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

NvM_ReadAll 함수는 RAM 데이터 블록을 초기화하기 위한 멀티 블록 읽기 요청을 비동기식으로 시작합니다 [SWS_NvM_00460], [SWS_NvM_00158]. 이 함수는 매개변수가 없고 반환값을 제공하지 않으며 재진입이 불가능합니다 [SWS_NvM_00460]. 호출은 NvM 모듈에 요청을 알리고 즉시 반환되지만, 실제 처리는 모든 단일 블록 요청 대기열이 비워질 때까지 지연됩니다 [SWS_NvM_00243].

시작 시 요청은 시스템 시작 중에 저장된 값과 컴파일된 값을 비교하여 구성 ID의 유효성을 검사합니다 [SWS_NvM_00073], [SWS_NvM_00246]:

  • 일치하는 경우 구성된 모든 블록에 대해 일반적인 준비가 수행됩니다 [SWS_NvM_00247].
  • NvMDynamicConfiguration == FALSE이(가) 설정되어 있으면 구성 차이는 무시됩니다 [SWS_NvM_00248].
  • NvMDynamicConfiguration == TRUE 및 NvMResistantToChangedSw == FALSE인 경우, 불일치 시 확장된 준비가 실행됩니다 [SWS_NvM_00249].

그 후 요청은 가장 낮은 블록 ID(예약된 ID 0 및 1 제외)부터 시작하여 모든 사용자 블록을 순회합니다 [SWS_NvM_00244]. NvmSelectBlockForReadall == TRUE이(가) 구성된 경우 [SWS_NvM_00118] 영구 RAM 블록 또는 동기화 콜백이 구성된 블록이 고려됩니다 NvM_ReadRamBlockFromNvm. 읽지 않았지만 선택된 블록은 NVM_REQ_BLOCK_SKIPPED 결과를 수신합니다 [SWS_NvM_00287].

이중화 블록(NVM_BLOCK_REDUNDANT)의 경우 첫 번째 읽기 시도가 실패하면 두 번째 NV 블록을 자동으로 읽습니다 [SWS_NvM_00288]. RAM으로 성공적으로 로드된 후 블록 상태는 “valid/unmodified”로, 요청 결과는 NVM_REQ_OK(으)로 설정됩니다 [SWS_NvM_00251], [SWS_NvM_00290], [SWS_NvM_00291]. NvMCalRamBlockCrC == TRUE이(가) 있는 블록의 경우 요청은 CRC 재계산을 요청합니다 [SWS_NvM_00292]. 구성된 경우 블록당 NvMSingleBlockCallback이(가) 호출되고, 마지막 블록 이후에는 MultiBlockCallback이(가) 호출됩니다 [SWS_NvM_00281].

이 사용 지침은 AUTOSAR Classic R20-11의 사양 요구사항을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 NvM_WriteAll [SWS_NvM_00461] 📄 PDF

void NvM_WriteAll (void);

Initiates a multi block write request.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: a7a2e73b7711 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 호출 컨텍스트

NvM_WriteAll 함수는 멀티 블록 쓰기 요청을 비동기식으로 시작하며 매개변수나 반환값이 없습니다 [SWS_NvM_00461]. 호출 후 함수는 NvM 모듈에 요청을 알리고 즉시 반환됩니다 [SWS_NvM_00254]. 실제 처리는 단일 블록 요청에 대한 모든 대기열이 완전히 처리될 때까지 연기됩니다 [SWS_NvM_00254]. 호출은 일반적으로 BSW Mode Manager에 의한 기본적인 셧다운 절차(Shutdown)의 일환으로 수행됩니다 [SWS_NvM_00092].

흐름 및 블록 처리

셧다운 동안 요청은 영구 RAM 블록을 연관된 NV 블록과 동기화하거나 명시적 동기화 콜백 NvM_WriteRamBlockToNvm을(를) 실행합니다 [SWS_NvM_00018]. 이때 구성 매개변수 NvMSelectBlockForWriteAll이(가) true(으)로 설정된 블록만 고려되며 [SWS_NvM_00252], 동적 구성이 활성화되어 있고 구성 ID가 일치하지 않는 경우에는 블록 1도 고려됩니다 [SWS_NvM_00310]. NVRAM 블록에 CRC가 구성된 경우 요청은 쓰기 작업 전에 재계산을 요청하고 체크섬을 업데이트합니다 [SWS_NvM_00253]. NvMWriteBlockOnce == TRUE이(가) 있는 블록의 경우 요청은 성공적인 쓰기 후 관리 블록의 쓰기 방지 플래그를 즉시 설정합니다 [SWS_NvM_00329].

동시성 및 오류 처리

  • 재진입성: 이 함수는 재진입이 불가능합니다 [SWS_NvM_00461].
  • 오류 모니터링: 무한 루프를 방지하기 위해 재시도 카운터는 MemIf 모듈의 실패한 피드백에 대한 재시도 횟수를 모니터링합니다 [SWS_NvM_00296].
  • 요청 결과: 최소 하나의 블록 처리가 실패하면 전체 결과는 NVM_REQ_NOT_OK(으)로 설정됩니다 [SWS_NvM_00318]. 기록되지 않은 구성된 블록의 경우 개별 결과 NVM_REQ_BLOCK_SKIPPED이(가) 설정됩니다 [SWS_NvM_00298]. 이중화 블록(NVM_BLOCK_REDUNDANT)의 경우 NV 블록 중 최소 하나가 성공적으로 기록되면 개별 요청은 NVM_REQ_OK(으)로 간주됩니다 [SWS_NvM_00337].
  • 취소: 실행 중인 요청은 NvM_CancelWriteAll에 의해 취소될 수 있습니다 [SWS_NvM_00019]. 이로 인해 전체 결과는 NVM_REQ_CANCELED이(가) 되며 [SWS_NvM_00237], 현재 처리 중인 블록은 비파괴적이고 데이터 일관성을 유지하며 완료됩니다 [SWS_NvM_00238].

이 텍스트는 AI에 의해 생성되었으며 가이드 역할을 합니다. AUTOSAR 사양이 결정적인 기준입니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 NvM_CancelWriteAll [SWS_NvM_00458] 📄 PDF

void NvM_CancelWriteAll (void);

Service to cancel a running Nv M_ Write All request.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 2a47a7f76a8b 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 의미론

함수 NvM_CancelWriteAll은 진행 중인 다중 블록 쓰기 작업(NvM_WriteAll)을 조기에 중단하는 데 사용됩니다 [SWS_NvM_00458], [SWS_NvM_00019]. 이 호출은 비동기식이며 재진입이 불가능하고, 매개변수를 받지 않으며 반환값을 제공하지 않습니다 [SWS_NvM_00458]. 이 함수는 취소 요청을 모듈에 직접 알리고 즉시 반환됩니다 [SWS_NvM_00232]. 이 요청은 작업 대기열에 큐잉되지 않으며, 항상 이 유형의 요청은 하나만 대기할 수 있습니다 [SWS_NvM_00420]. 호출 시점에 활성화된 작업이 없으면 호출은 아무런 영향을 미치지 않습니다 [SWS_NvM_00233].

동작 순서 및 데이터 일관성

취소는 취소 시점에 처리 중이던 NVRAM 블록의 데이터 일관성이 손상되지 않도록 수행됩니다 [SWS_NvM_00019]. 모듈은 이 활성 블록을 정상적으로 완료하고 성공 여부에 따라 해당 상태 속성을 NVM_REQ_OK 또는 NVM_REQ_NOT_OK로 설정하는 반면, 대기 중인 나머지 모든 블록은 NVM_REQ_CANCELED으로 설정됩니다 [SWS_NvM_00236]. 전체 결과는 중단된 작업의 결과에 의해 암시적으로 결정되며 [SWS_NvM_00235], 별도의 변수에 저장되고 [SWS_NvM_00393], 예약된 블록 ID 0을 지정하여 NvM_GetErrorStatus을 통해 쿼리할 수 있습니다 [SWS_NvM_00394]. 또한 선택적으로 상위 콜백(NvMMultiBlockCallback)에 알림을 전달할 수 있습니다 [SWS_NvM_00260]. NvMDrvModeSwitch을 통해 구성된 경우, 작업은 취소 후 메모리 디바이스를 저속 작동 모드(“slow-mode”)로 전환합니다 [SWS_NvM_00681].

제약 사항 및 오류 처리

NvM_CancelWriteAll의 호출은 기능적으로 제한되어 있으며 BSW Mode Manager (BswM)를 통해서만 수행되어야 합니다 [SWS_NvM_00703]. 또한 이 함수는 API 구성 클래스 2에 속합니다 [SWS_NvM_00561]. 모듈은 호출 전에 초기화되어 있어야 하며 [SWS_NvM_00716]; 개발 오류 감지(DET)가 활성화된 경우 초기화되지 않은 상태에서의 호출은 오류 메시지 NVM_E_UNINIT로 이어집니다 [SWS_NvM_00637].

이 사용 지침은 AUTOSAR 명세 R20-11을 기반으로 자동 작성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 NvM_ValidateAll [SWS_NvM_00855] 📄 PDF

void NvM_ValidateAll (void);

Initiates a multi block validation request.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 234ca1eec615 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 NvM_ValidateAll은 여러 NVRAM 블록의 비동기 검증을 트리거하며([SWS_NvM_00855]) API 구성 클래스 3에 속합니다([SWS_NvM_00560]). 재진입이 불가능하고 매개변수를 받지 않으며 반환값을 제공하지 않습니다([SWS_NvM_00855]). 호출 전에 NvM 모듈이 초기화되어 있어야 합니다([SWS_NvM_00859]).

호출 시 함수는 모듈에 요청을 알리고 즉시 반환됩니다([SWS_NvM_00858]). 그러나 실제 처리는 모든 단일 블록 작업 대기열이 완전히 처리될 때까지 지연됩니다([SWS_NvM_00858]). 작업 대기열에는 멀티 블록 작업용 공간이 총 하나만 제공됩니다([SWS_NvM_00380]). 비동기 작업의 전체 결과는 별도의 상태 변수에서 관리됩니다([SWS_NvM_00393]).

작업 처리의 일환으로 멀티 블록 결과와 영향을 받는 단일 블록 결과가 모두 사전에 NVM_REQ_PENDING으로 설정됩니다([SWS_NvM_00861]). 처리는 NvMBlockUseAutoValidation가 TRUE으로 구성된 블록만을 고려합니다([SWS_NvM_00856], [SWS_NvM_00860]):

  • 영구 RAM 블록이 처리되거나 콜백 NvM_WriteRamBlockToNvm을 통해 명시적 동기화가 실행됩니다([SWS_NvM_00860]).
  • RAM 블록 상태는 “VALID / CHANGED”로 설정됩니다([SWS_NvM_00856]).
  • RAM에서 CRC 계산이 추가로 구성된 경우 작업은 백그라운드 재계산을 요청하며, 이는 NvM_MainFunction을 통해 처리됩니다([SWS_NvM_00857]).
  • RAM 블록의 성공적인 검증 후 블록별 결과는 NVM_REQ_OK으로 변경됩니다([SWS_NvM_00862]).

이 사용 지침은 AUTOSAR 명세 R20-11을 기반으로 자동 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 NvM_FirstInitAll [SWS_NvM_91001] 📄 PDF

void NvM_FirstInitAll (void);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 97732570bd55 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 NvM_FirstInitAll은 구성된 여러 블록의 비동기 초기 초기화를 트리거합니다([SWS_NvM_91001]). 서비스는 재진입이 불가능하고 매개변수를 받지 않으며 반환값을 제공하지 않습니다([SWS_NvM_91001]). 처리 시 비휘발성 메모리에 블록이 이미 존재하는지 또는 유효한지 손상되었는지는 고려되지 않습니다([SWS_NvM_91001]). 멀티 블록 작업(NvM_FirstInitAll 등에서 유래)을 위한 대기열 길이는 1이므로 한 번에 하나의 멀티 블록 작업만 큐잉될 수 있습니다([SWS_NvM_00380]).

처리는 블록의 관리 유형에 따라 다릅니다:

  • NATIVE: 기본 데이터가 있는 경우 NV 블록에 해당 데이터가 기록됩니다([SWS_NvM_00913]). 블록에 영구 RAM 또는 명시적 동기화가 있는 경우 RAM은 NvM_RestoreBlockDefaults에서와 같이 기본 데이터(ROM 또는 Init 콜백)로 업데이트되며([SWS_NvM_00915]); 영구 RAM과 명시적 동기화가 모두 없는 경우 내부 NvM 버퍼가 RAM 역할을 하며 RAM 상태는 변경되지 않고 유지됩니다([SWS_NvM_00914]). 기본 데이터가 없거나([SWS_NvM_00919]) 구성된 Init 콜백이 E_OK가 아닌 반환값으로 실패하면([SWS_NvM_00921]) 블록이 무효화됩니다.
  • REDUNDANT: 기본 데이터가 있는 경우 두 블록 인스턴스 모두 해당 데이터로 기록되고([SWS_NvM_00916]) 영구 RAM 또는 명시적 동기화가 있는 경우 RAM이 업데이트되며([SWS_NvM_00918]); 그렇지 않은 경우 내부 버퍼가 사용됩니다([SWS_NvM_00917]). Init 콜백이 E_OK을 반환하지 않으면 두 인스턴스가 모두 무효화됩니다([SWS_NvM_00922]).
  • DATASET: 처리를 위해 구성된 이 유형의 모든 블록 또는 NV 블록 인스턴스는 예외 없이 무효화됩니다([SWS_NvM_00923], [SWS_NvM_00924]).

기본 데이터가 있는 NATIVE 블록의 쓰기([SWS_NvM_00925]), NATIVE 블록의 무효화([SWS_NvM_00927]) 또는 REDUNDANT 블록의 두 인스턴스 쓰기([SWS_NvM_00926])가 실패하면 작업은 전체 결과를 NVM_REQ_NOT_OK으로 설정합니다.

이 텍스트는 R20-11 사양을 기반으로 AI에 의해 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 NvM_JobEndNotification [SWS_NvM_00462] 📄 PDF

void NvM_JobEndNotification (void);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 44e91f5e39db 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용

동기식 콜백 함수 NvM_JobEndNotification은 작업이 오류 없이 종료되었음을 NVRAM 관리자에게 알리기 위해 하위 메모리 추상화에 의해 호출됩니다 [SWS_NvM_00462]. 이 함수는 매개변수와 반환값이 모두 없으며 헤더 파일 NvM_MemIf.h를 통해 서비스 ID 0x11로 제공됩니다 [SWS_NvM_00462]. 메모리 추상화의 성공적인 알림에는 오류 없이 완료된 읽기, 쓰기 또는 지우기 작업이 포함됩니다 [SWS_NvM_00111].

동시성 및 제약사항

이 인터페이스는 재진입이 불가능한 것으로 명시되어 있습니다 [SWS_NvM_00462]. 메모리 추상화 내의 호출 함수에 따라 이 루틴은 인터럽트 컨텍스트에서 실행될 수 있습니다 [SWS_NvM_00111]. 메모리 추상화의 모든 모듈은 동일한 모드 – 콜백 또는 폴링 – 를 일관되게 사용하도록 구성되어야 합니다 [SWS_NvM_00111].

구성 및 상호 작용

NvM 모듈은 구성 매개변수 NvMPollingMode을 통해 폴링 모드가 비활성화된 경우에만 콜백 함수 NvM_JobEndNotification을 제공합니다 [SWS_NvM_00440]. 또한 이 함수는 일반적인 NvM 구성 매개변수의 영향을 받습니다 [SWS_NvM_00440].

이 사용 지침은 AUTOSAR 사양 R20-11을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 NvM_JobErrorNotification [SWS_NvM_00463] 📄 PDF

void NvM_JobErrorNotification (void);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: aca80117b4e4 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

콜백 함수 NvM_JobErrorNotification([SWS_NvM_00463])은 비동기 작업의 오류 종료를 NVRAM 관리자 모듈(NvM)에 알리기 위해 하위 메모리 추상화 계층에서 사용됩니다. 호출은 동기식으로 수행되며 재진입이 불가능한 것으로 명시되어 있습니다([SWS_NvM_00463]).

사용법 및 시그니처

  • 인터페이스: 함수 선언은 헤더 파일 NvM_MemIf.h을 통해 제공됩니다([SWS_NvM_00463]).
  • 시그니처: void NvM_JobErrorNotification(void)에 따르면 이 함수는 입력, 출력 또는 입출력 매개변수를 가지지 않으며 반환값을 제공하지 않습니다([SWS_NvM_00463]).
  • 서비스 ID: 이 함수는 16진수 식별자 0x12을 통해 식별됩니다([SWS_NvM_00463]).

구성 의존성 및 상호작용

모듈 NvM은 폴링 모드가 구성 매개변수 NvMPollingMode을 통해 비활성화된 경우에만 콜백 함수 NvM_JobErrorNotification을 제공합니다([SWS_NvM_00441]). 폴링이 사용되는 경우 이 알림 메커니즘은 생략됩니다. 또한 이 함수는 [SWS_NvM_00028] 문구 아직 가져오지 않음에 따른 일반 구성 매개변수의 영향을 받습니다([SWS_NvM_00441]).

오류 처리 및 동시성

이 함수는 작업의 오류 보고 전용으로 사용되며 자체 오류 코드나 DET 또는 DEM 피드백을 정의하지 않습니다([SWS_NvM_00463]). Non Reentrant로 분류되어 있으므로 중복되거나 중단되는 호출이 발생하지 않도록 보장하는 것은 메모리 추상화의 호출자 책임일 것으로 추정됩니다([SWS_NvM_00463]). 질문 Q-5f72d9d605c25922 (열림)

이 사용 지침은 AUTOSAR Classic R20-11 사양을 기반으로 자동으로 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 NvM_MainFunction [SWS_NvM_00464] 📄 PDF

void NvM_MainFunction (void);

Service for performing the processing of the Nv M jobs.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: e37fc51f7baf 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용

함수 NvM_MainFunction은 전달 매개변수와 반환값이 모두 없으며(void NvM_MainFunction(void)) SchM_NvM.h를 통해 선언됩니다([SWS_NvM_00464]). 이 함수는 NVRAM 관리자 작업을 처리하는 데 사용됩니다([SWS_NvM_00464], [SWS_NvM_00256]). 비동기 서비스가 완료된 후 상위 계층에 알리기 위해 구성된 콜백 루틴을 실행합니다([SWS_NvM_00347]). 또한 NvM_SetRamBlockStatus([SWS_NvM_00121]) 또는 NvM_ValidateAll([SWS_NvM_00857])의 결과 등으로 요청된 NVRAM 블록에 대한 백그라운드 CRC 재계산을 처리합니다([SWS_NvM_00333]).

흐름 제어 및 우선순위 지정

구성된 경우 함수는 즉시 우선순위 요청이 있는지 즉시 우선순위 대기열(Immediate-Priority-Queue)을 모니터링합니다([SWS_NvM_00259]). 일반 요청이 즉시 작업에 의해 파괴적으로 중단된 경우, NvM_MainFunction은 해당 작업이 완료된 후 이를 다시 시작합니다([SWS_NvM_00258]). 폴링 모드가 활성화되어 있으면 하위 계층으로 전달된 작업의 상태를 확인합니다([SWS_NvM_00346]). NvM_WriteAll를 처리하는 동안 MEMIF_BROADCAST_ID에 대해 MemIf_GetStatus를 통해 메모리 드라이버 추상화의 상태를 주기적으로 폴링하며, MEMIF_BUSY_INTERNAL이 보고되는 동안 상위 계층에 대한 콜백을 보류합니다([SWS_NvM_00350]).

오류 처리 및 재시도

애플리케이션 특정 콜백이 실패하면 NvM_MainFunction이 재시도를 제어합니다:

  • NvMReadRamBlockFromNvCallback이 값 E_NOT_OK을 반환하면 모듈은 다음 NvM_MainFunction 주기에서 호출을 반복합니다([SWS_NvM_00839]).
  • NvMWriteRamBlockToNvCallback이 E_NOT_OK을 반환하면 다음 NvM_MainFunction 호출에서도 마찬가지로 재시도가 수행됩니다([SWS_NvM_00840]).
  • NvM_SetRamBlockStatus에서 명시적 동기화 콜백이 E_NOT_OK을 반환하면 모듈은 NvM_MainFunction의 호출당 한 번씩 구성된 재시도를 수행합니다([SWS_NvM_00908]).

이 텍스트는 AUTOSAR 사양 R20-11을 기반으로 AI에 의해 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I2)

함수 NvM_SingleBlockCallbackFunction [SWS_NvM_00467] 📄 PDF

Std_ReturnType NvM_SingleBlockCallbackFunction (NvM_BlockRequestType BlockRequest, NvM_RequestResultType JobResult);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: f9058239e263 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용

콜백 루틴 NvM_SingleBlockCallbackFunction은 이전에 시작된 비동기 단일 블록 요청의 완료를 상위 계층에 동기식으로 알립니다 [SWS_NvM_00467].

이 함수는 두 개의 전달 매개변수를 처리합니다 [SWS_NvM_00467]:

  • BlockRequest (타입 NvM_BlockRequestType): 읽기 또는 쓰기 작업과 같이 이전에 실행된 블록 요청의 유형을 전달합니다 [SWS_NvM_00467].
  • JobResult (타입 NvM_RequestResultType): 처리된 블록 작업의 전체 결과를 보고합니다 [SWS_NvM_00467].

반환값으로 이 함수는 타입 Std_ReturnType을 제공합니다 [SWS_NvM_00467]. 콜백의 성공적인 처리는 E_OK의 반환으로 신호되며; 다른 모든 반환값은 성공하지 못한 실행을 나타냅니다 [SWS_NvM_00467].

오류 처리 및 동시성

이 인터페이스는 자체 DET 또는 DEM 오류 메시지를 지정하지 않습니다 [SWS_NvM_00467]. 이전 작업의 결과는 매개변수 JobResult을 통해 전달되는 반면, 콜백 처리 자체 내의 오류는 함수 반환값을 통해 보고됩니다 [SWS_NvM_00467].

동시성과 관련하여 루틴은 재진입 불가(Non Reentrant)로 선언되어 있습니다 [SWS_NvM_00467]. 헤더 NvM_Externals.h를 통해 제공됩니다 [SWS_NvM_00467]. NvM 모듈에 의한 호출은 주기적인 NvM 작업 처리의 태스크 컨텍스트에서 동기식으로 수행될 것으로 보입니다 (해석). 질문 Q-f50640211851274f (열림)

이 사용 지침은 AUTOSAR R20-11 사양을 기반으로 AI에 의해 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 NvM_MultiBlockCallbackFunction [SWS_NvM_00468] 📄 PDF

Std_ReturnType NvM_MultiBlockCallbackFunction (NvM_MultiBlockRequestType MultiBlockRequest, NvM_RequestResultType JobResult);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: a3c38e2b6191 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

콜백 루틴 NvM_MultiBlockCallbackFunction은 이전에 시작된 비동기 멀티블록 작업이 완료되었음을 상위 계층에 알립니다 [SWS_NvM_00468]. 함수의 선언은 헤더 파일 NvM_Externals.h를 통해 제공됩니다 [SWS_NvM_00468].

호출 컨텍스트 및 매개변수

NVRAM 관리자에 의한 호출은 처리 흐름의 실행과 동기식으로 이루어집니다 [SWS_NvM_00468]. 호출 시 루틴에 두 개의 매개변수가 전달됩니다:

  • MultiBlockRequest (타입 NvM_MultiBlockRequestType): 읽기 또는 쓰기 액세스와 같이 이전에 처리된 멀티블록 작업의 구체적인 요청 유형을 나타냅니다 [SWS_NvM_00468].
  • JobResult (타입 NvM_RequestResultType): 이전 멀티블록 작업의 최종 처리 결과를 상위 계층에 전달합니다 [SWS_NvM_00468].

반환값 및 오류 처리

이 루틴은 타입 Std_ReturnType의 값을 호출 모듈에 반환합니다 [SWS_NvM_00468]. 반환값 E_OK는 콜백 함수가 성공적으로 처리되었음을 나타내며; 반대로 다른 모든 반환값은 실패한 처리를 알립니다 [SWS_NvM_00468]. 특정 오류 코드, DET 또는 DEM 메시지는 이 함수에 대한 사양 범위에 정의되어 있지 않습니다. 해석: 표준에서 후속 오류 처리를 규정하지 않으므로, E_OK가 아닌 반환값의 구체적인 결과는 구현에 따라 다를 수 있습니다. 질문 Q-462dea7f3074ae9c (열림)

동시성 및 제약사항

이 함수는 재진입 불가(Non Reentrant)로 명시되어 있습니다 [SWS_NvM_00468]. 따라서 호출 시스템 내에서 이 콜백 인터페이스에 대한 동시 또는 중단 다중 호출이 발생하지 않도록 해야 합니다.

이 텍스트는 사양을 기반으로 AI에 의해 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 NvM_InitBlockCallbackFunction [SWS_NvM_00469] 📄 PDF

Std_ReturnType NvM_InitBlockCallbackFunction (NvM_InitBlockRequestType InitBlockRequest);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 6fa779cf7b62 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

사용법 및 호출 컨텍스트

사용자 지정 콜백 루틴 NvM_InitBlockCallbackFunction은 RAM의 NVRAM 블록에 대한 기본 데이터를 복원해야 하고 해당 ROM 블록이 구성되어 있지 않은 경우 NvM 모듈에 의해 호출됩니다 [SWS_NvM_00469]. 호출은 동기식으로 수행되며 인터페이스는 헤더 NvM_Externals.h를 통해 선언됩니다 [SWS_NvM_00469].

함수는 전달 매개변수로 타입 NvM_InitBlockRequestType의 InitBlockRequest을 받습니다 [SWS_NvM_00469]. 이 값은 데이터 읽기 또는 복원과 같이 현재 처리 중인 블록의 특정 요청 유형을 루틴에 알립니다(read, restore) [SWS_NvM_00469].

반환값 및 오류 처리

루틴은 타입 Std_ReturnType의 상태 값을 반환합니다 [SWS_NvM_00469]:

  • E_OK: 콜백 함수가 RAM의 데이터를 성공적으로 초기화하고 처리했음을 NvM 모듈에 알립니다 [SWS_NvM_00469].
  • 기타 모든 반환값: 초기화가 성공적으로 완료되지 않았음을 나타냅니다 [SWS_NvM_00469].

인터페이스 자체에 대한 특정 DET 또는 DEM 오류 코드는 지정되어 있지 않습니다 [SWS_NvM_00469].

동시성 및 실행 제약 조건

인터페이스는 동기식 및 재진입 불가(Non Reentrant)로 정의되어 있습니다 [SWS_NvM_00469]. NVRAM Manager는 함수의 반환을 동기식으로 대기하므로, 루틴 내의 블로킹 실행은 NvM의 추가 처리를 즉시 중단시킬 것으로 보입니다 (해석). 질문 Q-c0e43c9871c4f2d0 (열림)

본 사용 지침은 AUTOSAR R20-11 명세를 기반으로 AI에 의해 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 NvM_WriteRamBlockToNvm [SWS_NvM_00539] 📄 PDF

Std_ReturnType NvM_WriteRamBlockToNvm (void* NvMBuffer);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 5243b53cfd03 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

블록별 콜백 함수 NvM_WriteRamBlockToNvm은 RAM 블록의 애플리케이션 데이터를 NvM 모듈의 내부 RAM 미러로 복사하기 위한 명시적 동기화에 사용됩니다 [SWS_NvM_00539]. 이 함수는 NvM_Externals.h를 통해 선언적으로 제공되며 NvM에 의해 동기식으로 호출됩니다 [SWS_NvM_00539].

사용법 및 매개변수

함수는 출력 매개변수로 데이터가 기록되어야 하는 NvM 미러의 대상 주소를 나타내는 포인터 NvMBuffer을 전달합니다 [SWS_NvM_00539]. 콜백 루틴은 반환값으로 성공적인 처리 시 E_OK를, 오류 발생 시 다른 모든 값을 반환합니다 [SWS_NvM_00539].

동시성 및 제약사항

사양에 따르면 NvM_WriteRamBlockToNvm은 재진입 불가(Non Reentrant)로 설계되어 있습니다 [SWS_NvM_00539].

모듈 내 상호 작용

  • 종료 시 작업 NvM_WriteAll은 NVRAM 블록에 대한 매개변수 NvMSelectBlockForWriteAll이 true로 구성된 경우 영구 RAM 블록을 동기화하거나 명시적 동기화를 위해 콜백 루틴 NvM_WriteRamBlockToNvm을 호출합니다 [SWS_NvM_00018] [SWS_NvM_00252].
  • 쓰기 작업 NvM_WriteBlock [SWS_NvM_00303] 및 NvM_WritePRAMBlock [SWS_NvM_00803]은 NvM_WriteRamBlockToNvm를 호출한 후 아직 유효하지 않은 영구 RAM 블록을 자동으로 검증합니다.

이 텍스트는 AUTOSAR 사양 R20-11을 기반으로 AI에 의해 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

함수 NvM_ReadRamBlockFromNvm [SWS_NvM_00540] 📄 PDF

Std_ReturnType NvM_ReadRamBlockFromNvm (const void* NvMBuffer);

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 1b2c937c4017 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

함수 NvM_ReadRamBlockFromNvm은 NvM_Externals.h을 통해 선언되는 블록별 콜백 루틴입니다 [SWS_NvM_00540]. 그 목적은 명시적 동기화를 수행하기 위해 애플리케이션이 NvM 모듈의 내부 미러 버퍼에서 관련 RAM 블록으로 데이터를 복사할 수 있도록 하는 것입니다 [SWS_NvM_00540], [SWS_NvM_00118].

사용법 및 의미론

  • 호출 컨텍스트 및 동시성: 호출은 동기식으로 이루어지며 재진입 불가(Non Reentrant)로 명시되어 있습니다 [SWS_NvM_00540].
  • 매개변수: 포인터 NvMBuffer(타입 const void*)이 전달 매개변수로 사용됩니다. 이는 데이터를 읽어 RAM 블록으로 복사할 수 있는 버퍼 주소를 전달합니다 [SWS_NvM_00540].
  • 반환값 및 오류 처리: 콜백 함수는 Std_ReturnType을 반환합니다. 반환값 E_OK은 성공적인 처리를 알리며; 다른 모든 반환값은 성공하지 못한 처리를 나타냅니다 [SWS_NvM_00540].

상호 작용

멀티블록 서비스 NvM_ReadAll의 프레임워크 내에서 적절히 구성되고 NvmSelectBlockForReadall == TRUE가 적용되는 NVRAM 블록에 대한 명시적 동기화를 위해 NvM_ReadRamBlockFromNvm이 호출됩니다 [SWS_NvM_00118], [SWS_NvM_00356]. 이는 영구 RAM 블록으로의 직접 복사 프로세스에 대한 대안이며, NvM_ReadAll는 블록의 관리 데이터를 초기화합니다 [SWS_NvM_00356].

이 텍스트는 사양 요구 사항을 기반으로 AI 시스템에 의해 생성되었습니다.

구현자 가이드 준비 중 (복잡도 I1)

타입 NvM_MultiBlockRequestType [SWS_NvM_91003] 📄 PDF

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: e84ff8330bcb 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

열거형 타입 NvM_MultiBlockRequestType은 헤더 파일 NvM.h을 통해 제공되며, 실행된 멀티 블록 요청 [SWS_NvM_91003]을 고유하게 식별하는 역할을 합니다. 이 타입은 멀티 블록 작업의 결과 또는 상태가 콜백 함수를 통해 신호로 전달되거나 BswM 모듈로 보고될 때 사용됩니다 [SWS_NvM_91003].

값 범위 및 시맨틱

해당 열거형은 멀티 블록 요청 [SWS_NvM_91003]을 구분하기 위해 다음과 같은 값을 정의합니다:

  • NVM_READ_ALL (0x00): NvM_ReadAll이(가) 실행되었음을 나타냅니다.
  • NVM_WRITE_ALL (0x01): NvM_WriteAll이(가) 실행되었음을 나타냅니다.
  • NVM_VALIDATE_ALL (0x02): NvM_ValidateAll이(가) 실행되었음을 나타냅니다.
  • NVM_FIRST_INIT_ALL (0x03): NvM_FirstInitAll이(가) 실행되었음을 나타냅니다.
  • NVM_CANCEL_WRITE_ALL (0x04): NvM_CancelWriteAll이(가) 실행되었음을 나타냅니다.

상호 작용

이 타입을 전달함으로써 호출된 콜백 및 BswM은 어떤 구체적인 멀티 블록 서비스가 알림을 트리거했는지 확인할 수 있습니다. 해석: BswM에 대한 피드백은 전체 시스템의 후속 조치 또는 상태 전환을 특정 멀티 블록 서비스의 완료와 연계하는 역할을 하는 것으로 보입니다. 질문 Q-69b4d985301acfeb (열림)

이 텍스트는 AI에 의해 생성되었으며 참고용으로 제공됩니다. 신뢰할 수 있는 정보는 참조된 사양입니다.

구현자 가이드 준비 중 (복잡도 I1)

타입 NvM_RequestResultType [SWS_NvM_00470] 📄 PDF

Type NvM_RequestResultType.

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 49d0056a8c31 출처
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

NvM_RequestResultType 타입은 uint8을(를) 기반으로 하며 Rte_NvM_Type.h을(를) 통해 제공되고 NVRAM 관리자의 읽기, 쓰기 및 제어 작업의 비동기 요청 결과를 나타냅니다 [SWS_NvM_00470]. 결과는 주로 API 서비스 NvM_GetErrorStatus을(를) 통해 조회되며 구성된 콜백 함수를 통해 추가로 전달될 수 있습니다 [SWS_NvM_00470].

값 범위는 다양한 실행 상태와 오류 사례를 나타냅니다 [SWS_NvM_00470]:

  • NVM_REQ_OK (0x00): 마지막 비동기 작업이 성공적으로 완료되었습니다. 이는 리셋 후의 기본값이기도 합니다.
  • NVM_REQ_NOT_OK (0x01): 비동기 읽기, 쓰기 또는 제어 요청이 성공적으로 완료되지 않았습니다.
  • NVM_REQ_PENDING (0x02): 비동기 요청이 현재 아직 처리 중입니다.
  • NVM_REQ_INTEGRITY_FAILED (0x03): NvM_ReadBlock 또는 NvM_ReadAll에서 데이터 무결성 오류가 발생했습니다. NvM_ReadBlock의 경우 RAM 블록의 내용이 변경되었으나 유효하지 않게 되었습니다. 애플리케이션은 내용을 갱신하고 유효성을 검증할 책임이 있습니다.
  • NVM_REQ_BLOCK_SKIPPED (0x04): NvM_ReadAll 또는 NvM_WriteAll 중에 참조된 블록을 건너뛰었습니다(예: NvM_ReadAll의 데이터셋 NVRAM 블록 또는 영구적으로 구성된 RAM 블록이 없는 블록).
  • NVM_REQ_NV_INVALIDATED (0x05): 참조된 NV 블록이 무효화되었습니다.
  • NVM_REQ_CANCELED (0x06): NvM_CancelWriteAll에 의한 NvM_WriteAll 취소 또는 NvM_CancelJobs에 의한 단일 블록 요청(NvM_ReadBlock, NvM_WriteBlock, NvM_EraseNvBlock, NvM_InvalidateNvBlock, NvM_RestoreBlockDefaults) 취소입니다.
  • NVM_REQ_RESTORED_DEFAULTS (0x08): 기본값이 RAM 이미지로 성공적으로 복사되었습니다.

이중화 블록(NVM_BLOCK_REDUNDANT)과 연동할 때 NvM_InvalidateNvBlock 함수는 두 NV 블록이 모두 무효화된 경우에만 요청 결과 NvM_RequestResultType을(를) NVM_REQ_OK(으)로 설정합니다 [SWS_NvM_00274].

이 텍스트는 자동으로 생성되었습니다. 모든 정보는 AUTOSAR 버전 R20-11의 사양 요구사항만을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

타입 NvM_BlockIdType [SWS_NvM_00471] 📄 PDF

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

타입 NvM_InitBlockRequestType [SWS_NvM_91123] 📄 PDF

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: f4f68ded6ba5 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

데이터 타입 NvM_InitBlockRequestType은 uint8을(를) 기반으로 하며 헤더 파일 Rte_NvM_Type.h을 통해 제공됩니다 [SWS_NvM_91123]. 이는 NVRAM 블록에서 수행된 요청 유형을 해당 콜백 함수를 통해 알릴 때 이를 식별하는 역할을 합니다 [SWS_NvM_91123].

허용되는 값 범위는 4가지 요청 유형을 포함합니다 [SWS_NvM_91123]:

  • NVM_INIT_READ_BLOCK (0x00): 해당 블록에 대해 NvM_ReadBlock 또는 NvM_ReadPRAMBlock이(가) 요청되었음을 나타냅니다 [SWS_NvM_91123].
  • NVM_INIT_RESTORE_BLOCK_DEFAULTS (0x01): 해당 블록에 대해 NvM_RestoreBlockDefaults 또는 NvM_RestorePRAMBlockDefaults이(가) 요청되었음을 알립니다 [SWS_NvM_91123].
  • NVM_INIT_READ_ALL_BLOCK (0x02): 해당 블록의 처리가 NvM_ReadAll의 일부로 수행됨을 나타냅니다 [SWS_NvM_91123].
  • NVM_INIT_FIRST_INIT_ALL (0x03): NvM_FirstInitAll 실행 중의 블록 처리를 식별합니다 [SWS_NvM_91123].

이 열거형 값을 기반으로 호출된 애플리케이션 로직은 이것이 명시적인 단일 블록 요청(표준 값 읽기 또는 복구)인지, 시스템 시작 중의 전역 수집 작업인지 구별할 수 있습니다 [SWS_NvM_91123]. 해석: 애플리케이션이 상황에 맞춰 표준 데이터를 제공하거나 특정 준비를 수행할 수 있도록, 이 타입은 블록 관련 초기화 콜백에 매개변수로 전달될 것으로 보입니다. 질문 Q-42d0d469e305728e (열림)

이 사용 지침은 AUTOSAR Classic Release R20-11 사양을 기반으로 합니다.

구현자 가이드 준비 중 (복잡도 I1)

타입 NvM_BlockRequestType [SWS_NvM_91002] 📄 PDF

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

AI 생성 미검증 모델: gemini-3.8-flash-medium · 노력: medium · 온도: 제어 불가 · 프롬프트: 68d31eddd2e0 출처 열린 질문 (1)
독일어 가이드에서 번역됨gemini-3.8-flash-low · 2026-10-13 · 독일어 원문

열거형 NvM_BlockRequestType은 uint8을 기반으로 하며 헤더 Rte_NvM_Type.h를 통해 제공됩니다 [SWS_NvM_91002]. 이는 콜백 함수를 통한 알림 시 이전에 NVRAM 블록에서 실행된 요청의 유형을 전달하는 역할을 합니다 [SWS_NvM_91002].

값 범위에는 6개의 특정 블록 요청이 포함됩니다 [SWS_NvM_91002]:

  • NVM_READ_BLOCK (0x00): 블록에 대해 NvM_ReadBlock 또는 NvM_ReadPRAMBlock가 실행되었음을 알립니다 [SWS_NvM_91002].
  • NVM_WRITE_BLOCK (0x01): 블록에 대해 NvM_WriteBlock 또는 NvM_WritePRAMBlock가 실행되었음을 알립니다 [SWS_NvM_91002].
  • NVM_RESTORE_BLOCK_DEFAULTS (0x02): NvM_RestoreBlockDefaults 또는 NvM_RestorePRAMBlockDefaults가 실행되었음을 알립니다 [SWS_NvM_91002].
  • NVM_ERASE_NV_BLOCK (0x03): 블록에서 NvM_EraseNvBlock이 실행되었음을 알립니다 [SWS_NvM_91002].
  • NVM_INVALIDATE_NV_BLOCK (0x04): 블록에서 NvM_InvalidateNvBlock이 실행되었음을 알립니다 [SWS_NvM_91002].
  • NVM_READ_ALL_BLOCK (0x05): NvM_ReadAll이 이 블록의 처리를 완료했음을 알립니다 [SWS_NvM_91002].

애플리케이션 아키텍처에서 이 값은 상위 소프트웨어 컴포넌트에 특정 블록 작업의 종료를 차별화하여 알리기 위해 콜백 루틴의 매개변수로 평가될 것으로 보입니다 [SWS_NvM_91002]. 질문 Q-467801b6b5e898a2 (열림) 오류 코드 또는 동시성에 대한 페이로드의 추가 사양이 없으므로 사양 세부 정보는 타입 정의 및 값 범위로 제한됩니다 [SWS_NvM_91002].

이 텍스트는 AI에 의해 작성되었으며 정확성을 보장할 수 없습니다.

구현자 가이드 준비 중 (복잡도 I1)

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

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

초기화 및 상태

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

void NvM_GetVersionInfo (Std_VersionInfoType* versioninfo);
NvM_Init 함수

Service for resetting all internal variables.

void NvM_Init (const NvM_ConfigType* ConfigPtr);

서비스 · Read…

Initiates a multi block read request.

void NvM_ReadAll (void);

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

Std_ReturnType NvM_ReadBlock (NvM_BlockIdType BlockId, void* NvM_DstPtr);

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

Std_ReturnType NvM_ReadPRAMBlock (NvM_BlockIdType BlockId);

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

Std_ReturnType NvM_ReadRamBlockFromNvm (const void* NvMBuffer);

서비스 · Set…

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

void NvM_SetBlockLockStatus (NvM_BlockIdType BlockId, boolean BlockLocked);

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

Std_ReturnType NvM_SetBlockProtection (NvM_BlockIdType BlockId, boolean ProtectionEnabled);

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

Std_ReturnType NvM_SetDataIndex (NvM_BlockIdType BlockId, uint8 DataIndex);

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

Std_ReturnType NvM_SetRamBlockStatus (NvM_BlockIdType BlockId, boolean BlockChanged);

서비스 · Write…

Initiates a multi block write request.

void NvM_WriteAll (void);

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

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

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

Std_ReturnType NvM_WritePRAMBlock (NvM_BlockIdType BlockId);

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

Std_ReturnType NvM_WriteRamBlockToNvm (void* NvMBuffer);

서비스 · Cancel…

Service to cancel all jobs pending for a NV block.

Std_ReturnType NvM_CancelJobs (NvM_BlockIdType BlockId);

Service to cancel a running Nv M_ Write All request.

void NvM_CancelWriteAll (void);

서비스 · Get…

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

Std_ReturnType NvM_GetDataIndex (NvM_BlockIdType BlockId, uint8* DataIndexPtr);

Service to read the block dependent error/ status information.

Std_ReturnType NvM_GetErrorStatus (NvM_BlockIdType BlockId, NvM_RequestResultType* RequestResultPtr);

서비스 · Job…

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

void NvM_JobEndNotification (void);

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

void NvM_JobErrorNotification (void);

서비스 · Restore…

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

Std_ReturnType NvM_RestoreBlockDefaults (NvM_BlockIdType BlockId, void* NvM_DestPtr);

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

Std_ReturnType NvM_RestorePRAMBlockDefaults (NvM_BlockIdType BlockId);

서비스 · 기타

Service to erase a NV block.

Std_ReturnType NvM_EraseNvBlock (NvM_BlockIdType BlockId);

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

void NvM_FirstInitAll (void);

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

Std_ReturnType NvM_InitBlockCallbackFunction (NvM_InitBlockRequestType InitBlockRequest);

Service to invalidate a NV block.

Std_ReturnType NvM_InvalidateNvBlock (NvM_BlockIdType BlockId);

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

Std_ReturnType NvM_MultiBlockCallbackFunction (NvM_MultiBlockRequestType MultiBlockRequest, NvM_RequestResultType JobResult);

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

Std_ReturnType NvM_SingleBlockCallbackFunction (NvM_BlockRequestType BlockRequest, NvM_RequestResultType JobResult);

Initiates a multi block validation request.

void NvM_ValidateAll (void);

주기적

Service for performing the processing of the Nv M jobs.

void NvM_MainFunction (void);

타입

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

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

Configuration data structure of the Nv M module.

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

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

Type NvM_RequestResultType.