微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 利用基于闪存的MCU实现用户数据存储

利用基于闪存的MCU实现用户数据存储

时间:08-24 来源:Maxim公司工程经理:Ben Smith 点击:

图4:在空间恢复之后的图2所示数据页内容


这个过程的构建使得存储的数据非常安全。在使用闪存器件时必须面对的危险是写入或擦除操作期间发生电源故障。

如果发生电源故障,则有可能一个或多个页被破坏(在写入时),或未被完全删除(在删除操作时)。但上述压缩操作本身是安全的。因为:

1. 如果在写入操作期间发生电源故障,源页是完全不受影响的。在电源恢复后,新写的页很容易被识别(它们没有页头),将其擦除后重新开始写入操作。

2. 如果在旧页被擦除期间发生电源故障,它们可能包含无效的头部。这些页可以被删除,然后将头部增加到新的页中。

3. 如果在页头部被写入新页时发生电源故障,数据是不受影响的。页头部的更新操作可以重新开始。

总之,应该没有什么情况能让意外事件造成无可挽救地破坏阵列数据。

性能增强

目前的存储子系统没有差错检测机制。在数据单元识别符中目前有6个比特是保留未用的。

设计师可以使用CRC6算法(x6+x+1)计算整个数据单元的CRC以确保不会产生任何读或写错误。虽然这不是一个特别可靠的算法(它会从64个多位差错中漏掉一个),但它能检测实际中可能发生的大多数差错。

上述系统的另外一个限制是读取访问时间必需很长。为了寻找最新的记录,每一次读取都必须读遍阵列中的每个记录。有三种方法可以用来改善访问时间:

1. 在数据单元中留一个空的字用于前向指针。当数值更新时,在前向指针中填入指向新条目的内容。这样这个表可以当作一个链接列表。

2. 向后穿越表格。现在你可以简单停留在第一次出现的请求单元上。

3. 如果只有少量的单一单元,可以在上电时就创建一个包含单元ID和指针的RAM阵列。随后的访问将非常迅速-只要读取RAM阵列就可以发现到哪里去获得数据单元。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top