[AutoSar]NVM模块介绍和使用说明
2026/9/16 14:04:07 网站建设 项目流程

目录

  • 关键词
  • 平台说明
  • 技术背景
  • 技术难点(关注点)
  • 一 、NVM简介
    • 1.1结构
    • 1.2 Block Management types
      • 1.2.1 Native NVRAM block
      • 1.2.2 Redundant NVRAM block
      • 1.2.3 Dataset NVRAM block
  • 二、功能概述
    • 2.1 APP RAM 和NVM block RAM 之间的同步机制
      • 2.1.1 Implicit和 Expliciet 的区别和优缺点。
    • 2.2 CRC 比较机制
    • 2.3 错误恢复机制
      • 2.3.1 显式恢复
      • 2.3.2 隐式恢复
    • 2.4 写入验证
  • 三、Recovery设计
    • 3.1功能概述
      • 3.1.1功能定义
      • 3.1.2 设计思路
        • 3.1.2.1.Native Block 类型
        • 3.1.2.2.Redundant Block 类型
  • 小结

关键词

嵌入式、C语言、autosar

平台说明

项目Value
OSautosar OS ,
芯片厂商Infineon
编程语言C,C++
编译器tasking

>>>>>回到总目录<<<<<<

技术背景

为了实现NVM的合理使用。
更新:[AutoSar]BSW_Memory_Stack_001 存储栈概述

技术难点(关注点)

NVM机制。

一 、NVM简介

1.1结构

1.2 Block Management types

1.2.1 Native NVRAM block

• NV Blocks: 1
• RAM Blocks: 1
• ROM Blocks: 0…1
• Administrative Blocks:1
结构最简单的 Bloack,以最小的资源访问 NV DATA。

1.2.2 Redundant NVRAM block

NV Blocks: 2
RAM Blocks: 1
ROM Blocks: 0…1
Administrative Blocks:1
与上一个NATIVE Block相比,增强的容错性、可靠性和可用性。如果在读取期间与 Redundant NVRAM block相关的NV Block 被认为无效,则从另一个没有失效的 NV Block 恢复。

1.2.3 Dataset NVRAM block

NV Blocks: 1…NvMNvBlockNum
RAM Blocks: 1
ROM Blocks: 0…NvMRomBlockNum
Administrative Blocks: 1
由大小相同的NV Block组成,应用程序一次只能访问这些块中的一个。配置数据集的总数(NV+ROM块)必须在1…255的范围内。通过设置 API NvM_SetDataIndex 来访问这些数据,其中0 到NvMNvBlockNum – 1表示RAM 块。NvMNvBlockNum 到 NvMNvBlockNum + NvMRomBlockNum - 1 表示 ROM 块。

二、功能概述

2.1 APP RAM 和NVM block RAM 之间的同步机制

2.1.1 Implicit和 Expliciet 的区别和优缺点。

1.在implicit中,APP和NVM读写同一个RAM,在APP调用NVM 的API写入RAM到NV中时,如果写操作没有完成,RAM中的值是不允许改变的。
优点是占用RAM小,缺点是不可控写入时机。
2.在Explicit中,APP和NVM的RAM之间有一个镜像RAM。
优点是APP可以有效的控制RAM,缺点是需要消耗额外的一块RAM。
开启配置为:

2.2 CRC 比较机制

在数据写入NV前计算当前要写入的CRC与NV中已经存在的CRC是否相同,如果相同则跳过不写入。缺点在于有的数据就上数据不相同,但是计算出来的CRC也是一样的,导致本应写入新的数据却没有写入,不建议使用该功能。
开启配置为:

2.3 错误恢复机制

2.3.1 显式恢复

调用 API NvM_RestoreBlockDefaults 从配置的ROM中恢复默认值。该恢复模式适用于所有的block management types。其中DATASET 必须提前设置索引。

2.3.2 隐式恢复

隐式恢复适用于 Native 和Redundant 类型的bloack,在Native CRC错误的时候或者Redundant 第一个 NV Block 数据无效的时候恢复。

2.4 写入验证

在数据写入NV 之后立刻读取与RAM中的进行对比,如果不同则尝试重写,DEM报错 NVM_E_VERIFY_FAILED。
开启配置为:

三、Recovery设计

3.1功能概述

3.1.1功能定义

增强软件的可靠性和错误抵抗能力。当NV中数据损坏或者无效,为空的条件下,APP能够从ROM或者备份数据中恢复。

3.1.2 设计思路

3.1.2.1.Native Block 类型

结构最简单的Block。用于存放传感器标定系数,电机相关系数等。
1.应用场景:ReadAll的时候如果检测到RAM数据不匹配或者为空,则从配置的ROM中隐式恢复到RAM。
2.实现和测试方式:
如下图配置RAM和ROM,先不勾选CRC检测,写入数据。


其中 Addressing为MenMap机制使用。


然后修改配置,加上CRC检测。

3.1.2.2.Redundant Block 类型

带有两个相同NV Bloack。
1.应用场景:在ReadAll的时候,当检测到第一个NV无效的时候会从第二个NV中加载数据到RAM。如果恢复失败会报告给DEM NVM_E_LOSS_OF_REDUNDANCY(只有两个都无效的时候)。恢复后会重建 Redundant,写回NV。当NvM_ReadBlock 时,只要有一个NV读取成功,都不会报告给DEM。在调用NvM_WriteBlock的时候优先写入那些没有被读取的NV ,并且只要有一个NV写成功,状态都会被置位NVM_REQ_OK。调用NvM_EraseNvBlock的时候必须两个NV都被擦除才算成功。在使用NvM_WriteAll 的时候,如果配置了重建Redundant,那么该Block写入保护的功能会被忽视。


小结

注意根据项目需求和功能安全相关选择合适的NV方案。

>>>>>回到总目录<<<<<<

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询