AUTOSAR 入门教程(5)MemStack(二)
本文讨论 AUTOSAR 中与内存服务(MemStack)相关的 ECU 抽象层和 MCAL 层,重点解析 Flash EEPROM 仿真技术及其在汽车电子中的作用。
内存服务架构概述
AUTOSAR 内存服务栈主要包含两个关键层级:
-
ECU 抽象层,包含以下模块:
-
内存接口(MemIf)
-
Flash EEPROM 仿真(Fee)
-
EEPROM 抽象(EA)
-
外部 Flash 驱动
-
外部 EEPROM 驱动
-
MCAL 层,包含:
-
内部 Flash 驱动
-
内部 EEPROM 驱动
内存接口(MemIf)
内存接口 的主要职责是为上层提供统一的地址空间,抽象底层 Flash 和 EEPROM 模块的技术细节。
Flash EEPROM 仿真原理
EEPROM 和 Flash 存储器都是非易失性存储器,由存储单元阵列组成,每个单元存储一个或多个信息位。两者的主要区别如下:
-
EEPROM:
-
可按字节或字边界编程和擦除
-
可单独操作单个单元而不影响其他数据
-
Flash 存储器:
-
按字或双字边界编程(也支持更大尺寸)
-
擦除只能按扇区边界进行(扇区大小通常为 KB 级)
-
数据以页为单位写入(最小写入单位)
-
以扇区为单位擦除(最小擦除单位)

通用 Flash 内存块结构,展示页与扇区的组织方式。
Flash EEPROM 仿真实现
通过 Flash EEPROM 仿真技术,可以在 Flash 内存中实现基于记录的文件系统,用于存储通常保存在 EEPROM 中的数据。
每条记录包含:
- 块状态(记录+数据)
- 块标识符
- 数据长度

Flash 内存扇区结构,展示活动扇区与非活动扇区的数据分布。
基本工作原理
仿真机制需要至少两个 Flash 扇区:
- 一个活动扇区,一个非活动扇区。
- 数据持续写入活动扇区直到空间不足:
- 相同标识符的数据更新时,写入新的空闲地址空间
- 原地址空间标记为无效
- 扇区重组:
- 当活动扇区将满时,有效数据复制到另一个已擦除扇区
- 原活动扇区被擦除
- 角色互换,新扇区成为活动扇区
- 只保留每个块的最新条目
AUTOSAR 中的 Fee 模块
Flash EEPROM 仿真模块(Fee) 主要功能包括:
- 为上层提供 32 位虚拟线性地址空间
- 支持统一分段管理
- 基于虚拟页大小配置管理块对齐:
- 块大小 = 虚拟页大小的整数倍
- 虚拟页大小 = 物理页大小的整数倍
- 虚拟页大小 >= 物理页大小
Flash 驱动功能
Flash 驱动 核心职责:
- 异步提供基础读写擦除功能
- 支持上层内存操作请求
- 管理物理存储介质特性
通过这套架构,AUTOSAR 实现了汽车电子系统中复杂内存需求的标准化管理。