参考资料
功能简介
为了管理汽车领域中的非易失性存储器(NV Memory),在AUTOSAR环境中使用了内存协议栈(MemStack)。
AUTOSAR中的MemStack主要有以下功能:
- 数据检索:以结构化方式存储数据
- 数据存储:对NV Memory的读取与写入
- 抽象层:对不同的内部或外部NV Memory提供抽象
- 耐久性管理:管理内存写入周期
- 错误处理和纠正:管理NV Memory的纠错和错误检测机制
- 内存块管理:管理内存块(Memory Block)
- 地址映射:虚拟地址到物理地址的映射
AUTOSAR的内存协议栈为应用层和基础软件(BSW)模块提供访问非易失性存储器的服务(例如读写)。使用AUTOSAR MemStack API,应用层中的软件组件(SWC)和BSW模块可以从NV Memory读取数据并将数据写入NV Memory,例如诊断事件管理器(DEM)使用MemStack服务将冻结帧数据写入NV Memory。
存储协议栈架构
NvM访问内存抽象接口(MemIf),该接口抽象了Flash模拟Eep模块(Fee)和EEPROM抽象模块(Ea)。因此,NvM是硬件无关的。
应用程序通常不直接访问BSW模块的服务。它们通过RTE和BSW模块提供的服务端口进行连接。应用程序SWC或NV SWC可以从NV Memory读取或写入数据。NvM将调用传递给MemIf,调用将传递给内存驱动模块,驱动模块将数据写入NV Memory。如果是外部Flash(通过SPI连接)的情况下,将使用SPI驱动程序。
NvM(NVRAM Manager)
NvM模块提供了数据存储和数据维护的服务。NvM模块位于AUTOSAR堆栈的服务层中,并向用户(即SWC)提供从NV Memory读取数据或写入数据的服务。NvM是访问NV Memory的唯一方式,或者我们可以说NvM是SWC访问NV Memory的网关。
NvM执行存储器的初始化、NV Block的错误更正和错误检测。
MemIf/Fee/Ea(Memory Abstraction Interface)
MemIf提供了对底层Fee或Ea模块的抽象,因此上层模块(例如NVRAM管理器)会请求MemIf模块进行读/写操作,然后MemIf模块将请求传递给底层的Fee或Ea模块。
Fee和Ea提供虚拟32位地址空间,并抽象出设备特定的寻址方案。Fee和Ea将虚拟地址转换为物理地址。
Fls/EEP(Memory Driver)
存储器驱动程序用于访问mcu的内部flash或外部存储器。存储器驱动程序提供从EEPROM或Flash存储器读取、写入和擦除的功能。Fls驱动程序与Flash存储器相关联,EEP驱动程序与EEPROM存储器相关联。
用于外部EEPROM的驱动程序使用处理程序(在大多数情况下为SPI)或驱动程序来访问外部EEPROM设备,它位于ECU抽象层中。
后记
今年的一项PBC:仿照AUTOSAR的存储器协议栈,开发一套适合自己公司使用的存储器协议栈。经过大半年零散的、自下而上的开发与测试,我的软件终于上量产车使用了,这几天整理下资料和回顾下开发过程,后续再写些文章。