微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 充分利用MAXQ®处理器的非易失存储服务

充分利用MAXQ®处理器的非易失存储服务

时间:05-21 来源:互联网 点击:

个数据元都有精确的条目对应。填写后的页面如图3示意。这样,就可以安全擦除源页面,并把页面报头写入目标阵列。


图3. 空间恢复后,图2中的数据页面会如此表现。

这个过程对于数据存储会非常安全。然而,当使用闪存器件时还要面对另一个风险:在写或者擦除操作中掉电。假如发生掉电,有可能会破坏一个或者多个页面(例如写操作)或者不能完全擦除页面(例如擦除操作)。而我们这种紧凑的操作从本质上讲是安全的。可以考虑以下的情况:

  • 假如在填写操作时掉电,源页面仍然保持完整。当重新上电后,很容易辨别新写的页面(他们没有页面报头)并把它擦除,再重新启动填写操作。
  • 假如在正擦除旧页面时掉电,可能会包含无效的报头。可以擦除这些页面并把报头添加到新页面。
  • 假如在正把页面报头写入到新页面时掉电,数据仍然是完整的。页面报头更新操作可以再次重新启动。

简言之,这些预料之外的突发事件不会导致阵列数据被破坏并不可恢复。

方案2的改进

这里介绍的存储子系统没有错误检测的机制。在数据元标识符中有一些位(这里的是6位)没有被使用。可以使用CRC6算法(x6 + x + 1)根据数据元计算出CRC以确保没有发生读写错误。这虽然不是特别强大的算法(它会错过多位错误中的1/64),它可以检测到多数可能发生的错误。

这个方法对系统的另一个限制是读取时间很长。每次读操作都需要读取阵列中的所有记录,以找到最近的记录。有3个方法可以用来缩短读取时间:

  1. 在数据单元中为正向指针留一个空字节。当数据更新时,为正向指针分配一个新的入口地址。按照这种方式,数据表格可以按链表的方式移动。
  2. 向后移动表格。这样就可以在被请求信号第一次出现时停止搜索。
  3. 假如单元数量很少,可以在启动时建立一个RAM阵列,包含单元ID和指针。后面的读取会很快。只需读RAM阵列以决定从哪儿获取数据单元。

结论

非易失数据存储是每位设计工程师迟早都必须面对的问题。使用MAXQ处理器灵活的闪存,就不用再借助于串行存储保存配置数据了。

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

网站地图

Top