闪存智能卡的数据移动方法

文档序号:6583275阅读:239来源:国知局
专利名称:闪存智能卡的数据移动方法
技术领域
本发明涉及数据的移动方法,尤其是一种应用在闪存智能卡中的数据移动方法。
背景技术
随着移动通信技术的发展,移动电话的使用已经十分普及,移动电话大多使用可 拆装的智能卡进行通讯,如SIM卡、UIM卡等。用户使用移动电话通讯时,移动电话对智能 卡进行读写操作,如读取存储在智能卡内的用户个人数据,向智能卡写入接收到的更新菜 单或用户输入的联系人信息等。 现有的电信智能卡按存储器类型可分为掩膜智能卡(R0M卡)与闪存智能卡 (Flash卡),掩膜智能卡中设有使用掩膜技术的只读存储器(ROM),闪存智能卡中设有闪速 存储器(Flash)。 参见图l,现有闪存智能卡存储器具有一个随机存储器11 (RAM)及闪速存储器12, 随机存储器11用于存储变量数据,闪速存储器12划分为代码存储区13以及数据存储器区 14,代码存储器13存储有闪存智能卡的可执行程序,数据存储区14存储可更新的用户数 据。闪存智能卡在使用过程中,由于用户经常更新信息,因此数据存储区14存储的信息需 要经常移动。 现有闪存智能卡对数据的移动具需要对数据进行擦写操作,即擦除原有的数据, 并将需要写入的数据写入到存储区中。闪存智能卡对数据的擦写操作大多以"页"为单位, 即每次擦除一页数据,并写入一页新的数据。目前闪存智能卡"页"的大小一般为128个字 节或256个字节,也有512个字节,即闪存智能卡移动数据时,需要对128个字节或256个 字节或512个字节的数据进行擦写操作。 但现在闪存智能卡内一次移动的数据量通常较大,往往大于一页数据,因此,闪存 智能卡需要一页一页地移动数据。如图2(a)所示,需要将数据存储区14内存储在B区域 的一页半数据(图中阴影部分)移动至A区域内,则闪存智能卡需要分两次实现数据的移 动首先将存储地址较低的一页数据移动至A区域,然后将剩余的半页数据移动至A区域, 每一次的数据移动称为数据移动的一个子过程。若数据移动成功,A区域将存储有一页半 的数据,如图2(b)所示。 但是,一旦在数据移动过程中发生断电,数据则无法完整地移动至A区域。例如, 第一页数据移动完毕后发生断电,则移动后的数据存储结构如图2(c)所示,A区域中只有 第一页存储有数据,后半页的数据没有被移动。当程序执行时需要调用A区域的数据时无 法获得完整的数据,影响闪存智能卡的工作。

发明内容
本发明的主要目的是提供一种确保数据完整地移动的闪存智能卡数据移动方 法; 本发明的另一目的是提供一种有利于闪存智能卡正常工作的闪存智能卡数据移动方法。 为实现上述的主要目的,本发明提供的闪存智能卡数据移动方法中,闪存智能卡 具有一闪速存储器,闪速存储器包括代码存储区以及数据存储区,该方法包括如下步骤
数据移动步骤在数据存储区中设置索引区,向索引区写入数据移动的索引信息, 索引信息包括主索引信息以及子索引信息;根据索引信息计算当前数据移动子过程的数据 移动长度,并将该数据移动长度的数据移动至目标地址;判断是否所有数据移动完毕,若未 移动完毕,则计算下一次子过程的子索引信息以及数据移动长度,将子索引信息更新成下 一子过程对应的子索引信息,继续移动数据;若移动完毕,则删除索引区的主索引信息;
数据恢复步骤闪存智能卡断电恢复后,判断索引区中是否存储有索引信息,若存 储有索引信息,则根据索引信息恢复执行数据移动步骤。 由上述方案可见,数据移动步骤执行完毕后,在下次芯片重新上电时还有数据恢
复步骤,如果是在数据移动步骤执行过程中发生的断电,则下次上电时在数据恢复步骤中
可及时地恢复数据移动,能确保闪存智能卡在断电恢复后能继续执行数据移动,可确保数
据移动的完整性,并确保闪存智能卡的工作不会因数据不完整而受到影响。
—个优选的方案是,数据恢复步骤还包括在主索引信息存在的前提下,闪存智能
卡判断索引区中是否存储有子索引信息,若存储有子索引信息,则根据子索引信息恢复执
行数据移动步骤。 由此可见,数据恢复步骤中,闪存智能卡根据断电时数据移动步骤中止时数据移 动情况继续执行数据移动步骤,将未移动的数据及时移动至目的地址上,确保数据移动的 完整性。同时,数据恢复步骤不对已经成功移动的数据再进行移动,节省移动的时间。
进一步的方案是,数据恢复步骤进一步包括闪存智能卡判断索引区中存储有子 索引信息后,将子索引信息写入主索引信息的存储区域,根据写入后的主索引信息恢复执 行数据移动步骤。 这样,可确保数据恢复过程只是针对未移动的数据进行移动,而不对已经移动的 数据进行移动,避免闪存智能卡数据的重复移动,减少闪存智能卡对同一存储区的擦写次 数,且节省数据恢复所需时间,提高闪存智能卡的工作效率。


图1是现有闪存智能卡存储器的结构示意框图; 图2(a)是现有闪存智能卡数据移动时数据初始状态存储示意图; 图2(b)是现有闪存智能卡数据移动时数据移动完毕后的存储示意图; 图2(C)是现有闪存智能卡数据移动时数据移动失败的存储示意图; 图3是应用本发明实施例的闪存智能卡数据移动时数据初始状态的存储示意图 图4是应用本发明实施例时索引区的存储示意图; 图5(a)是本发明实施例中数据移动步骤第一子过程的数据存储示意图; 图5(b)是本发明实施例中数据移动步骤第一子过程的索引区的存储示意图; 图6(a)是本发明实施例中数据移动步骤第二子过程的数据存储示意图; 图6(b)是本发明实施例中数据移动步骤第二子过程的索引区的存储示意图; 图7(a)是本发明实施例中数据移动步骤第三子过程的数据存储示意 图7(b)是本发明实施例中数据移动步骤第三子过程的索引区的存储示意图;
图8是本发明实施例中数据恢复步骤的流程图。
以下结合附图及实施例对本发明作进一步说明。
具体实施例方式
应用本发明的闪存智能卡具有闪速存储器,闪速存储器内有代码存储区以及数据 存储区,其中数据存储区划分为多页的存储区域,每次对数据的擦写操作以页为单位。本发 明中,可根据闪存智能卡进行合适的页设计,一页数据的大小可以是128个字节,也可以是 256个字节,还可以是512个字节。 参见图3,作为本发明的一个实施例,闪存智能卡中需要将长度为两页的数据(图
3中阴影部分)移动至从第一页某一地址开始的一个连续的存储区域中,需要移动的数据
的起始地址为总源地址SouAddr,数据移动的目标位置起始地址为总目标地址DesAddr,总
源地址SouAddr与总目标地址DesAddr之间的距离为移动距离Distance。优选地,移动距
离Distance大于移动数据的总长度Length,本例中总长度Length的长度为两页。 移动数据时,闪存智能卡根据数据移动后的存储区域页面划分存储数据,将需要
移动的数据划分为多个数据块,并每次对一个数据块的数据进行移动,以确保每次所移动
的数据在同一页内,而每次移动一个数据块的过程称为数据移动的子过程。 如图3所示,移动后的数据将存储在第一页、第二页以及第三页的存储区域上,则
将移动后存储在第一页的数据定义为第一数据块,移动第一数据块的过程称为数据移动的
第一子过程。类似地,移动后存储在第二页的数据定义为第二数据块,第二数据块的移动过
程称为第二子过程,移动后存储在第三页的数据定义为第三数据块,第三数据块的移动过
程称为第三子过程。每一数据块的长度由闪存智能卡在数据移动过程中计算获得,具体方
法在后面将详细说明。 本发明的移动数据方法包括数据移动步骤以及数据恢复步骤,在数据移动步骤
中,首先需要在数据存储区中设置一个索引区,索引区的存储结构如图4所示。 索引区包括主索引区以及子索引区,其中主索引区存储有主索引信息,子索引区
存储有子索引信息。本实施例中,主索引信息包括数据移动的总目标地址DesAddr、总源地
址SouAddr以及数据移动的总长度Lentgh,其中总长度Lentgh的数值为两页。 子索引信息包括某一子过程的目标地址DesAddr N、源地址SouAddr N以及数据移
动的剩余长度Lentgh N,其中N表示该子过程的序号。每一子过程的目标地址DesAddr N、
源地址SouAddr N以及剩余长度Lentgh N均在数据移动过程中计算获得。 闪存智能卡写入索引信息,包括主索引信息及子索引信息时,采用"断电写"的方
式写入。所谓"断电写",就是在写入信息前先将目标区的数据备份,然后删除目标区的原有
数据,再将需要写入的数据写入到目标区中,待数据写入后将备份的数据删除。 一旦向目标
区写入数据过程中发生断电,断电恢复后闪存智能卡根据备份的数据恢复目标区的原始数据。 本实施例中,写入索引信息时采用"断电写"方式,尤其是写入子索引信息时,首先 将原有的子索引信息备份,再删除原有的子索引信息,然后将新的子索引信息写入子索引 区,待新的子索引信息写入后删除备份的原子索引信息。
5
参见图5(a)及图5(b),数据移动时从地址最低的数据开始,即自总源地址 SouAddr开始将数据移动至总目标地址DesAddr的存储区域上。由于移动后的数据存储在 第一页上,因此该过程为数据移动的第一子过程。 数据移动时,首先需要向索引区写入索引信息,包括主索引信息以及子索引信 息。其中主索引信息包括数据移动的总目标地址DesAddr、总源地址SouAddr以及总长度 Lentgh,而子索引信息应当包括第一子过程的目标地址、源地址以及剩余数据长度。由于第 一子过程的目标地址与主索引信息中的总目标地址DesAddr相同,第一子过程的源地址与 主索引信息的总源地址SouAddr相同,且剩余数据长度与需要移动数据的总长度Lentgh相 同,因此在第一子过程中不写入子索引信息,以节省数据移动所需时间,提高闪存智能卡数 据移动的效率。写入索引信息的索引区存储结构如图5(b)所示。 写入索引信息后,闪存智能卡计算第一子过程需要移动数据的长度,即数据移动 长度Copylgthl,数据移动长度Copylgthl是总目标地址DesAddr与第一页末地址之间的长 度距离。计算数据移动长度Copylgthl后,闪存智能卡将该长度内的数据移动至第一页相 应的存储位置上,并在数据移动完毕后,判断是否所有数据移动完毕。由于仍有部分数据未 移动,则需要执行第二子过程,继续移动剩余数据。 参见图6(a)及图6(b),执行第二子过程时,首先计算第二个子索引信息,然后向
子索引区以"断电写"方式写入第二子过程的子索引信息,包括目标地址DesAddr2、源地址
SouAddr2以及剩余长度Lentgh2,其中目标地址DesAddr2是总目标地址DesAddr与第一子
过程的数据移动长度Copylgthl之和,即 DesAddr2 = DesAddr+Copylgthl (式1) 源地址SouAddr2是总源地址SouAddr与第一子过程的数据移动长度Copylgthl 之和,即 SouAddr2 = SouAddr+Copylgthl (式2) 剩余长度Lentgh2是总长度Lentgh与第一子过程的数据移动长度Copylgthl之 差,即 Lentgh2 = Lentgh-Copylgthl (式3) 写入上述子索引信息后,闪存智能卡计算第二子过程的数据移动长度Copylgth2, 数据移动长度Copylgth2为目标地址DesAddr2与第二页末地址之间的长度。由于目标地 址DesAddr2为第二页的起始地址,因此数据移动长度Copylgth2为第二页数据的总长度。
计算数据移动长度Copylgth2后,闪存智能卡将对应的数据移动至第二页存储区 域中,并在数据移动完毕后,判断是否所有数据移动完毕,由于仍有数据未移动,闪存智能 卡需要执行第三子过程,继续移动数据。 参见图7(a)及图7(b),执行第三子过程时,首先计算第三个子索引信息,然后向 索引区以"断电写"的方式写入第三子过程的子索引信息,包括目标地址DesAddr3、源地址 SouAddr3以及剩余长度Lentgh3,其中目标地址DesAddr3是总目标地址DesAddr与第一子 过程的数据移动长度Copylgthl、第二子过程的数据移动长度Copylgth2之和,即
DesAddr3 = DesAddr+Copylgthl+Copylgth2 (式4) 源地址SouAddr3是总源地址SouAddr与第一子过程的数据移动长度Copylgthl、 第二子过程的数据移动长度Copylgth2之和,即
SouAddr3 = SouAddr+Copylgthl+Copylgth2 (式5) 剩余长度Lentgh3是总长度Lentgh与第一子过程的数据移动长度Copylgthl、第
二子过程的数据移动长度Copylgth2之差,即 Lentgh3 = Lentgh-Copylgthl-Copylgth2 (式6) 可见,每一子过程的目标地址是总目标地址与已经执行子过程数据移动长度之 和,每一子过程的源地址是总源地址与已经执行子过程数据移动长度之和,而每一子过程 的剩余长度是总长度与已经执行子过程数据移动长度之差。 每次更新子索引信息时都采用"断电写"的方式,例写入第三子过程的子索引信 息时,即先将第二子过程的子索引信息备份,然后删除第二子过程的子索引信息,再写入第 三子过程的子索引信息,最后将备份的第二子过程的子索引信息删除。 向索引区写入子索引信息后,闪存智能卡计算第三子过程的数据移动长度 Copylgth3,数据移动长度Copylgth3为目标地址DesAddr3与数据移动后数据存储末地址 之间的长度。计算数据移动长度Copylgth3后,闪存智能卡将相应的数据移动至第三页的 存储区域上,并判断是否所有数据移动完毕,由于所有数据均已移动完毕,则删除索引区中 所有的索引信息,数据移动步骤结束。 在数据移动过程中,由于索引区中写入了索引信息,包括主索引信息以及子索引 信息,一旦在数据移动过程中发生断电,则因为索引区中将存储有索引信息,所以闪存智能 卡可在下次上电时通过读取索引区的数据来判断数据移动过程中是否发生断电,这一过程 在数据恢复步骤中实现。 参见图8,一旦数据移动过程中发生断电,则闪存智能卡在再次上电时进行断电恢 复,首先执行步骤S1,读取索引区中的数据,并执行步骤S2,判断索引区中是否存储有主索 引信息,若没有主索引信息,表示数据移动过程中未发生断电,结束数据恢复步骤。若存储 有主索引信息,表示数据移动过程中发生断电,需要恢复执行数据移动步骤,则进一步执行 步骤S3。 闪存智能卡读取索引区中子索引区的数据,并执行步骤S4,判断是否存储有子索
引信息,若存储有子索引信息,表示在执行第二子过程或第三子过程时发生断电,闪存智能 卡执行步骤S5,根据子索引信息恢复执行数据移动步骤。 此时,闪存智能卡将子索引区的子索引信息写入到主索引区中,即将该子索引信 息作为主索引信息使用,并根据写入后的主索引信息恢复数据移动。此时,闪存智能卡根据 写入的总目标地址、总源地址以及需要移动数据的总长度信息移动数据,数据移动步骤如 前述的方式执行,在此不再赘述。 若子索引区中不存储有子索引信息,表示断电发生在主索引信息写入完毕且第一 子过程的写子索引信息未成功时间里,此时整个数据尚未开始任何长度的数据移动,闪存 智能卡执行步骤S6,根据主索引信息恢复数据移动,即根据总目标地址、总源地址以及总长 度信息移动数据。 当然,数据恢复步骤只有在闪存智能卡发生断电后才执行的步骤,若闪存智能卡 执行数据移动步骤后未发生断电,则无需执行数据恢复步骤。 由于索引信息采用"断电写"方式,一旦写入新的索引信息时发生断电,闪存智能 卡可根据备份的索引信息恢复索引区的原索引信息,闪存智能卡根据恢复后的索引信息恢
7复数据移动。这样,即使在索引信息写入时断电,闪存智能卡仍能恢复索引信息,确保数据 移动的完整性。 由上述方案可见,一旦数据移动过程中发生断电,闪存智能卡可在断电恢复后恢
复数据移动,确保数据移动的完整性,避免闪存智能卡因数据不完整而导致无法正常运行。 当然,上述实施例仅是本发明一个较佳的实施方式,在实际应用时还可以有更多
的变化,例如数据移动时不以一页数据为单位,以某一特定字节数的数据为数据块进行移
动;或者,在第一子过程中也写入子索引信息等,这些不影响本发明的实施。 最后,需要强调的是,本发明不限于上述实施方式,诸如索引区中索引信息存储位
置的改变、子索引信息各种数据计算方法的改变等微小变化也应该包括在本发明的保护范围内。
权利要求
闪存智能卡的数据移动方法,所述闪存智能卡具有一闪速存储器,所述闪速存储器包括代码存储区以及数据存储区,该方法包括如下步骤数据移动步骤在数据存储区中设置索引区,向所述索引区写入数据移动的索引信息,所述索引信息包括主索引信息以及子索引信息;根据所述索引信息计算当前数据移动子过程的数据移动长度,并将该数据移动长度的数据移动至目标地址;判断是否所有数据移动完毕,若未移动完毕,则计算下一次子过程的子索引信息以及数据移动长度,将子索引信息更新成下一子过程对应的子索引信息,继续移动数据;若移动完毕,则删除索引区的所述主索引信息;数据恢复步骤闪存智能卡断电恢复后,判断索引区中是否存储有索引信息,若存储有索引信息,则根据索引信息恢复执行数据移动步骤。
2. 根据权利要求1所述的闪存智能卡的数据移动方法,其特征在于 所述数据恢复步骤还包括判断索引区中是否存储有子索引信息,若存储有子索引信息,则根据子索引信息恢复执行数据移动步骤。
3. 根据权利要求2所述的闪存智能卡的数据移动方法,其特征在于所述数据恢复步骤进一步包括闪存智能卡判断索引区中存储有子索引信息后,将所 述子索引信息写入主索引信息的存储区域,根据写入后的主索引信息恢复执行数据移动步 骤。
4. 根据权利要求1所述的闪存智能卡的数据移动方法,其特征在于所述数据恢复步骤还包括判断索引区中是否存储有子索引信息,若没存储有子索引 信息,则根据主索引信息恢复执行数据移动步骤。
5. 根据权利要求1至4任一项所述的闪存智能卡的数据移动方法,其特征在于 所述主索引信息包括移动数据的总目标地址、移动数据的总源地址以及移动数据的总长度;所述子索引信息包括当前移动数据子过程的目标地址、当前移动数据子过程的源地 址以及剩余数据长度。
6. 根据权利要求5所述的闪存智能卡的数据移动方法,其特征在于所述子索引信息的当前移动数据子过程目标地址为所述总目标地址与已执行的子过 程的数据移动长度之和。
7. 根据权利要求5所述的闪存智能卡的数据移动方法,其特征在于所述子索引信息的当前移动数据子过程源地址为所述总源地址与已执行的子过程的 数据移动长度之和。
8. 根据权利要求5所述的闪存智能卡的数据移动方法,其特征在于所述子索引信息的剩余数据长度为所述主索引信息中的总长度与已执行的子过程的 数据移动长度之差。
全文摘要
本发明提供一种闪存智能卡的数据移动方法,该闪存智能卡的存储器设有数据存储区,该方法包括数据移动步骤在数据存储区中设置索引区,写入数据移动的索引信息,包括主索引信息及子索引信息;根据索引信息计算当前数据移动子过程的数据移动长度,并将数据移动至目标地址;判断是否所有数据移动完毕,若未移动完毕,则计算下一次子过程的子索引信息及数据移动长度,再将子索引区信息更新成新的子索引信息,继续移动数据;若移动完毕,则删除索引区的主索引信息;数据恢复步骤闪存智能卡断电恢复后,判断索引区中是否存储有索引信息,若有则根据索引信息恢复执行数据移动步骤。本发明可确保数据移动的完整性,保证闪存智能卡的正常工作。
文档编号G06K1/00GK101763490SQ200910214088
公开日2010年6月30日 申请日期2009年12月18日 优先权日2009年12月18日
发明者彭谢民 申请人:东信和平智能卡股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1