【小猫爪】AUTOSAR学习笔记16 您所在的位置:网站首页 nevada的音标 【小猫爪】AUTOSAR学习笔记16

【小猫爪】AUTOSAR学习笔记16

2023-11-21 06:17| 来源: 网络整理| 查看: 265

【小猫爪】AUTOSAR学习笔记16-Memory Stack之Nvm模块 前言1 Memory Stack结构2 NvM模块2.1 Block2.2 数据结构2.3 Redundant Block2.4 Dataset Block2.5 Read/Write Retry2.7 NvM_GetErrorStatus2.8 与BswM模块的交互 3 MemIf模块END

前言

  这一节开始来介绍一下在AUTOSAR架构中一个非常重要的部分,那就是存储系统,即AUTOSAR的Memory Stack。

1 Memory Stack结构

  Memory Stack结构图如下: 在这里插入图片描述   再细致一点如下图: 在这里插入图片描述   Memory Stack也是非常完整的一个AUTOSAR结构,有服务层的NvM模块,有ECU抽象层的Fee模块和Ea模块,还有MCAL层的驱动。其中NVRAM Manager模块是整个Memory Stack的控制器,它更多的关注于数据本身的,对数据进行校验,读写操作的发起,而根据最终存储器类型的不同,则最终负责数据存储和读写操作的则是Fee模块(FLASH)和Ea模块(EEPROM)。而在MCAL层则根据是内部FLASH,外部FLASH,外部EEPROM的各种情况而灵活变化。

2 NvM模块

  NvM 模块位于 Memory Stack 的服务层,实现了对ECU中Non-Volatile数据的统一管理。NvM 模块主要功能如下:   1. 将不同类型的存储器(Flash、EEPROM 等)进行统一管理,提供AUTOSAR 标准服务接口   2. 提供以 Block 为单位的读、写等服务   3. 基于优先级的数据块访问机制,提高用户访问的灵活性和实时性   4. 提供访问任务的队列   5. 工作请求异步处理   6. 提供 CRC 机制,保障数据的一致性   7. 提供数据故障恢复机制   8. 提供任务完成通知机制

2.1 Block

  这里的Block可不是FLASH里的那个硬件Block,这里的Block是一种软件层面上的玩意,它是NvM操作的数据基本单元,也就是说,NvM模块里面操作的对象就是Block,所以在AUTOSAR里想要存储数据,那么就要提前给数据分配Block。

  NvM 支持三种类型的 Block,分别为:   1. Native Block:最常用的 Block,用于一般数据的管理;   2. Redundant Block:该 Block 支持数据冗余,可用于对一些安全性要求较高的数据进行管理,其实就是可以对其进行备份的Block。   3. Dataset Block:该 Block 支持同一类型的多套数据。用户可以根据当前的运行状态,选择使用多套数据中的一套。

  每个 Block,又由以下几个部分组成:   1. NV Block:位于掉电不丢失的设备,如 Flash,用于正常的存储数据;   2. RAM Block:程序运行时,用户的应用程序直接访问的 Block,有点类似于缓存,当条件满足时会将其更新至NV Block。临时 RAM Block:在运行时,用户通过接口将 RAM 的地址传递给 NvM;永久 RAM Block:用户配置给该 Block 的固定的 RAM 地址,运行时不可改变。   3. ROM Block:存储该 Block 的默认值,位于掉电不丢失的设备,当 NV Block 的数据异常时,可恢复为默认值;   4. Administrative Block:管理 Block,一般位于 RAM 中,用于记录和存储程序运行时 Block的状态,如地址、CRC 结果、Block 状态等。Administrative Block 由 NvM 内部实现,不用关心。

  不同类型Block的组成情况如下表所示:

类型NVRAMAdministrativeROMNATIVE1110 ~ 1REDUNDANT2110 ~ 1DATASET1 ~ 256110 ~ 256

  此外NvM 内部还会预留 2 个特殊 Block,Block0 和Block_CfgID。其中Block0 不存储任何实际数据信息,仅用于记录 WriteAll 和 ReadAll 的工作结果,Block_CfgID 则用于存储当前内存的配置信息。用户实际使用的 Block 从第 3 个 Block 开始。

  在NvM模块的下层模块Fee和Ea模块中,它们的基本数据存储单元也叫做Block,NvM模块的Block数据来源于Fee和Ea的Block,前面提到了NvM的三种Block由若干个NV Block组成,所以这两种Block是一对多的情况。NvM的Block编号叫做Block Handle,Fee和Ea的Block编号叫做Block ID,也就是说APP通过Block Handle来索引NvM的数据,而NvM则是通过Block ID来索引Fee和Block的Block数据。

  Block ID 的计算公式:Block ID = (Block Base Num



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有