AUTOSAR MemoryStack概述
谷子
|
2019.12.24
|
0
+关注

先来一张图,AUTOSAR存储栈所包含的模块一目了然:

接下来我们就说一说每个模块的功能。

1. NvM模块

NvM(Non Volatile RAM Manager)模块主要用于管理所有非易失性存储器中的数据,给APP层提供一种便捷、灵活并可靠的数据访问及处理机制。

1)NvM中以Block(数据块)为操作单位,所有对Block的操作(包含:读、写、擦以及数据恢复等操作)均采用异步的方式,NvM可同时挂起多个对Block的操作请求;

2)NvM提供两种处理被挂起操作请求的方式:

a.基于优先级的处理方式,即根据预先配置的Block优先级,按照从高到底的顺序处理队列中缓存的Block操作请求;

b. FIFO处理方式,即按照先进先出方式处理队列中Block的操作请求;

3)NvM提供对Block中数据进行CRC校验的机制,其中CRC校验算法可由用户定义;

4)APP获取Block数据失败时,有两种数据恢复方法:

a.NvM内部自动使用ROM中的备份数据进行恢复;

b.NvM提供恢复服务接口,由APP调用该服务进行恢复;

5)可配置每个Block的处理完成通知接口,及时通知APP层Block的任务处理结果;

6)APP可灵活设置Block的数据为受保护状态,以保护Block数据不被意外更新。

2. MemIf(Memory Abstraction Interface)模块

MemIf参照AUTOSAR 标准,从EA和FEE中抽象出一种统一的线性地址空间,用于区分NVM的请求,决定请求传给下层EA还是FEE。

3.EA/FEE模块

FEE(Flash EEPROM Emulation)与EA(EEPROM Abstraction)模块从底层设备(Flash/EEPROM)中抽象出一种与物理地址无关的寻址机制,以保证上层模块(NvM模块)与底层平台的无关性。

FEE与EA模块主要的区别在于其针对的底层存储设备不同。FEE模块是基于Flash存储设备的,由于Flash设备硬件特性的局限性(例如:寿命、擦除方式等),FEE需要通过特定的算法将Flash设备模拟出EEPROM设备的一些特性,以满足性能的要求,同时提供给上层一些便捷、灵活的服务接口。EA模块是基于EEPROM存储设备的,提供了一种将底层物理地址映射为逻辑地址的机制,同时提供给上层一些便捷、灵活的服务接口。

4.EEPROM/FLASH模块

FLASH模块提供以下功能:

1)FLASH模块提供异步服务(擦除/读/写操作)。

2)FLASH模块不应当缓存数据,通过指针传递应用层数据。

3)FLASH模块不必确保应用数据缓存的一致性。

4)FLASH模块应当连接所有可用的存储区域到一个线性的地址空间(用参数FlsBaseAddress、FlsTotalSize表示)。

5)FLASH指令码执行时应当不使能中断,应当等待擦除、写命令的完成,以确保没有其他的FLS指令码在执行。

6)FLASH模块主处理函数应当通过各自在FLS模块中配置的函数指针进入flash指令码程序,不管flash指令码已被加载到RAM或在ROM直接执行。

7)在擦除或写工作完成/取消后,如果flash指令码已经通过flash驱动下载到RAM中,则FLS模块主处理函数应当从RAM中卸载(重写)flash指令码。

EEPROM模块提供以下功能:

1)EEPROM软件服务应当满足内部和外部EEP, 提供异步服务(擦除、写、读、比较),有NORMAL、BURST两种模式。

2)EEP模块不应当缓存待写或待读的数据,而是应该通过API层指针传递, 每次应当只接受一个EEPROM操作请求。

3)如果EEPROM硬件支持,EEPROM模块应当支持配置中断or查询模式,通过配置宏EepUseInterrupts,查询模式下 Eep_MainFunction函数是仍然需要调用,用于不支持中断的服务例如EEP读、比较等服务。

精选留言
延伸阅读
2020.04.03
4030阅读
更多报告干货
写留言
3184
阅读
收藏
回到顶部