Search tips

apple banana
Find rows that contain at least one of the two words.

+apple +juice
Find rows that contain both words.

+apple macintosh
Find rows that contain the word 'apple', but rank rows higher if they also contain 'macintosh'.

+apple -macintosh
Find rows that contain the word 'apple' but not 'macintosh'.

+apple ~macintosh
Find rows that contain the word 'apple', but if the row also contains the word 'macintosh', rate it lower than if row does not. This is "softer" than a search for '+apple -macintosh', for which the presence of 'macintosh' causes the row not to be returned at all.

+apple +(>turnover >strudel)
Find rows that contain the words 'apple' and 'turnover', or 'apple' and 'strudel' (in any order), but rank 'apple turnover' higher than 'apple strudel'.

Find rows that contain words such as 'apple', 'apples', 'applesauce', or 'applet'.

"some words"
Find rows that contain the exact phrase 'some words' (for example, rows that contain 'some words of wisdom' but not "some noise words").

By continuing to use this site you agree to the use of cookies. For more information and to find out how to change this click here. Accept Cookies
Please enable cookies in your browser for this website.
Advanced search

Nvm_ReadAll Returns Ok, but Data Is Deprecated

Last updated: 2020-05-13
NvM_ReadAll delivers error status NvM_REQ_OK but with deprecated data. 
The described problem can occur when using NvM_WriteBlock() API in combination with a valid data source pointer for a block with configured RAM block or NvMReadRamBlockFromNvCallback.

Background information: NvM behavior with enabled NvMCalRamBlockCrc to reduce read requests and accelerate initialization phase:

Before reading a block out of NvRam, NvM compares the calculated Crc with Crc of permanent RAM block. In case the Crc is matching, NvM will skip reading data from NvRam as it seems to be unnecessary. NvM will set current block result to NVM_REQ_OK and continue with next block. 

Problem description:
If the newer data has been written with NvM_WriteBlock by using a temporary RAM buffer, the internal CRC buffer will not be updated for this request. When initiating another NvM_ReadAll (e.g. for a soft-reset after a diagnostic service) the updated NvRam data may not be read and the RAM buffer will hold deprecated data. 

Note: This could only happen if the linkage of CRC buffers and data buffers differ (e.g. CRC buffer linked to retention RAM, data buffer to initialized RAM). 

Solving the problem:  
To solve such a situation with NvMCalRamBlockCrc configured using temporary RAM blocks for writing data must be avoided. Instead, update the corresponding RAM data and either call NvM_WriteBlock(<BlockID>, NULL_PTR) to write the data immediately or call NvM_SetRamBlockStatus(<BlockID>, TRUE) to mark the data as changed for NvM_WriteAll(). 
Article Options
Views: 52
Rate this article: