智能卡系统设计(一) 断电保护和数据备份

本文主要讲述智能卡系统的断电保护和数据备份相关知识,主要内容以下图,包括数据的备份、备份区的设计、均衡磨损技术以及数据恢复的时机等等。算法

1.数据备份的缘由

  在数据的一次写过程当中,因为Flash物理特性,须要先擦除要改写的地址空间所在的页面,每次擦除的物理页面大小为512 Byte(假设一页大小为512Byte)。智能卡由外部供电,若是在写过程当中忽然掉电,致使卡内数据的丢失,就有可能致使COS崩溃或者用户数据写入不正确。所以,COS必须提供掉电保护机制保证卡内数据的读写安全。安全

  数据备份就是COS的掉电保护机制,在写入数据时,将整个页面备份后再擦除写入,防止在改写过程当中出现忽然掉电,致使数据丢失。性能

 

2.数据备份的做用

  备份机制设计的目的是采起一种措施,使COS在进行写操做时将其做为一个原子操做来完成,不因忽然掉电或者恶意拔出而丢失数据,保证卡内数据的一致性和安全性。spa

掉电保护的软件措施主要包括两部分:
  一是设计系统的数据备份算法,在系统忽然断电以后,能有效地保存系统在数据更新前的正确运行状态;
  二是在供电复位以后根据备份的运行状态和数据及时恢复,避免整个COS因关键数据丢失而崩溃。设计

 

3.数据备份区的位置

  为了保证数据备份区的安全性,数据备份区通常选择经过文件系统不能访问到的位置。日志

 

4.数据备份的时机

  数据备份要在写操做以前进行,这样不管掉电发生在什么位置,备份区数据或者将要写入的地址区总有一个位置的数据时正确的。blog

5.备份的数据

  有两种备份数据的方式:
  一是旧数据备份方式,优势若是写时发生掉电,系统的数据丢失,能够经过备份将系统恢复到没更新之前的状态。
  二是新数据备份方式,由于备份的是即将写入的新数据,因此当写时发生掉电致使系统的数据丢失,不可能将系统的状态恢复到掉电以前的状态,只能到更新数据以后的状态。事务

6.备份的关键

  备份的关键是保证备份操做的原子性原理

7.备份的种类

  备份有两种机制,一种是页备份,另外一种是日志备份(也有其余称呼,如字节备份),这是两种彻底不一样的机制。详见第八条。软件

8.备份与恢复的原理

  FLASH具备写入前必须整块擦除的物理特性,因此在写以前必须对目标地址和备份区进行擦除。

  在改写文件的数据时会遇到如下两种状况(如图):
  一是须要写入的数据恰好在一个擦除块(假设为512B大小)中,则只需备份一块数据;
  二是须要写入的数据恰好存储在两个擦除块中,则须要同时备份两块的数据,而后逐块地进行擦除写入。不管是备份一块或者两块都做为一个原子操做,更新不成功的时候都统一进行旧数据的恢复操做。

8.1 页备份机制

  当写操做发生在一页以内时,页备份机制就能够知足掉电安全保护的需求。

这里使用备份旧数据的方式,具体过程以下:

  1)将要改写数据段的Flash页面的全部数据备份到备份区中。

  2)数据备份完成后,将备份标志位置为有效,并将有效的标志位和改写的地址保存到标志区。

  3)数据开始更新,依次将数据写入目标地址。

  4)备份标志位复位,表示改写成功,并将复位的标志写入到标志区。

 

安全写恢复流程:

  查看Flash备份标志位是否有效,若是无效表示不须要进行数据安全写恢复操做,结束流程;若是有效,表示要进行数据安全写的恢复操做,步骤以下,

  1)读取备份的数据,根据备份的地址,对数据进行恢复操做。

  2)全部的数据恢复成功以后,将备份标志位复位,将复位的标志位写入标志区。

 

8.2 日志备份机制

  智能卡中一次完整的事务流程里,有时会对多个页面的数据进行改写,必需要保证这个过程是原子性的,即全部数据要么被所有更新,要么一点也没有被更新。

  当涉及到两个页面时,上面所述的掉电保护机制不能保证原子性,运行的事务在非正常状态下终止,可能会致使数据出现第三态,即部分数据被更新,而另外一部分没有被更新。

 

  日志备份机制能够保证数据的保证数据的一致性、完整性。在一个屡次执行改写操做事务中,对须要处理数据的数据段在日志备份区以日志记录的方式对旧数据进行数据备份,记录这次事务下的全部完成的写操做,存储在智能卡的日志区。

  当系统不正常断电后重启时,系统将进行自检,如若发现日志备份区有有效数据,则对非正常终止的事务进行回滚,自动恢复到断电前最后一个稳定状态,使系统恢复到一致状态。这里采用的是以记录为单位的日志文件,使用旧数据回写的方式来恢复数据。

  在一个事务的执行过程当中,记录每一个事务的开始标记、结束标记,同一事务的每次更新操做均做为一个日志记录,具体执行流程以下所示:

  1)事务的标志位,置为有效。

  2)把要改写的旧数据以TLV格式备份到日志区中(T表示这次事务中第几回改写Flash;L表示要改写数据的长度与旧数据起始地址的长度和;V表示旧数据起始地址和旧数据)。

  3)数据备份完成后,将备份标志位置为有效,并将有效的标志位和数据改写地址保存到指定的位置。

  4)数据开始更新,依次将数据写入目标地址。

  5)若是事务未完成,还有其余写操做,那么转向步骤2) 继续执行,同一事务的备份数据应有序保存,以便数据的恢复。

  6)事务标志位复位,表示事务执行成功,并将复位的标志写入到Flash指定的位置。

 

数据恢复流程:

  系统进行自检,查看事务标志位是否有效,若是无效则不需进行数据一致性写恢复操做,结束流程;若有效则进行写恢复操做,步骤以下,

  1)读取最新事务的日志数据,根据备份的有效标志位,对数据进行有序的恢复操做。

  2)全部的数据恢复成功以后,将事务标志位复位,将复位的标志位写入Flash指定的位置。在事务的一次处理过程当中,可能涉及到屡次的擦写,这是很是耗时的,也很不安全,采用了日志备份,把事务的处理过程以日志的方式记录下来,不须要频繁擦写;日志区是一个大的缓冲区,不过它也是容量限制的,当达到必定容量或关键值时,就需对日志备份区进行清理,这样就减小写操做的时间,提升了智能卡的总体性能。

9.数据恢复的时机

  通常而言,备份数据的恢复时在上电以后当即进行的。
  可是若是使用某种芯片时,备份数据的恢复时间过长,读卡器会认为链接已经断掉,这时会主动断开与卡片的链接,会致使数据恢复以后的第一条指令不能执行成功。这时,就须要把备份数据的恢复操做移动到第一条指令接收完毕以后。

10.其余考量因素

10.1 均衡磨损

  由于FLASH的读写次数有限,而每次进行数据写时,不论写的位置是哪里,都要对备份区写。也就是说,备份区的写次数远远大于其余位置。

  因此备份区的写次数相当重要,决定着卡片的寿命,是一个十分重要的考量因素。

  咱们要将对备份区的写操做次数降至最低。相关方案见下节,备份方案的设计。

10.2 性能

  性能也是智能卡的一个重要的指标,而影响性能的主要因素就是Flash的写操做。

  这也是咱们想法设法减小备份区写操做的重要缘由之一。

11.备份方案设计

  备份方案设计是重中之重,设计得当,能保证掉电后卡数据的完整性,并能保证卡片的性能。

  下面咱们先来讨论一下页备份和日志备份的方案,再来着重讨论一下备份方案的改进。

1.通常的备份方案

  页备份的流程,以下图。

  日志备份的流程以下图:

 

 

   上述方案虽然能保证掉电后数据的一致性,可是备份区写太过频繁,哪怕只写一个字节也会对备份区所有写一次。

 

2.备份方案的改进

相关文章
相关标签/搜索