&
nbsp; 更新写缓存的状态信息:如果当状态变量从占用状态变为终止状态时,写周期被中断,那么整个写缓存页面的数据都可能被损坏。但是,校验存储区和主存储区都是安全的。检查操作会找到数据损坏的页面,并返回写操作中断错误代码。当运行清理程序时,它将复位写缓存子系统,并完成提交操作。
最后,在回退操作中数据容易损坏的时刻为:
更新写缓存的状态:与提交周期的最终状态类似,该操作只是简单地将写缓存的占用状态复位至终止状态。如果它被中断,则检查程序会返回写操作中断,并且清理程序会重新初始化所有的写缓存区域。校验存储区和主存储区仍是安全的。
可以看出,无论电源何时掉电或处理器何时被复位,存储子系统都可保持数据的完整性。发生电源失效事件后,存储子系统会返回到可进行读或写的状态。如果一个提交操作被中断,子系统会返回到可执行提交或回退操作的状态。
设计起步
MAXQ微控制器的 EEPROM 存储系统功能完备。系统设计者可以根据需要来增强该系统的功能。但需要注意以下几点:
C封装程序:在多数C语言标准中,与汇编语言子程序双向传送数据时都有一套标准的方法。例如在IAR开发环境下,参数在低编号的累加器中传入和传出。由于参数已经传入A[0]和A[1],为这些程序建立一个C封装器,就像写函数原型一样容易。在其它C环境下,参数传递是通过数据栈进行的,需要一个简单的封装子程序。
并发处理:首先要保证写周期的完整性,并且提供一套能够保证完整性的机制,对于整个平台的成败至关重要。但很多应用都需要这样一种机制,即可以让一系列写周期排队并一次执行完毕,从而保证全都执行或全都不执行。但本文讨论的机制不能工作在这种方式下。如果一个系统存有跨越多个页面的信息记录,则可以中断一个写操作,这使得恢复之后的记录涵盖了包含部分新数据的页面和包含部分旧数据的页面。有一种方法可避免该问题,即在执行提交操作之前允许多重写操作。这种方法并不像听上去那么简单,因为一个部分提交的事务,可能同时包括新纪录片断、旧记录片断和损坏的页面。
平均读写机制:平均读写作为闪存文件系统的一个特点,是指虚拟化页面地址,使得被频繁写入的页面会出现在存储器的任何物理位置。但是很难找到实现这一目标的最佳方法。这是因为,最直接的解决方法(活动存储块的目录处于固定的位置,并且每次写操作后都要对它进行更新)会导致存储目录的页面迅速损耗。所以,就像处理数据页面那样,还必须虚拟化和离散化目录本身。
其它页面尺寸:这里给出的系统假定采用一个16kB、每页32字节的存储器件。如果所选择的器件具有更大的页面尺寸(64字节或128字节),这些函数仍可工作,只是会伴随一些额外的写入损耗。(更新128字节页面中的32字节区段时,会对整个128字节页面执行写操作)。但这些函数无法对具有更小页面尺寸的器件进行操作。可以构建一个能够在线确定EEPROM器件特性的系统,并可根据实际特性配置系统的参数。
增强的安全性:本系统对以下类型的错误提供保护:由于电源失效或不可预期的系统复位而造成的EEPROM操作中断。但EEPROM器件偶尔也会因为其它原因出错。例如,由于电路噪声或致电离辐射导致的软件错误。或者由于一个或多个存储单元损耗而导致硬件错误。
一种解决方法是计算并维护校正子(syndrome),而不是采用简单的CRC校验字。校正子和校验字类似,但是包含了足够的信息以修复简单的位错误。最简单的校正子系统可以用log2n + 1个校验位来检验n个数据位。因此,对于一个32字节(256位)的页面来说,一个仅包含9位的校正子就可以修正任何1位错误。对数据完整性的要求更加严格时,可以采用更加复杂的系统来解决类似问题。
结语
外部串行EEPROM为微控制器环境下存储非易失数据提供了一种可靠的方法。利用本文提到的技术,即使面临写操作中断的情况,串行EEPROM依然能够可靠地工作。在任何对数据完整性要求较高的应用中,设计者都可以考虑这些技术。
上一页 [1] [2] [3]
本文关键字:暂无联系方式DSP/FPGA技术,单片机-工控设备 - DSP/FPGA技术