依AutoSAR及公开知识辛苦整理,禁止转载。 专栏 《深入浅出AutoSAR》, 全文 1600 字.
图片来源: 知乎
汽车的ECU内存中有很多不同类型的变量,这些变量包括了车辆各个系统和功能所需的数据。大部分变量在ECU掉电后就会丢失,因为它们是易失性数据,无法长期保存。然而,在这些易失性数据之外,还存在一些非常重要的变量,它们被称为非易失性数据, 比如 防盗钥匙信息。
为管理和维护所有这些重要而又不可丢失的非易失性数据,Autosar NVM模块应运而生。Autosar NVM(Non-Volatile Memory)模块专门负责处理与非易失性数据相关的存储、备份、读取和写入等任务。通过合理地管理NVM模块,可以有效地确保这些关键数据得到正确地保存,并在需要时能够快速访问。
Autosar NVM支持两种NV(Non-Volatile)变量存储方式:静态存储区域(Static Storage Area)和动态存储区域(Dynamic Storage Area)。
静态存储区域主要用于保存那些:
- 固定不变
- 只偶尔更新但占据空间较小
- 访问频率相对低的NV变量
而动态存储区域则适用于那些:
- 经常发生改变
- 更高访问频率
- 占据空间较大
NVM 内部软件架构
AUTOSAR,存储模块软件架构分层依次是:
NVM->MemIf->Fee->FLS->FLASH
1. NVM(NVRAM Manager)是存储服务层,也就是存储模块最上层,该层是对外提供的接口。抽象数据存储,上电读取和下电存储。
2. MemIf是接口层,区分下面是Fee还是Ea。实现上层和下层flash or EEPROM 的分离, 上层不需要知道下面是哪种存储设备
3. Fee是Flash模拟EEPROM的抽象层。实现对 flash 数据的存储抽象和数据结构
Fls是flash驱动。
4. EA: EEPROM Abstraction, EEPROM 抽象模块, 定义它的存储抽象和数据结构
5. FEP: External EEPROM Abstraction, 它的外部操作接口和驱动
NVM 和外部交互
NVM 内部交互
存储模块接口调用栈
存储系统数据写入的过程
AutoSar NVM存储服务层是应用层访问非易失性数据的唯一接口。
如下图所示,用户在应用层通过RTE调用NvM模块的NvM_WriteBlock(NvM_BlockIdType,const void*)接口即可实现非易失性数据的写入功能,数据写入完成后,NvM会通过NvM_JobFinishedNotification(NvM_ServiceIdType,NvM_RequestResultType)通知用户数据写入结果。在整个写入过程中,用户无需关心NvM是如何将数据写入Fls或者Eep存储设备的。
图 非易失性数据的写入时序示例
参考
META | Autosar NVM 介绍 - 知乎 |
AutoSar | AUTOSAR_SRS_MemoryServices.pdf |
AutoSar | AUTOSAR_SWS_NVRAMManager.pdf |
汽车工程师谈技术 | Autosar nvm的机制原理是怎样的 |
图片来源: COMIDOC
免责声明:
本文根据公开信息整理,旨在介绍更多的汽车知识,所载文章仅为作者观点,不构成投资或商用建议。本文仅用于学习交流, 不允许商用。若有疑问或有侵权行为请联系作者处理。