NVRAM Manager (NvM)
Provides synchronous and asynchronous block-based data management for non-volatile storage (EEPROM, Flash).
Funktionen — Übersicht
void NvM_Init (const NvM_ConfigType* ConfigPtr);Service for resetting all internal variables.Std_ReturnType NvM_SetDataIndex (NvM_BlockIdType BlockId, uint8 DataIndex);Service for setting the Data Inde x of a dataset NVRAM block.Std_ReturnType NvM_GetDataIndex (NvM_BlockIdType BlockId, uint8* DataIndexPtr);Service for getting the currently set Data Index of a datase t NVRAM blockStd_ReturnType NvM_SetBlockProtection (NvM_BlockIdType BlockId, boolean ProtectionEnabled);Service for setting/ resetting the write protection for a NV block.Std_ReturnType NvM_GetErrorStatus (NvM_BlockIdType BlockId, NvM_RequestResultType* RequestResultPtr);Service to read the block dependent error/ status information.void NvM_GetVersionInfo (Std_VersionInfoType* versioninfo);Service to get the version information of the Nv M module.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.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.Std_ReturnType NvM_CancelJobs (NvM_BlockIdType BlockId);Service to cancel all jobs pending for a NV block.Std_ReturnType NvM_ReadBlock (NvM_BlockIdType BlockId, void* NvM_DstPtr);Service to copy the data of the NV block to its corresponding RAM block.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.Std_ReturnType NvM_RestoreBlockDefaults (NvM_BlockIdType BlockId, void* NvM_DestPtr);Service to restore the default data to its corr esponding RAM block.Std_ReturnType NvM_EraseNvBlock (NvM_BlockIdType BlockId);Service to erase a NV block.Std_ReturnType NvM_InvalidateNvBlock (NvM_BlockIdType BlockId);Service to invalidate a NV block.Std_ReturnType NvM_ReadPRAMBlock (NvM_BlockIdType BlockId);Service to copy the data of the NV block to its corresponding permanent RAM block.Std_ReturnType NvM_WritePRAMBlock (NvM_BlockIdType BlockId);Service to copy the data of the permanent RAM block to its corresponding NV block.Std_ReturnType NvM_RestorePRAMBlockDefaults (NvM_BlockIdType BlockId);Service to restore the default data to its corresponding permanent RAM block.void NvM_ReadAll (void);Initiates a multi block read request.void NvM_WriteAll (void);Initiates a multi block write request.void NvM_CancelWriteAll (void);Service to cancel a running Nv M_ Write All request.void NvM_ValidateAll (void);Initiates a multi block validation request.void NvM_FirstInitAll (void);The function initiates a multi block first initialization request.void NvM_JobEndNotification (void);Function to be used by the underlying memory abstraction to signal end of job without error.void NvM_JobErrorNotification (void);Function to be used by the underlying memory abstraction to signal end of job with error.void NvM_MainFunction (void);Service for performing the processing of the Nv M jobs.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.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.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...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...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...
Typen — Übersicht
struct NvM_ConfigTypeConfiguration data structure of the Nv M module.NvM_MultiBlockRequestTypeIdentifies the type of request performed on multi block when signaled via the callback function or when reporting to Bsw Menum NvM_RequestResultTypeType NvM_RequestResultType.NvM_BlockIdTypeIdentification of a NVRAM block via a unique block identifier.NvM_InitBlockRequestTypeIdentifies the type of request performed on a block when signaled via the callback functionNvM_BlockRequestTypeIdentifies the type of reques t performed on a block when signaled via the callback function
Funktionen & Typen — Detailansicht
함수 NvM_Init [SWS_NvM_00447] 📄 PDF
void NvM_Init (const NvM_ConfigType* ConfigPtr);
Service for resetting all internal variables.
사용법 및 호출 컨텍스트
함수 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_SetDataIndex [SWS_NvM_00448] 📄 PDF
Std_ReturnType NvM_SetDataIndex (NvM_BlockIdType BlockId, uint8 DataIndex);
Service for setting the Data Inde x of a dataset NVRAM block.
함수 NvM_GetDataIndex [SWS_NvM_00449] 📄 PDF
Std_ReturnType NvM_GetDataIndex (NvM_BlockIdType BlockId, uint8* DataIndexPtr);
Service for getting the currently set Data Index of a datase t NVRAM block
함수 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
사용법 및 의미론
동기 및 재진입 함수 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_GetVersionInfo [SWS_NvM_00452] 📄 PDF
void NvM_GetVersionInfo (Std_VersionInfoType* versioninfo);
Service to get the version information of the Nv M module.
함수 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.
동기 및 재진입 함수 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.
사용법 및 호출 컨텍스트
동기식 및 재진입 가능 함수 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.
사용법 및 의미론
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.
사용법 및 의미론
함수 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
함수 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.
사용법 및 의미론
함수 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.
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.
함수 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.
사용
비동기 및 재진입 가능 함수 [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.
재진입 가능한 비동기 함수 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.
사용법 및 의미론
함수 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.
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.
사용법 및 호출 컨텍스트
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.
사용법 및 의미론
함수 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.
함수 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.
함수 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.
사용
동기식 콜백 함수 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.
콜백 함수 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.
사용
함수 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.
사용
콜백 루틴 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
콜백 루틴 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
사용법 및 호출 컨텍스트
사용자 지정 콜백 루틴 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.
블록별 콜백 함수 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.
함수 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_ConfigType [SWS_NvM_00880] 📄 PDF
Configuration data structure of the Nv M module.
타입 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
열거형 타입 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.
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
데이터 타입 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
열거형 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
gemini-3.8-flash-low· 2026-10-13 · 독일어 원문