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
上图同时展示了整个 NvM Stack 的构成。
如上图所示,AUTOSAR规定,App只能通过NvM(NVRAM Manager)来访问NV Memory(比如FLASH)。
3 支持的同步机制(Synchronization Mechanism)
根据App对NvM Block‘’s RAM的访问方式,数据同步机制可以分为两种:
- 隐式同步(Implicit synchronization)
- 显示同步(Explicit synchronization)
3.1 Implicit synchronization
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:一般指全局变量。
3.2 Explicit synchronization
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。
显示同步的优点:
- App可以更好地管理自己的RAM block。在App调用NvM_WriteBlock / NvM_WritePRAMBlock 到NvM 调用NvMWriteRamBlockToNvM()这段期间,App仍然可以修改RAM block中的数据。
- 几个SWC可以共享一个NvM Block;
显示同步的缺点:
- 浪费内存:除了RAM block,又多了一个RAM Mirror(additional RAM),且RMA Mirror需要和使用显示同步机制的最大的NvM Block 具有相同的大小;
- 多了一步RAM间的拷贝操作:即多了RAM block 和 RAM mirror之间的拷贝操作;