AutoSAR实战:NVM和FEE原理介绍

AutoSAR实战:NVM和FEE原理介绍

引用来自:RTA-MemStackReferenceGuide.pdf,AUTOSAR_CP_SWS_NVRAMManager.pdf

NVM介绍

介绍

内存服务由一个模块组成,即 NVRAM 管理器。它负责非易失性数据的管理(从不同的内存驱动程序进行读/写)。任务:以统一的方式向应用程序提供非易失性数据。从内存位置和属性中抽象出来。提供非易失性数据管理的机制,如保存、加载、校验和保护及验证、可靠存储等。

引言及功能概述

本规范描述了 AUTOSAR 基础软件模块 NVRAM 管理器(NvM)的功能、API 和配置。NvM 模块应提供服务,以确保在汽车环境中根据其各自的要求存储和维护 NV(非易失性)数据。NvM 模块应能够管理 EEPROM 和/或 FLASH EEPROM 仿真设备的 NV 数据。NvM 模块应为 NV 数据(初始化/读取/写入/控制)的管理和维护提供所需的同步/异步服务。不同模块之间的关系可在下图中直观呈现:

基本存储对象
1. NV 块

NV 块是一个基本的存储对象,代表一个由 NV 用户数据以及(可选的)CRC 值和(可选的)NV 块头组成的存储区域。

注意:此图未展示 NV 块的物理内存布局。仅展示了逻辑聚类。

2. RAM内存块

RAM 块是一个基本的存储对象,代表了 RAM 中的一个区域,由用户数据以及(可选的)CRC 值和(可选的)NV 块头组成。
关于 RAM 块中 CRC 使用的限制。只有当相应的 NV 块也具有 CRC 时,CRC 才可用。CRC 必须与相应的 NV 块的类型相同。

注意:有关 Crc 配置的更多信息,请参阅第 10.2.3 章。

RAM 块的用户数据区域可以位于与 RAM 块的状态不同的 RAM 地址位置(全局数据部分)。

RAM 块的数据区域应能从 NVRAMManager 以及应用端(与相应的 NV 块进行数据的传入/传出)进行访问。

注意:此图未展示 RAM 块的物理内存布局。仅展示了逻辑聚类。由于 NvM 模块不支持对齐,这可以通过配置来管理,即可以通过添加填充来增大块长度以满足对齐要求。

[SWS_NvM_00373] 「RAM 块数据应包含永久或临时分配的用户数据。」

[SWS_NvM_00370] 「对于永久分配的用户数据,在配置时已知 RAM 块数据的地址。」

[SWS_NvM_00372] 「对于临时分配的用户数据,在配置时未知 RAM 块数据的地址,并且将在运行时传递给 NvM 模块。」

[SWS_NvM_00088] 「应能够在全局 RAM 区域中无地址约束地分配每个 RAM 块。配置的 RAM 块的总数不必位于连续的地址空间中。」

3. ROM 块

[SWS_NvM_00020] 「ROM 块是一个基本的存储对象,位于 ROM(FLASH)中,用于在 NV 块为空或损坏的情况下提供默认数据。」

4. Administrative block

管理块应位于 RAM 中,并且应包含一个与数据集 NV 块相关联使用的块索引。此外,还应包含相应 NVRAM 块的属性/错误/状态信息。

在显式同步(无效/有效)的情况下,NvM 模块应使用永久 RAM 块或 NvM 模块中 RAM 镜像的状态信息来确定永久 RAM 块用户数据的有效性。

RAM 块状态“无效”表示相应 RAM 块的数据区域无效。RAM 块状态“有效”表示相应 RAM 块的数据区域有效。

“无效”的值应由除“有效”之外的所有其他值表示。

管理块对于应用程序应不可见,并且仅由 NvM 模块用于 RAM 块和 NVRAM 块本身的安全和管理目的。

NvM 模块应使用一个属性字段来管理 NV 块的写保护,以保护/取消保护 NV 块数据字段。

NvM 模块应使用一个错误/状态字段来管理上一个请求的错误/状态值。

5. NV Block Header

“如果启用了静态块 ID 机制,则 NV 块头部应首先包含在 NV 块中。”

下面是ETAS根据AutoSAR标准实现的MemStack的内存管理方式:

非易失性内存管理器(NvM)是一种基础软件(BSW)组件,其接口和行为由汽车开放系统架构(AUTOSAR)进行了标准化(在一份名为 AUTOSAR_SWS_NVRAMManager.pdf 的文档中)。它将电子控制单元(ECU)的持久数据存储设施组织成一个个可单独管理的单元,这些单元被称为 “NvM 块”。NvM 组件独立管理这些块,而不考虑其实际存储位置(例如串行电可擦可编程只读存储器(EEPROM)或闪存设备中的 EEPROM 模拟),并提供读取、写入、恢复、使无效和擦除 NvM 块的服务。

除了与诸如 ECU 管理器(EcuM)、循环冗余校验(CrC)、诊断事件跟踪(Det)、诊断错误管理器(Dem)、运行时环境(Rte)和调度器管理器(SchM)等基础组件频繁交互外,NvM 组件主要与内存接口(MemIf)进行交互以完成其任务。根据配置不同,NvM 可能还会与基础软件管理器(BswM)进行交互。

NvM 提供了一些与 NvM 块相关的基本功能:

从持久存储中将一个块读取到永久或临时随机存取存储器(RAM)块中
将一个块从永久或临时 RAM 块写入持久存储中
执行多块读取操作,从永久存储中读取多个块
执行多块写入操作,将多个块写入

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容