新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 提高MSP430G系列单片机的Flash 擦写寿命的方法

提高MSP430G系列单片机的Flash 擦写寿命的方法

作者:时间:2012-12-05来源:网络收藏

摘要

本文引用地址:http://www.eepw.com.cn/article/257217.htm

在嵌入式设计中,许多应用设计都需要使用 存储非易失性数据,由于成本原因,某些在芯片内部并没有集成 系列处理器是TI 推出的低成本16 位处理器,在 系列中并不具备。为了存储非易失性数据, 系列处理器在芯片内部划分出了256 字节的 空间作为信息,可用于存储非易失性数据,但是由于 与EEPROM 在擦写寿命上存在一定差距,所以在实际应用中,这种应用方式并不能够满足所有客户的需求。本应用笔记介绍了使用代码区域Flash 来模拟EEPROM,通过一定的软件处理算法,可以大大增加数据存储周期的一种方法。本文给出了实现上述功能的软件流程。

1. 嵌入式Flash 存储介质与EEPROM 的主要特性对比

电可擦除和编程只读存储器(EEPROM)是在绝大多数嵌入式应用中都会使用到的用于保存非易失性数据的关键器件,用于在程序运行期间保存数据。Flash 闪存(Flash Memory,简称为Flash)是一种非易失性( Non-Volatile )存储器,广泛应用于各种嵌入式处理器中,用于存储程序代码。

由于硬件成本原因,在许多嵌入式处理器中并没有集成EEPROM 模块,通常我们可以采用在片内Flash 存储器中保存非易失性数据的应用方式来达到使用要求。对一些普通的应用场合,这种使用方式可以满足要求。

表一 EEPROMFlash 对比分析

特性

EEPROM

MSP430G 系列Flash

写时间

几个ms

随机字节写:5 到10 ms

页写: 100μs每字 (5 to 10 ms 每页 )

字节写:30 个Flash 操作时钟

周期,典型数据70us

擦除时间

N/A

页擦除:4819 个Flash 操作时

钟周期,典型数据10ms

全部擦除:10593 个Flash 操作

时钟周期,典型数据20ms

擦写方法

一旦启动写动作,不依赖CPU,

但需要持续的电源供给

需要芯片内部执行升压操作

读取访问方式

连续方式: 大概100μs

随机字方式: 大概92μs

页方式: 22.5μs 每字节

N/A

擦除次数

10 万次以上,典型参数100 万次

1 万次以上,典型参数10 万次

1.1 写访问时间

由于EEPROM 和Flash 的工作特性不同,所以写访问时间也不相同。Flash 具有更短的写访问时间,所以更适用于对存储速度有要求的场合。

1.2 写方法

外置EEPROM和采用Flash 模拟EEPROM的最大不同之处在于写的方法。

EEPROM:对EEPROM 的写操作不需要额外的操作,只需要提供电源供给;但是一旦启动写操作流程后,写操作不能够被打断。所以需要外接电容器等措施来保证在芯片掉电时能够维持供电,保证完成数据操作。

Flash 模拟EEPROM:当芯片上电后,写操作可以被电源掉电和芯片复位打断。和EEPROM 相比,需要应用设计者增加相关的处理来应对可能存在的异常。

1.3 擦写时间

EEPROM和采用Flash 模拟EEPROM在擦除时间上存在很大的差异。与Flash 不同,EEPROM 在进行写操作之前不要擦除操作。由于Flash 需要几个毫秒时间进行擦除操作,所以如果在进行擦除操作的过程中出现电源掉电的情况,需要软件做相关的保护处理。为了设计一个健壮的Flash 存储器的管理软件,需要深入的了解和掌握Flash 存储器的擦除过程特性。

2. 增加Flash 模拟EEPROM 擦写寿命的方法

可以根据用户的需求采用不同的方法实现Flash 存储器模拟EEPROM。

2.1 虚拟地址加数据方案

通常需要两个页以上的Flash 空间来模拟EEPROM。上电后,初始化代码先查找出有效页,同时将另外一个页初始化为擦除状况,以提供字节写的能力,并用作备份和随时准备执行写入操作。需要存储EEPROM 的变量数据首先写入有效页,当有效页写满后,需将所有数据的最后状态保存到备份页,并切换到备份页进行操作。每一页的第一个字节通常用来指示该页的状态。

每个页存在3 种可能状态:

  • 擦除态:该页是空的。
  • 已写满数据状态:该页已经写满数据,准备切换到下一个页进行操作。
  • 有效页状态:该页包含着有效数据并且标示状态尚未改变,所有的有效数据全部拷贝到了已经擦除的页。

下图以采用两个页模拟EEPROM的方式为例,描述了页状态字的在页0 和页1 之间的切换过程。

采用这种方式,用户不知道数据刷新的频率。

下面的图例以采用两个页模拟EEPROM 的应用方式为例进行描述。为了方便获取模拟EEPROM数据和更新数据内容,每个存储变量元素都在Flash 里定义了一个操作单元,在该操作单元中对每个存储变量元素都分配一个虚拟操作地址,即一个EEPROM 操作单元包含一个虚拟地址单元和一个数据单元。当需要修改数据单元内容时,新的数据内容和之前分配的虚拟地址一同写入一个新的模拟EEPROM存储器单元中,同时返回最新修改的数据内容。EEPROM存储单元格式描述如图二。

使用虚拟地址加数据的方案总结如下。

  • 为每一个目标存储变量分配一个虚拟地址,该虚拟地址需一同存入Flash 中。当读取存储变量内容时,需根据该变量的虚拟地址搜索虚拟EEPROM并返回最后更新的内容。
  • 在软件处理上,需要记录下一次写入的物理目的地址;在每一次执行写入操作后,根据EEPROM存储单元大小(操作粒度),将目的操作指针自动累加。
  • 当一个页(Page)写满后,需要将所有变量的EEPROM数据拷贝到下一个页,再执行该页的擦除操作。
  • 在嵌入式软件处理上需加入合适的校验机制,保证写入数据的正确性并监Flash 是否已经失效。

2.2 划分子页方案

在Flash 中划分出至少2 个页(Page)用作模拟EEPROM,根据应用需求将需写入EEPROM 进行保存的变量数据划分成一个定长的数组(子页),例如16 个字节或者32 字节,将页划分成若干子页后,需对Flash 中的所有子页按照地址顺序进行逐次编号。每个子页的第一个字节通常用来指示该子页的状态,子页状态可以为:空、已写入或者失效。

在芯片上电初始化时,首先查找出第一个尚未写入数据的子页,并进行标识,在进行写EEPROM操作时,应用程序需将待写入EEPROM 子页的所有数据按照事先约定好的顺序整理好,再一次性将所有变量数据写入空的子页中,最后将模拟EEPROM 的操作指针指向下一个空闲的子页,等待下一次写入。待将一个页的数据写满后,再进行一次擦除操作。需要处理好指向子页的指针的跳转。

每个页存在3 种可能状态:

擦除态:该页是空的。

已写满数据状态:该页已经写满数据。

有效页状态:该页包含着有效数据并且该页尚未写满,仍可向子页写入数据。

图三介绍了使用子页的方式实现Flash 模拟EEPROM的数据处理方法。


上一页 1 2 下一页

评论


相关推荐

技术专区

关闭