1. 简介
通常有三种方法实现 EEPROM功能。
其一是使用真正的 EEPROM,例如具有 256 B EEPROM 的 KEA64。优点是不占用闪存,但缺点是价格昂贵。
第二种方法是使用软件实现 EEPROM 功能,如 KEA8 和 KEA128。优点是便宜,但缺点是它占用了闪存,包括用于 EEPROM 实现的额外代码和模拟EEPROM占用的闪存。
第三种方法是使用固件来实现 EEPROM 功能,例如 S32K1xx。优点在于 EEPROM 功能的实现对客户来说是绝对透明的,并且不需要闪存来存储用于 EEPROM 实现的额外代码。
2. S32K1xx EEE 工作
为了提供增强的 EEPROM 功能,S32K1xx EEE 使用了一块 RAM(FlexRAM),一块闪存(FlexNVM)和EEE 状态机器。启用 EEE 功能后,FlexRAM 将成为您的 EEE 存储空间。FlexRAM 地址空间是您访问所有 EEE 数据的地方。当访问 EEE 时,EEE 状态机会跟踪数据并将其备份为数据记录,存储在用作 E-flash 的 FlexNVM 的部分空间。
使用大容量 E-flash 来备份少量EEE 数据,使 S32K1xx EEE 的实现提供极高的耐久性。EEE 状态机使用72位记录将数据从 EEE 备份到闪存(E-Flash)中。记录的32位用于数据,另外40位是有关数据的地址、状态和奇偶校验信息。按需写入和删除数据记录。这意味着如果 EEPROM中的某个位置从未被访问过,则不会有该位置的数据记录。这有助于减少需要备份的数据量,并增加内存耐久性。
3. S32K1xx EEE 如何使用内存
3.1 EEE 功能启用 及 EEE 内存配置细节
S32K1xx 拥有两块独立的闪存,P-Flash 块和FlexNVM 块。P-Flash 块用作程序闪存块,但也可用于存储指令和数据。FlexNVM块是一个可配置的闪存块,可用作额外的闪存空间(D-flash)、支持增强型 EEPROM 功能的存储器(E-flash)或作为两者的组合。
注:FlexNVM 中不用作 EEE 备份存储器(E-flash)的部分称为D-flash。该闪存通常用于数据存储空间;但是,与 P-flash 一样,D-flash 实际上可以用于指令或数据的存储。
如下图所示:整个 FlexNVM 用作 E-flash 的示例。FlexRAM 作为 EEE 内存空间(多达 4kB)。EEE 数据的任何读写操作都使用这 4kB 存储空间,因为 E-flash 无法直接访问。EEE 状态机自动管理 EEE 内存的所有写入,并按需生成闪存写入及擦除操作到 E-flash。
EEE数据的大小和用来备份EEE数据的E-flash 内存大小都是可编程的。这让你可以在 EEE 内存大小和耐久性之间做出权衡。有两个可变参数来定义你实际的存储空间使用情况,这些参数有:
1. EEE 大小 — 这是EEE 数据需要的总大小。对于 S32K14x 设备,EEE 的总大小在 0 或 4kB,S32K11x 设备则为 0 或2kB。
2. FlexNVM 分区 — 该参数定义了 FlexNVM 作为普通闪存(D-flash)的数量和用作 EEE 备份的数量(E-flash)。如果被使用,那么至少 32kB(针对 S32K14x 设备)或 24kB(针对 S32K11x 设备)的 FlexNVM 必须被分配为 E-flash。为了更好的获得EEE的耐久性,整个 FlexNVM 可以被用作 E-flash。
3.2 EEE内存分区
程序分区命令使 FlexNVM 块准备以用作数据闪存、模拟 EEPROM 或两者的组合,并初始化 FlexRAM。有关详细信息,请参阅
S32K1xx的参考手册。下表显示了分区命令所需的参数。
Flash 命令通过FTFC 模块中 FCCOB 寄存器进行配置。每个命令包自己的参数,程序分区命令需要六个参数:
•FCCOB0 定义了所需的命令。0x80 指 PGMPART 命令(程序分区命令)。
•FCCOB1 和 FCCOB2 用于 CSEc 配置。这两个参数在 AN5401 - Getting Started with CSEc Security module。有深入解释。
仅对于 EEPROM 功能,这两个值可以设置为 0x00。
•FCCOB3(仅使用 bit 0)配置在复位期间 FlexRAM 是否加载 EEPROM 数据。如果该位(0x00),则 FlexRAM 在复位期间载入 EEEPROM 数据。另一方面,如果该位被设置为(0x01),则 FlexRAM 在复位期间不载入 EEEPROM 数据,这意味着在复位后它将作为传统 RAM 运行,直到发出 FlexRAM 配置命令更改其模式,如 S32K1xx FlexRAM configuration 中描述的那样。
• FCCOB4 表示 EEPROM 数据大小。根据 FlexRAM 大小该选项有两个不同的值。
全部0条评论
快来发表一下你的评论吧 !