在嵌入式规划中,许多运用规划都需求运用EEPROM 存储非易失性数据,因为本钱原因,某些单片机在芯片内部并没有集成EEPROM。MSP430G 系列处理器是TI 推出的低本钱16 位处理器,在MSP430G 系列单片机中并不具有EEPROM。为了存储非易失性数据,MSP430G 系列处理器在芯片内部区分出了256 字节的Flash 空间作为信息Flash,可用于存储非易失性数据,可是因为Flash 与EEPROM 在擦写寿数上存在必定距离,所以在实践运用中,这种运用办法并不能够满意一切客户的需求。本运用笔记介绍了运用代码区域Flash 来模仿EEPROM,经过必定的软件处理算法,能够大大添加数据存储周期的一种办法。本文给出了完结上述功用的软件流程。
1.嵌入式Flash 存储介质与EEPROM 的首要特性比照
电可擦除和编程只读存储器(EEPROM)是在绝大多数嵌入式运用中都会运用到的用于保存非易失性数据的要害器材,用于在程序运转期间保存数据。Flash 闪存(Flash Memory,简称为"Flash")是一种非易失性( Non-Volatile )存储器,广泛运用于各种嵌入式处理器中,用于存储程序代码。
因为硬件本钱原因,在许多嵌入式处理器中并没有集成 EEPROM 模块,一般咱们能够选用在片内Flash 存储器中保存非易失性数据的运用办法来到达运用要求。对一些一般的运用场合,这种运用办法能够满意要求。
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 之间的切换进程。
图一 页状况字的在页0 和页1 之间的切换
选用这种办法,用户不知道数据改写的频率。
下面的图例以选用两个页模仿 EEPROM 的运用办法为例进行描绘。为了便利获取模仿 EEPROM数据和更新数据内容,每个存储变量元素都在 Flash 里界说了一个操作单元,在该操作单元中对每个存储变量元素都分配一个虚拟操作地址,即一个 EEPROM 操作单元包括一个虚拟地址单元和一个数据单元。当需求修正数据单元内容时,新的数据内容和之前分配的虚拟地址一起写入一个新的模仿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 的数据处理办法。
图三 运用子页的办法模仿EEPROM 存储单元