| Method | API | When to Use | Risk |
|---|---|---|---|
| Explicit | NvM_WriteBlock(blockId, srcPtr) | Immediate write for safety-critical data | High flash wear if called every cycle |
| Implicit | NvM_WriteAll() | Batch write at shutdown for all modified blocks | Data lost if power cut before WriteAll completes |
void App_OdometerIncrement(void)
{
odometerRamBlock++;
(void)NvM_WriteBlock(NVM_BLOCK_ID_ODOMETER, &odometerRamBlock);
}
/* Check completion in background task */
void Task_100ms_Background(void)
{
NvM_RequestResultType result;
NvM_GetErrorStatus(NVM_BLOCK_ID_ODOMETER, &result);
if (result == NVM_REQ_NOT_OK) {
Dem_ReportErrorStatus(DEM_EVENT_NVM_WRITE_FAIL, DEM_EVENT_STATUS_FAILED);
}
}