公开/公告号CN103914407A
专利类型发明专利
公开/公告日2014-07-09
原文格式PDF
申请/专利权人 航天信息股份有限公司;
申请/专利号CN201210592331.X
发明设计人 邵波;
申请日2012-12-30
分类号
代理机构北京工信联合知识产权代理事务所(普通合伙);
代理人姜丽辉
地址 100195 北京市海淀区杏石口路甲18号航天信息园
入库时间 2024-02-19 23:58:24
法律状态公告日
法律状态信息
法律状态
2016-09-14
授权
授权
2014-08-06
实质审查的生效 IPC(主分类):G06F12/16 申请日:20121230
实质审查的生效
2014-07-09
公开
公开
技术领域
本发明涉及一种对SD卡的掉电保护和掉电恢复。
背景技术
在测量、控制,金融支付领域等的应用中,常要求嵌入式设备在写入存储设 备的数据,不会因为电源掉电或者卡片移离读写器范围掉电等情况的发生,而存 在写不完整数据,造成系统内数据不一致,这就要求对嵌入式系统具有掉电保护 机制,能够保证存储数据一致性,完整性。掉电保护通常可采用以下三种方法: 一是加接不间断电源,让整个系统在掉电时继续工作,二是采用备份电源,让在 内部和外部RAM中的数据在电源掉电时不丢失,重新加电时,RAM中的数据能 够保存完好,掉电后保护系统中全部或部分数据存储单元的内容;三是采用软硬 件结合方式实现来掉电保护功能,在进行数据存储时,嵌入式内部存储设备首先 进行备份,掉电重启后,软件检测掉电备份区中的信息,将备份区的数据写入到 真正的目标区中。
背景技术的缺陷:在实际应用中由于在卡片,或者SD卡等较小体积的嵌入式 设备中,方法一,方法二由于要求存在一定电路而造成体积大,成本高,不宜采 用,所以在卡片或者SD卡等应用中,一般采用方法三的软硬件结合的方式,实现 掉电保护的处理。
发明内容
考虑到备份和保存数据的都采用嵌入式设备中的flash,而flash有一定的擦 写次数的寿命,而目前flash,尤其是nand flash的容量越来越大,对于flash 的容量的变化不太敏感,所以本发明采用了一种针对flash的写平衡的掉电保护 方法。
本发明的目的是通过软硬件结合的方式来完成:1)实现掉电保护功能,保 证数据的有效性,完整性;2)备份区的写平衡,保证设备寿命。
嵌入式设备的flash数据存储区分为两个区域,分别是备份区和数据区。在 备份区又分为两块:一部分作为记录整个备份区情况的总体情况区域,另外一部 分作为备份的数据区域。
在嵌入式设备进行数据存储操作的时候,首先要将数据写入备份区,特别是 修改目标区域数据时,需要先将目标区域数据读出,在设备的内存RAM里修改相 应数据,然后作为整体数据写入到备份区,再进行目标区域擦除操作,继而将备 份区的数据写入到目标数据区里。在上述过程的写入备份区的过程中,要把写入 备份区一些情况,写入到备份区的总体情况区域中。该总体情况区域里记录了每 次写入时,都要增加一条相关记录:该条记录包括备份区数据区的起始地址(由 于我们的技术方案要求写入到备份区域的数据是循环写入的,这样起始地址在不 断变化,比如一条命令需要写入flash8次,则这些数据要依次写入到flash的备 份区里,但写入这些数据的情况在总体记录里只写1次:新的备份区的起始地址+ 包括共写入的次数(8条记录)。每次都是先在备份区的总体记录区记录一下起始 地址,在备份区的数据区写完数据后,再在备份区的总体记录区的写实际备份数 据条数,而当数据最终写入到实际数据区域后,还需要写1个字表示完成写入过 程,相当于本条备份作废。如果在写备份区的数据就出现了掉电情况,则重启后, 系统首先读取备份区的总体记录区的最后一条,如果没有完成写入的标志,说明 存在掉电保护情况发生,需要启动掉电恢复功能,完成数据最终写入。当然如果 只有起始地址,而实际条数为0,则说明只是掉电备份,但备份并没有完成,而 是掉电出现在备份工程中,则从记录起始位置,直到找到新的没有被使用的地址 数据开始,重新作为备份区域的起始地址,且相当于备份的这条指令并没运行, 保证了数据的完整性和一致性。
下面是备份区的总体情况区域的数据格式:
上次擦除备份数据区地址(4)备份区数据区起始地址(4)备份区的 数据区备份数据记录数(4)本次备份已经写入到实际数据区标志符(4)
其中:
上次擦除备份数据区地址是指当备份区数据区由于是循环写,所以需要记录 上次擦除备份数据区地址,作为这次的边界,如果离边界一定距离后,需要擦除 一定区域的备份区,保证备份区的数据区可以写入新数据;
备份区数据区起始地址是指这条命令进行数据写入(或者改写)的起始地址, 如果备份数据写到备份区的最大物理边界的时候,需要将数据从备份区最小物理 边界接着写,实现循环写入的目的;
数据区备份数据记录数是指这条命令一共产生了多少条备份数据;
本次备份已经写入到实际数据区标志符为0xFAFAFAFA。
在数据写入的命令执行的时候会在备份区的总体情况区域增加一条记录,并 且自然增长:即在写入一条新的总体情况记录时,一般是找到最后一个总体情况 记录,再接着往下写。当数据增加到备份区的总体情况区域的边缘的时候,需要 写入到别的特定区域,该区域只保存记录一条总体情况记录。在擦除整个备份区 的总体情况记录区后,再把刚才备份到特定区域的那条总体情况记录从备份区总 体情况区域的首地址写入,然后再擦除相应的特定区域的那一条总体情况记录, 这样保证了备份区的总体情况记录区完整性和一致性。
为了保证备份数据方便查找,我们在写入备份区的数据区域的数据也采用一 定数据格式,使用变长记录LV方式实现,每一条记录的格式为:
长度l(2)目标地址a(4)数据d(X)校验数据c(XOR(1))。
其中长度l是指整个要写入的数据(数据d)的长度,目标地址a是指备份数 据要写入的目标数据区的地址,数据d是实际要写入的数据,校验数据c是对数据 d的校验和,其目的有两个:一个保证写入到备份区的数据是有效的,保证将来 写入到目标区域的数据也是有效的,另外一个是在验证备份区出现掉电时候,能 够帮助验证最后一个数据有效性,从而确定最后一个使用的备份区数据区的位 置;备份区的数据区域由于数据组织结构中包含长度,以及校验和,所以根据上 一条数据位置,可以计算得出一下条数据位置,直到最后一个已经写好的数据位 置的下一个字节,再接着写新的数据。并且可以让数据能够实现循环使用备份区 的数据区域,也即是说,由于已经在备份区域的总体情况记录区记录了新的备份 区的数据区域的起始地址,我们只要按照新的起始地址写数据,如果到了备份区 域的数据区域的边界,则可以从备份区域的物理小边界地址接着写,相当于循环 使用备份区域的数据区域,全写入到数据区后,才继续执行下面的命令。并且也 并不擦除备份区的数据,只是调整备份区起始位置和写入数据的记录数,这样的 机制保证备份区记录状态的完整性,有效性。
根据本发明的实施方式,公开了一种SD卡的掉电保护方法,所述方法包括 如下步骤:
SD卡启动后,判断是否有掉电保护数据,根据备份区总体情况记录的最 后4个字节是否是0xFAFAFAFA,判断掉电情况是否发生;
如果上述最后四个字节不是0xFAFAFAFA,则判断是发生了掉电,进入掉 电恢复流程之后,进入判断是否涉及flash数据的写入和修改步骤,如果最后四 个字节是0xFAFAFAFA,则判断上次SD退出时,不是由于掉电引起的,直接进入 判断是否涉及flash数据的写入和修改步骤;
判断是否涉及flash数据的写入和修改:在处理支付交易命令时,如果该 命令不涉及到flash数据的写入和修改,则结束该方法流程;如果命令涉及到了 flash数据的写入和修改,则继续进入确定此次备份起始位置步骤;
当需要flash数据写入或者修改时,根据备份区总体情况区的最后一个记 录,确定此次备份起始位置;
当往备份区总体情况区写记录时,首先判断备份区总体情况区是否写满, 如果没写满,则写上步骤中确定的备份起始位置,如果写满了,将备份起始位 置写入到特定位置,擦除备份区总体情况区,并写回备份区总体情况区起始位 置,并且擦除特定位置的数据;
将要写入的数据在RAM里组织好;
按照备份起始地址将数据写入备份区的数据区,写完一条备份记录,记 录数增加1,计算新的写备份数据地址;直到将所有需要备份的数据都写入到备 份区的数据区,计算好这次备份的总的记录数;
将这次备份的总的记录数写入到备份区的总体情况区最后4个字节;
根据备份区总体情况找到备份数据起始地址以及记录条数找到备份数 据,按照备份数据保含的数据实际目标地址逐条写到数据区域,完成数据写入;
将0xFAFAFAFA标志,写到备份总体情况最后4个字节,完成在掉电保护的 情况下的数据真正写入工作,接着执行下一条指令,进入到判断是否涉及flash 数据的写入和修改步骤循环。
其中,判断备份区总体情况区是否写满是判断至少有12个字节的空间。
根据本发明的另一个实施方式,还公开了一种SD卡的掉电恢复方法,所述 方法包括如下步骤:
判断特定位置是否有备份区总体情况数据,如果有说明在擦除备份区总 体情况数据出现掉电,则擦除备份区总体情况区域,将特定位置的数据写到总 体情况区域的开始位置,然后再擦除特定位置的数据;
判断是否备份区数据区不完整,如果是,,则需要按照总体情况区域最后 记录中备份起始地址开始查找,根据数据区每条数据的头可以知道数据长度和 校验和,从而知道数据实际写入情况将残缺的记录条数记做0xFDFDFDFD,并增 加一条记录,地址为确定残缺的备份区域的最后地址+1,并且将条数写成 0xFEFEFEFE;
判断是否写入实际数据区掉电,如果备份区总体情况最后记录的最后4个 字节不是0xFAFAFAFA,则需要读出备份区的数据区数据;去读实际数据区的数 据进行比较,并且完成最终数据的写入工作,最后将0xFAFAFAFA写入到备份区 的总体情况区的最后4个字节中,完成掉电恢复全部工作。
其中判断是否备份区数据区不完整是总体情况记录里条数为0的情况。
根据本发明的另一个实施方式,还公开了一种可以进行掉电保护的SD卡,所 述SD卡包括SD控制器和载有金融支付功能COS的安全芯片,其中SD控制器负责SD 接口,并连接大容量Flash数据存储器,而载有金融支付功能COS的安全芯片实现 金融支付功能,所述flash存储器装有支付过程的数据,所述SD卡在进行掉电保 护时可以执行如上所述的掉电保护方法。
根据本发明的另一个实施方式,还公开了一种可以进行掉电恢复的SD卡,所 述SD卡包括SD控制器和载有金融支付功能COS的安全芯片,其中SD控制器负责SD 接口,并连接大容量Flash数据存储器,而载有金融支付功能COS的安全芯片实现 金融支付功能,所述flash存储器装有支付过程的数据,所述SD卡在进行掉电恢 复时可以执行如上所述的掉电恢复方法。
本发明的关键点:
1)本发明的掉电保护采用软硬件方式实现
2)本发明的嵌入式设备的数据存储部件采用的是flash,我们从软件角度 讲flash分为数据区和备份区。备份区又被分为备份区总体情况记录区,和备份 区数据区两部分。
3)备份区总体情况区在嵌入式系统执行一条需要数据存储的命令时,就 记录一条备份区数据区的总体情况记录,并不是改写,而是顺序往下写,写满后 将最后一个记录写入到特定位置,再擦除,保证整个备份区总体情况记录区擦写 次数减少,并且不在一个地方反复擦写的问题;
4)备份区数据区则利用一定数据结构,依次写入备份数据,不用备份用 完后进行擦除,可以直到当备份数据写到备份区数据区的物理最大的边界时,可 以再从备份区数据区的物理最小边界接着写,实现循环使用备份区的数据区,当 备份数据区的未写入部分小于我们设定的大小时,就可以从我们要备份的地址开 始擦除。
本发明的效果:采用循环使用及自然增长方式,实现备份区数据及信息的写 入,擦除的次数最小化,并且能够防止一个位置反复擦除,写入,最大化使用了 备份区,实现了写平衡,既延长了嵌入式设备的寿命,又实现了掉电保护功能, 同时保证了数据的有效性,完整性。
附图说明
附图1是现有技术中SD的结构;
附图2是本发明实施例提供的SD卡的掉电保护机制;
附图3是本发明实施例提供的SD卡的掉电恢复机制。
具体实施方式
在金融支付的SD卡中,SD卡(如图1所示)里包含有SD控制器和载有金融支 付功能COS的安全芯片,其中SD控制器负责SD接口,并连接大容量Flash数据存储 器,而载有金融支付功能COS的安全芯片实现金融支付功能。在这个安全芯片里 有flash存储器,里装有支付过程的数据,由于涉及到金融数据的稳定可靠,特 别要求在整个支付交易过程中,数据不会由于在写入flash过程中出现掉电而造 成数据写入中断而造成数据出现错误等问题。同时flash本身具有一定写擦除寿 命也是需要考虑的问题。我们的COS程序里包含有掉电保护的软件方法就很好的 解决了上述问题。
安全芯片里的flash从软件角度定义了两部分来保证数据掉电保护的数据一 致性:一部分是实际数据区,一部分是备份区,而备份区里又定义为了备份数据 区,和备份总体情况区。在整个支付交易过程中,如果存在命令需要写入数据到 flash或者修改flash的数据,则启动我们的掉电保护机制:就是在执行一个命令 的时候,该命令需要写入实际数据区的数据,首先将数据写到备份区里,数据组 成一定格式,包括目标地址,数据长度,以及校验和等。并把数据写入备份区的 整体情况写入到备份区总体情况区里,包括备份的起始地址,这次备份的记录共 有多少条,当在备份区将数据写完后,再将备份区数据按照实际目标数据区写入 数据,当将备份区的数据完全写入到实际数据区后,还需要把0xFAFAFAFA的标志, 写到备份区的总体情况区的最后四个字节,这样就完成了整个掉电保护过程。当 然存在的一些和备份区写入等有关的特殊情况处理,现在详细介绍一下掉电保护 情况(如图2所示):
1)SD卡启动后,判断是否有掉电保护数据,根据备份区总体情况记录的 最后4个字节是否是0xFAFAFAFA,判断掉电情况是否发生;
2)如果不是0xFAFAFAFA,则进入掉电恢复流程(下面有介绍),如果是, 则上次SD退出时,不是由于掉电引起的,进行正常的支付交易命令处理;
3)在处理支付交易命令时,如果该命令不涉及到flash数据的写入和修 改,则不启动掉电保护机制;
4)如果命令涉及到了flash数据的写入和修改,则启动掉电保护机制; 当需要flash数据写入或者修改时,根据备份区总体情况区的最后一个记录,确 定此次备份起始位置;
5)当往备份区总体情况区写记录时,首先判断备份区总体情况区是否写 满(判断至少有12个字节的空间),如果没写满,则写上步骤中确定的备份起始 位置,如果写满了,将备份起始位置写入到特定位置,擦除备份区总体情况区, 并写回备份区总体情况区起始位置,并且擦除特定位置的数据;
6)将要写入的数据在RAM里组织好;
7)按照备份起始地址将数据写入备份区的数据区,写完一条备份记录, 记录数增加1,计算新的写备份数据地址;直到将所有需要备份的数据都写入到 备份区的数据区,计算好这次备份的总的记录数;
8)将这次备份的总的记录数写入到备份区的总体情况区最后4个字节;
9)根据备份区总体情况找到备份数据起始地址以及记录条数找到备份数 据,按照备份数据保含的数据实际目标地址逐条写到数据区域,完成数据写入;
10)将0xFAFAFAFA标志,写到备份总体情况最后4个字节,完成在掉电保 护的情况下的数据真正写入工作,接着执行下一条指令(进入到步骤3循环)。
而当SD卡重新上电后,SD里的安全芯片里的金融支付的COS启动后,首先判 断是否存在掉电情况,根据备份总体情况区记录的数据是否最后4个字节为 0xFAFAFAFA,如果是则不存在掉电情况,COS进行正常的金融支付和大容量数据 存储即可。而如果最后四个字节不是0xFAFAFAFA,则说明存在掉电情况,需要 通过掉电保护恢复机制进行处理。在掉电保护恢复时,首先判断是在什么情况 下出现的掉电情况,这个可以通过备份总体情况区的数据以及备份区数据,甚 至在与写入实际数据区的数据进行比较,来确认掉电情况发生在什么地方进行 相应的处理,掉电恢复情况(如图3所示)具体介绍如下:
1)判断特定位置是否有备份区总体情况数据,如果有说明在擦除备份区 总体情况数据出现掉电,则擦除备份区总体情况区域。将特定位置的数据写到 总体情况区域的开始位置,然后再擦除特定位置的数据;
2)判断是否备份区数据区不完整(总体情况记录里条数为0的情况),如 果为零,则需要按照总体情况区域最后记录中备份起始地址开始查找,根据数 据区每条数据的头可以知道数据长度和校验和,从而知道数据实际写入情况将 残缺的记录条数记做0xFDFDFDFD,并增加一条记录,地址为确定残缺的备份区 域的最后地址+1,并且将条数写成0xFEFEFEFE;
3)判断是否写入实际数据区掉电,如果备份区总体情况最后记录的最后4 个字节不是0xFAFAFAFA,则需要读出备份区的数据区数据;去读实际数据区的 数据进行比较,并且完成最终数据的写入工作,最后将0xFAFAFAFA写入到备份 区的总体情况区的最后4个字节中,完成掉电恢复全部工作。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的 普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和 变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应 由权利要求限定。
机译: 双接口微型SD卡和带有双接口微型SD卡的设备
机译: 密闭容器ID,带有压力环,带有钢制环扣,自粘,安全扣,皮带扣或密封,用于SIM卡或MICRO SD卡
机译: “ DIGITALMATHON”是一个允许对人,儿童,妇女和男人进行数字化的橱柜。它提供了具有不同类型支持的3D拍摄:USB密钥,SD卡,闪存代码ETC ...还开发了一种特定的软件来使用数据*(请参阅随附的文档)