AUTOSAR —— NVM 5:数据处理机制

本文根据AUTOSAR4.4(Classic Platform)(https://www.autosar.org/standards/classic-platform/classic-platform-440/)标准中的 :

AUTOSAR_EXP_NVDataHandling.pdf

文章整理。仅为个人理解,不当之处,还请指正,感谢!

 

1 Acronyms and abbreviations

Abbreviation /
Acronym:
Description:
NvM NVRAM Manager
NV Non-volatile
NVRAM Non-volatile Random Access Memory
NVRAM Block The NVRAM Block is the entire structure, which is needed to
administrate and to store a block of NV data.
NV Block The NV Block is a Basic Storage Object. It represents the part of a
“NVRAM Block” which resides in the NV memory
RAM Block The RAM Block is a Basic Storage Object. It represents the part of a
“NVRAM Block” which resides in the RAM.
RAM Mirror RAM mirrors are NvM internal buffer used for operations that read and
write the RAM block of NVRAM blocks with
NvMBlockUseSyncMechanism set TRUE.
ROM Block The ROM Block is a Basic Storage Object. It represents the part of a
“NVRAM Block” which resides in the ROM.
ROM Read-Only Memory
RTE Runtime Environment
SW-C Software Component
App Application
RTE Run Time Environment

 

2 NvM Stack Overview
AUTOSAR —— NVM 5:数据处理机制

上图同时展示了整个 NvM Stack 的构成。

如上图所示,AUTOSAR规定,App只能通过NvM(NVRAM Manager)来访问NV Memory(比如FLASH)。

 

3 支持的同步机制(Synchronization Mechanism)

 

根据App对NvM Block‘’s RAM的访问方式,数据同步机制可以分为两种:

  1. 隐式同步(Implicit synchronization)
  2. 显示同步(Explicit synchronization)

3.1 Implicit synchronization

AUTOSAR —— NVM 5:数据处理机制

AOTOSAR:在隐式同步机制下,一个NvM Block的 RAM 被映射到一个固定的 SWC,不建议共享RAM。 每当SW-C使用RAM block(temporary/permanent)访问NVRAM时,都必须确保RAM块的数据一致性,直到NvM完成正在进行的操作为止。

说人话:

在隐式同步机制下,RAM block 和 SWC 之间是一一对应的关系,其他SWC不能访问该RAM。SWC要保持数据的一致性是说,从SWC调用NvM接口到NvM操作完成前,SWC不能再改变该RAM中的值。但是该RAM可以被read。

补充(个人理解):

temporary RAM:一般指局部变量;

permanent RAM:一般指全局变量。

AUTOSAR —— NVM 5:数据处理机制


3.2 Explicit synchronization
 

AUTOSAR —— NVM 5:数据处理机制

AOTOSAR:在显式同步中,NvM会定义一个RAM mirror,用于与App的RAM block交换数据。 App将数据写入RAM block,然后调用NvM Write API(NvM_WriteBlock / NvM_WritePRAMBlock)。 NvM 调用API(NvMWriteRamBlockToNvM)将数据从 RAM Block 拷贝到RAM Mirror,进而希写入 NV Block。

 

显示同步的优点:

  1. App可以更好地管理自己的RAM block。在App调用NvM_WriteBlock / NvM_WritePRAMBlock 到NvM 调用NvMWriteRamBlockToNvM()这段期间,App仍然可以修改RAM block中的数据。
  2. 几个SWC可以共享一个NvM Block;

 

显示同步的缺点:

  1.  浪费内存:除了RAM block,又多了一个RAM Mirror(additional RAM),且RMA Mirror需要和使用显示同步机制的最大的NvM Block 具有相同的大小;
  2. 多了一步RAM间的拷贝操作:即多了RAM block 和 RAM mirror之间的拷贝操作;

AUTOSAR —— NVM 5:数据处理机制

AUTOSAR —— NVM 5:数据处理机制