ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

[AutoSar]NVM模块介绍和使用说明

[AutoSar]NVM模块介绍和使用说明 目录关键词平台说明技术背景技术难点关注点一 、NVM简介1.1结构1.2 Block Management types1.2.1 Native NVRAM block1.2.2 Redundant NVRAM block1.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平台说明项目ValueOSautosar OS ,芯片厂商Infineon编程语言CC编译器tasking回到总目录技术背景为了实现NVM的合理使用。更新[AutoSar]BSW_Memory_Stack_001 存储栈概述技术难点关注点NVM机制。一 、NVM简介1.1结构1.2 Block Management types1.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 blockNV Blocks: 2RAM Blocks: 1ROM Blocks: 0…1Administrative Blocks:1与上一个NATIVE Block相比增强的容错性、可靠性和可用性。如果在读取期间与 Redundant NVRAM block相关的NV Block 被认为无效则从另一个没有失效的 NV Block 恢复。1.2.3 Dataset NVRAM blockNV Blocks: 1…NvMNvBlockNumRAM Blocks: 1ROM Blocks: 0…NvMRomBlockNumAdministrative Blocks: 1由大小相同的NV Block组成应用程序一次只能访问这些块中的一个。配置数据集的总数(NVROM块)必须在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方案。回到总目录
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进