首页 / 专利库 / 电脑零配件 / 微处理器 / 一种掉电保护智能卡及其工作方法

一种掉电保护智能卡及其工作方法

阅读:173发布:2020-05-08

专利汇可以提供一种掉电保护智能卡及其工作方法专利检索,专利查询,专利分析的服务。并且本 申请 公开一种掉电保护 智能卡 及其工作方法。所述智能卡包括 微处理器 和 存储器 ;存储器包括数据区和数据保护区,数据保护区包括备份栈区、标志页面区和防拔保护区;微处理器用于确定事务启动的来源为平台或应用,以及在掉电重启后,根据平台或应用执行对应的回滚处理;防拔保护区用于在平台或应用启动事务时,存储所述目标数据页的整页数据;标志页面区,用于在平台或应用启动事务时,记录防拔保护页面对应的有效标志和目标数据页地址;备份栈区,用于在平台启动事务时,将目标地址对应的原始数据以备份记录形式存储。本申请解决智能卡的性能和空间无法兼容的问题。,下面是一种掉电保护智能卡及其工作方法专利的具体信息内容。

1.一种掉电保护智能卡,其特征在于,所述智能卡包括微处理器和与所述微处理器连接的存储器;所述存储器包括数据区和数据保护区,数据保护区包括备份栈区、标志页面区和防拔保护区;
所述微处理器,用于确定事务启动的来源为平台或应用;以及用于接收写数据指令,从写数据指令中获取需要更新的目标地址和待更新数据,根据所述目标地址确定数据区中待更新的目标数据页;以及用于在掉电重启后,若确定由平台启动事务,则根据备份栈区、标志页面区和防拔保护区进行回滚,若确定由应用启动事务,则根据标志页面区和防拔保护区进行回滚;
所述防拔保护区,用于在平台或应用启动事务时,存储所述目标数据页的整页数据;
所述标志页面区,用于在平台或应用启动事务时,记录防拔保护页面对应的有效标志和目标数据页地址;所述备份栈区,用于在平台启动事务时,将所述目标地址对应的原始数据以备份记录形式存储。
2.如权利要求1所述的掉电保护智能卡,其特征在于,所述微处理器还用于在智能卡上电后,将事务启动的来源初始化为平台启动;以及用于在智能卡工作过程中根据平台和应用的开启实时更新事务启动来源。
3.一种掉电保护智能卡的工作方法,其特征在于,包括:
当页保护函数被调用时:将待更新目标地址确定的目标数据页的整页数据存储至防拔保护区中,并在标志页面区标记对应的有效标志和目标数据页地址;
当备份函数被调用时:若判定由平台开启事务,则将待更新目标地址对应的原始数据按照备份记录形式逐条写入备份栈中,返回备份成功响应;若判定由应用开启事务,则备份函数不执行任何操作,直接退出;
当更新函数被调用时:若判定由应用开启事务,则根据待更新数据和目标数据页原始数据对目标数据页进行更新,返回更新成功响应;若判定由平台开启事务,则根据待更新数据和目标数据页原始数据对目标数据页进行更新,并擦除标志页面区对所述目标数据页的有效标志,返回更新成功响应;
当回滚函数被调用时:若判定由平台开启事务,则根据防拔保护区、标志页面区和备份栈区对数据区进行数据恢复;若判定由应用开启事务,则根据防拔保护区和标志页面区对数据区进行数据恢复。
4.如权利要求3所述的掉电保护智能卡的工作方法,其特征在于,根据智能卡中设置的事务开启标识确定事务由平台开启或由应用开启;在智能卡上电时设置所述事务开启标识为初始化状态,在智能卡工作过程中根据当前事务的启动来源更新所述事物开启标识。
5.如权利要求4所述的掉电保护智能卡的工作方法,其特征在于,当回滚函数被调用时,若判定由平台开启事务,则根据防拔保护区、标志页面区和备份栈区进行数据恢复后,还包括将事务开启标识重新设置为初始化状态。
6.如权利要求3所述的掉电保护智能卡的工作方法,其特征在于,当发生非掉电情况需要回滚时调用回滚函数,若判定由应用开启事务时,调用应用私有的恢复函数,根据标记页面区记录的所有标志,回滚对应的防拔保护区中的数据;若判定由平台开启事务时,调用带有备份栈数据恢复的函数,根据标志页面区的最后标志,回滚最后一个防拔保护页数据,然后逐条回滚备份栈中的备份记录。
7.如权利要求3所述的掉电保护智能卡的工作方法,其特征在于,当发生掉电复位情况需要回滚时调用回滚函数,检查标志页面区,若判定标志页面区中存在失效标志,则说明是由平台开启的事务,调用带有备份栈数据恢复的函数,对当前有效的防拔保护页恢复完成后,利用备份栈内的备份记录对数据一一进行回滚;若判定标志页面区中不存在失效标志,则说明是由应用开启的事务,通过调用应用私有的恢复函数,根据标记页面区记录的所有标志,回滚对应的防拔保护区中的数据。
8.如权利要求3所述的掉电保护智能卡的工作方法,其特征在于,当由平台开启事务,应用接口穿插其中时:在应用启动事务时先调用事务开启函数判断当前是否已开启过事务,如果是,则保持由平台开启事务,否则更新为由应用开启事务。
9.如权利要求3所述的掉电保护智能卡的工作方法,其特征在于,当由应用开启事务,平台接口穿插其中时,应用利用备份开启接口函数开启防拔事务处理,并设置事务由应用开启,如果发生平台再次开启事务的嵌套,则继续保持由应用开启事务。
10.如权利要求9所述的掉电保护智能卡的工作方法,其特征在于,
若发生非掉电情况需要回滚时,判断事务开启标识,如果是应用开启事务,则调用应用专用恢复函数根据防拔保护区和标志页面区对数据区进行数据恢复;如果是平台开启事务,则调用平台恢复函数根据防拔保护区、标志页面区和备份栈区对数据区进行数据恢复;
若发生掉电复位情况需要回滚时,检查标志页面区,若判定标志页面区中存在失效标志,则说明是由平台开启的事务,调用带有备份栈数据恢复的函数,对当前有效的防拔保护页恢复完成后,利用备份栈内的备份记录对数据一一进行回滚;若判定标志页面区中不存在失效标志,则说明是由应用开启的事务,通过调用应用私有的恢复函数,根据标记页面区记录的所有标志,回滚对应的防拔保护区中的数据。

说明书全文

一种掉电保护智能卡及其工作方法

技术领域

[0001] 本申请涉及智能卡存储领域,尤其涉及一种掉电保护智能卡及其工作方法。

背景技术

[0002] 智能卡(如金融IC卡)的存储介质一般为EEPROM和ROM结合体的掩膜卡或Flash卡。Flash存储器是Flash EEPROM存储的简称,和常规的EEPROM一样属于非易失性存储器,即没有电源时数据可以保持不变。传统的EEPROM具有较高的可靠性,但是电路复杂,成本也高。
因此目前的EEPROM都是几十千字节到几百千字节的,很少有超过512K,而金融IC卡更甚,EEPROM大小一般不超过80K。
[0003] 随着技术的发展,Flash芯片越来越被普遍采用。Flash的改进主要是擦除时不再以字节为单位,而是以页甚至为单位,简化了电路。数据密度更高,降低了成本。因此,Flash技术越来越精进,安全性也有所提高,逐渐被行所接纳。Flash作为一种金融IC卡新的介质应用越来越普遍。Flash现在作为IC卡芯片越来越多使用的一种存储介质,它易于擦除和重写,有很高的存储速度,而且也可以长期保存存储在内的信息。
[0004] 然而Flash也存在擦写过程中掉电会出现数据流失的问题。Flash一般以页为单位进行擦除操作,Flash的编程操作为先擦后写,所以肯定要面临着整页的保护。对于智能卡这种存储量较小的设备,频繁的Flash擦写会缩短智能卡的使用寿命。基于智能卡存储量小的特性现如今亟需一种能够协调内部FLash频繁擦写的方法,基于此本申请应运而生。发明内容
[0005] 本申请提供了一种掉电保护智能卡,所述智能卡包括微处理器和与所述微处理器连接的存储器;所述存储器包括数据区和数据保护区,数据保护区包括备份栈区、标志页面区和防拔保护区;
[0006] 所述微处理器,用于确定事务启动的来源为平台或应用;以及用于接收写数据指令,从写数据指令中获取需要更新的目标地址和待更新数据,根据所述目标地址确定数据区中待更新的目标数据页;以及用于在掉电重启后,若确定由平台启动事务,则根据备份栈区、标志页面区和防拔保护区进行回滚,若确定由应用启动事务,则根据标志页面区和防拔保护区进行回滚;
[0007] 所述防拔保护区,用于在平台或应用启动事务时,存储所述目标数据页的整页数据;
[0008] 所述标志页面区,用于在平台或应用启动事务时,记录防拔保护页面对应的有效标志和目标数据页地址;所述备份栈区,用于在平台启动事务时,将所述目标地址对应的原始数据以备份记录形式存储。
[0009] 如上所述的掉电保护智能卡,其中所述微处理器还用于在智能卡上电后,将事务启动的来源初始化为平台启动;以及用于在智能卡工作过程中根据平台和应用的开启实时更新事务启动来源。
[0010] 本申请还提供一种掉电保护智能卡的工作方法,包括:
[0011] 当页保护函数被调用时:将待更新目标地址确定的目标数据页的整页数据存储至防拔保护区中,并在标志页面区标记对应的有效标志和目标数据页地址;;
[0012] 当备份函数被调用时:若判定由平台开启事务,则将待更新目标地址对应的原始数据按照备份记录形式逐条写入备份栈中,返回备份成功响应;若判定由应用开启事务,则备份函数不执行任何操作,直接退出;;
[0013] 当更新函数被调用时:若判定由应用开启事务,则根据待更新数据和目标数据页原始数据对目标数据页进行更新,返回更新成功响应;若判定由平台开启事务,则根据待更新数据和目标数据页原始数据对目标数据页进行更新,并擦除标志页面区对所述目标数据页的有效标志,返回更新成功响应;
[0014] 当回滚函数被调用时:若判定由平台开启事务,则根据防拔保护区、标志页面区和备份栈区对数据区进行数据恢复;若判定由应用开启事务,则根据防拔保护区和标志页面区对数据区进行数据恢复。
[0015] 如上所述的掉电保护智能卡的工作方法,其中根据智能卡中设置的事务开启标识确定事务由平台开启或由应用开启;在智能卡上电时设置所述事务开启标识为初始化状态,在智能卡工作过程中根据当前事务的启动来源更新所述事物开启标识。
[0016] 如上所述的掉电保护智能卡的工作方法,其中当回滚函数被调用时,若判定由平台开启事务,则根据防拔保护区、标志页面区和备份栈区进行数据恢复后,还包括将事务开启标识重新设置为初始化状态。
[0017] 如上所述的掉电保护智能卡的工作方法,其中当发生非掉电情况需要回滚时调用回滚函数,若判定由应用开启事务时,调用应用私有的恢复函数,根据标记页面区记录的所有标志,回滚对应的防拔保护区中的数据;若判定由平台开启事务时,调用带有备份栈数据恢复的函数,根据标志页面区的最后标志,回滚最后一个防拔保护页数据,然后逐条回滚备份栈中的备份记录。
[0018] 如上所述的掉电保护智能卡的工作方法,其中当发生掉电复位情况需要回滚时调用回滚函数,检查标志页面区,若判定标志页面区中存在失效标志,则说明是由平台开启的事务,调用带有备份栈数据恢复的函数,对当前有效的防拔保护页恢复完成后,利用备份栈内的备份记录对数据一一进行回滚;若判定标志页面区中不存在失效标志,则说明是由应用开启的事务,通过调用应用私有的恢复函数,根据标记页面区记录的所有标志,回滚对应的防拔保护区中的数据。
[0019] 如上所述的掉电保护智能卡的工作方法,其中当由平台开启事务,应用接口穿插其中时:在应用启动事物时先调用事务开启函数判断当前是否已开启过事务,如果是,则保持由平台开启事务,否则更新为由应用开启事务。
[0020] 如上所述的掉电保护智能卡的工作方法,其中当由应用开启事务,平台接口穿插其中时,应用利用备份开启接口函数开启防拔事务处理,并设置事物由应用开启,如果发生平台再次开启事务的嵌套,则继续保持由应用开启事务。
[0021] 如上所述的掉电保护智能卡的工作方法,其中若发生非掉电情况需要回滚时,判断事物开启标识,如果是应用开启事务,则调用应用专用恢复函数根据防拔保护区和标志页面区对数据区进行数据恢复;如果是平台开启事务,则调用平台恢复函数根据防拔保护区、标志页面区和备份栈区对数据区进行数据恢复;
[0022] 若发生掉电复位情况需要回滚时,检查标志页面区,若判定标志页面区中存在失效标志,则说明是由平台开启的事务,调用带有备份栈数据恢复的函数,对当前有效的防拔保护页恢复完成后,利用备份栈内的备份记录对数据一一进行回滚;若判定标志页面区中不存在失效标志,则说明是由应用开启的事务,通过调用应用私有的恢复函数,根据标记页面区记录的所有标志,回滚对应的防拔保护区中的数据。
[0023] 本申请实现的有益效果如下:采用本申请提供的掉电保护智能卡及其工作方法,可以使得智能卡在满足交易性能的情况下,又可以大幅度的节省空间。本申请采用内置两套掉电保护的方案:其一、备份记录加页面保护的方式,此方案主要作用在卡片个人化阶段,可以大幅度的压缩保护数据,以便节约出更多的资源空间。其二、纯页面的保护方式,此方案主要作用在发卡阶段,可以减少多余的内存操作从而提升了应用处理的性能。两种方案根据使用场景的不同可以智能切换,以便综合解决智能卡的性能和空间无法兼得的问题。附图说明
[0024] 为了更清楚地说明本发明实施例现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
[0025] 图1是本申请实施例一提供的掉电保护智能卡示意图;
[0026] 图2是本申请实施例一提供的第一防掉电机制示意图;
[0027] 图3是本申请实施例一提供的第二防掉电机制示意图;
[0028] 图4是本申请实施例一提供的掉电保护智能卡的工作方法流程图

具体实施方式

[0029] 下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0030] 实施例一
[0031] 如图1所示,本申请实施例一提供一种掉电保护智能卡,所述智能卡包括平台和应用两大模块,其中平台为智能卡操作系统,应用为智能卡的应用APP程序。智能卡的特性是操作系统当前只允许操作一个页面且更新数据涉及的页面较多,因此平台在数据更新时存储的是当前页以及备份记录,应用APP程序需要多个页面切换且更新数据涉及的页面较少,因此应用在数据更新时存储的是多个页面。
[0032] 综合上述对智能卡中应用和平台的特性分析,本申请提供一种掉电保护智能卡,所述智能卡包括微处理器和与所述微处理器连接的存储器;所述存储器包括数据区和数据保护区,数据保护区包括备份栈区、标志页面区和防拔保护区;
[0033] 所述微处理器,用于接收写数据指令,从写数据指令中获取需要更新的目标地址和待更新数据,根据所述目标地址确定数据区中待更新的目标数据页;
[0034] 以及确定事务启动的来源为平台或应用,根据事物启动的来源执行相应的防掉电机制(即应用开启事务则执行第一防掉电机制,平台开启事务则执行第二种防掉电机制);
[0035] 以及在掉电重启后,若确定由平台启动事务,则根据备份栈区、标志页面区和防拔保护区进行回滚,若确定由应用启动事务,则根据标志页面区和防拔保护区进行回滚;
[0036] 可选地,所述微处理器还用于在智能卡上电后,将事务启动的来源初始化为平台启动(即初始化事务启动标志为初始化状态0);以及用于在智能卡工作过程中根据平台和应用的开启实时更新事务启动来源。
[0037] 所述防拔保护区,用于在平台或应用启动事务时,存储目标数据页的整页数据;
[0038] 所述标志页面区,用于在平台或应用启动事务时,记录防拔保护页面对应的有效标志和目标数据页地址;;
[0039] 所述备份栈区,用于在平台启动事务时,将目标地址对应的原始数据以备份记录形式存储。
[0040] 基于智能卡的特性,本申请将智能卡按照平台和应用各自的性能进行对应的Flash掉电保护机制:应用在数据更新时存储多个页面,则设定应用采用的是按页备份的第一防掉电机制;平台在数据更新时存储当前页以及备份记录,则设定平台采用的是设置备份栈和防拔保护区的第二防掉电机制。将两种防掉电机制进行融合既保证编程效率的同时又兼顾防拔保护区的适当使用。
[0041] 如图2所示,第一防掉电机制具体为:
[0042] 第一防掉电机制涉及对数据区、标志页面区和防拔保护区的处理,在每次需要更新一个不同的页面时,需要以该页面整页为单位进行保护。
[0043] 例如数据区中要更新数据页面D1内的数据,则将整个D1页面放置在防拔保护区的P1页面内,在标志页面区中设置P1页面有效标志,并记录P1页面所对应的D1所在的目标数据页地址;如果要更新数据页面D2内的数据,则将整个D2页面放置在防拔保护区的P2页面内,在标志页面区中设置P2页面有效标志,并记录P2页面所对应的D2所在的目标数据页地址;以此类推,凡是后续更新的数据区和前面已更新的数据不在同一页面,则需要在防拔保护区中开辟一个页面来保护需要更新的数据页面,在极限情况下,数据区的所有页面都需要更新,则在防拔保护区中要设置相同数量的防拔页面,即数据区和防拔保护区的页面数量比为1:1,该防拔保护区中所有的数据在提交或恢复前均有效。
[0044] 如图3所示,第二防掉电机制具体为:
[0045] 第二防掉电机制涉及对数据区、备份栈区、标志页面区和防拔区的处理,在备份栈区中写入包括备份头和数据的备份记录,备份栈区中只保护涉及到的最小写区域。第二防掉电机制由于整页的保护只要最新的一个页面是有效的,其他的旧数据均存在备份栈里,所以可以使用较少的防拔保护区。
[0046] 例如要更新数据区页面D1内的数据,则在防拔保护区P1里保护整个页面,在标志页面区设置P1页面有效标志,并记录P1页面所对应的D1所在的目标数据页地址,将待更新的数据组织成备份记录1放到备份栈;接着如果更新数据区页面D2内的数据,则在P2里保护整个页面,并在标志区将P1页面失效,设置P2页面有效标志,并记录P2页面所对应的D2所在的目标数据页地址,,将待更新的数据组织成备份记录2放到备份栈;依次类推,如果更新数据区页面Dn内的数据,则在P(n%4)里保护整个页面,并在标志区将P((n-1)%n)页面失效,将P(n%4)生效,将待更新的数据组织成备份记录n放到备份栈。
[0047] 第二掉电保护机制和第一掉电保护机制的区别:除了多出备份栈以外,防拔区在整个事务写中是循环使用的,有且只有一个页面有效。
[0048] 实施例二
[0049] 本申请实施例二提供一种智能卡掉电保护方法,如图4所示,包括:
[0050] 步骤410、当事务初始化函数被调用时,设置事务开启标识,并在智能卡工作过程中根据当前事务的启动来源更新事务启动标识;
[0051] 可选地,当智能卡与读卡设备连接上电后,在智能卡内设置表示当前事务处理由谁开启的事务开启标识NonUsePFtrns,并将事务开启标识NonUsePFtrns初始化为0,可以表示默认由平台开启事务;
[0052] 其中,事务开启标识NonUsePFtrns会随着智能卡工作过程中平台和应用的切换开启而设定不同的数值,例如,当平台开启事务时,操作系统自行将事务开启标识NonUsePFtrns设定为0;当应用开启事务时,操作系统自行将事务开启标识NonUsePFtrns设定为0xA5。
[0053] 步骤420、当页保护函数被调用时,将待更新目标地址确定的目标数据页的整页数据存储至防拔保护区中,并在标志页面区标记对应的有效标志和目标数据页地址;
[0054] 具体地,在智能卡中设置保护数据区数据的防拔保护区,当智能卡接收到上层应用下发的写数据命令时,从写数据命令中解析出需要更新的目标地址和数据,先根据需要更新的目标地址调用页保护函数(即调用void NvProtectPage(FPU8 dest_addr))从数据页中找到需要更新的数据页,将该数据页中的原始数据存储至防拔保护区中,并记录备份页面所对应的目标数据页地址;需要说明的是,不论是第一防掉电机制或第二防掉电机制中,均需要先将要保护的数据存储至防拔保护区中,保证意外或程序所需的掉电后数据区中的数据不会丢失。
[0055] 步骤430、当备份函数被调用时,判断事务开启标识,若事务开启标识指示由平台开启,则将待更新目标地址对应的原始数据按照备份记录形式逐条写入备份栈中,返回备份成功响应,若事务开启标识指示由应用开启,则返回不需要备份响应;
[0056] 本申请实施例中,根据智能卡中平台和应用更新数据的特性,预先设定当事务开启标识指示由平台开启时,选择采用设置备份栈的防掉电保护机制(即第二防掉电机制),并预先设定当事务开启标识指示由应用开启时,选择采用整页保护机制(即第一防掉电机制);
[0057] 所述备份函数具体为:
[0058]
[0059] 当备份函数被调用时,如果事务开启标识为应用开启(即NonUsePFtrns==0xA5),则备份函数返回不需要备份响应;如果事务开启标识为平台开启(即NonUsePFtrns!=0xA5),则将更新地址对应的原有数据(即备份函数的参数dest_addr,u16_len)以记录条的形式备份到备份栈中,然后返回备份成功响应。
[0060] 步骤440、当更新函数被调用时,判断事务开启标识,若事务开启标识指示由应用开启,则根据待更新数据和目标数据页原始数据对目标数据页进行更新,返回更新成功响应,返回更新成功响应,若事务开启标识指示由平台开启,则根据待更新数据和目标数据页原始数据对目标数据页进行更新,并擦除标志页面区对所述目标数据页的页保护,返回更新成功响应;
[0061] 所述更新函数具体为:
[0062]
[0063] 当更新函数被调用时,若判断事务开启标识为应用开启(即NonUsePFtrns==0xA5),则调用appMemCopy()函数,根据待更新数据和目标数据页原始数据对目标数据页进行更新,返回更新成功响应;
[0064] 具体地,appMemCopy()函数的具体实现如下:
[0065]
[0066]
[0067] 若判断事务开启标识为平台开启,则调用MemCopyNonAtomic()函数(即NonUsePFtrns!=0xA5),根据待更新数据和目标数据页原始数据对目标数据页进行更新,并擦除标志页面区对所述目标数据页的页保护,即在标志页面区中将该数据页对应的页保护标识失效,返回更新成功响应;
[0068] 具体地,MemCopyNonAtomic()函数具体实现如下:
[0069]
[0070] 其中,将当前页保护失效具体为将当前页保护对应的有效标记设置为初始值,如0x00。
[0071] 步骤450、当回滚函数被调用时,判断事务开启标识,若事务开启标识指示由平台开启,则根据防拔保护区、标志页面区和备份栈区对数据区进行数据恢复,若事务开启标识指示由应用开启,则根据防拔保护区和标志页面区对数据区进行数据恢复;
[0072] 所述回滚函数具体为:
[0073]
[0074] 本申请实施例中,智能卡需要回滚包括两种情况:
[0075] 第一种情况为非掉电情况,例如API接口或手动调用Abort(引发不正常进程的终止)时,调用回滚函数,判断事务开启标识,若事务开启标识指示由应用开启,则调用BacRestore_APP()函数,根据标记页面区记录的所有标志,回滚对应的防拔保护区中的数据,在数据恢复后将事务开启标识重新设置为初始化状态;若判断事务开启标识为平台开启,则调用BacRestore()函数,根据标志页面区的最后标志,回滚最后一个防拔保护页数据,然后逐条回滚备份栈中的备份记录;
[0076] 第二种情况为掉电复位情况,在智能卡重新上电后先检查标志页面区,若判定标志页面区中存在失效标志,则说明是由平台开启的事务,调用带有备份栈数据恢复的函数BacRestore()函数,对当前有效的防拔保护页恢复完成后,利用备份栈内的备份记录对数据一一进行回滚;若判定标志页面区中不存在失效标志,则说明是由应用开启的事务,通过应用私有的恢复函数BacRestore_APP()函数,根据标记页面区记录的所有标志,回滚对应的防拔保护区中的数据;
[0077] 具体地,应用开启事务回滚时调用的BacRestore_APP()函数具体实现如下:
[0078]
[0079] 具体地,平台开启事务回滚时调用的BacRestore()函数具体实现如下:
[0080]
[0081] 此外,为了避免平台防拔和应用防拔交叉使用的问题,由谁开启的事务就用谁的防拔机制。例如,如果平台开启的事务处理,那就用页保护+备份记录的第二种防拔机制;如果是应用开启的事务处理,那就纯采用纯页面保护的第一种防拔机制,具体的智能卡内存在事务开启交叉套用的处理方法包括如下:
[0082] (1)由平台开启事务,应用接口穿插其中(例如安装install操作):
[0083] 在初始化时,将事务开启标识初始化为0x00,代表平台防拔启动事务处理,然后所有应用程序在启动时调用事务开启函数(trns_Begin_app)时均先判断当前是否开启过事务(即判断事务嵌套级别变量st_bac.u8_level的值,若为0,则表示平台未开启事务,若不为0,则表示平台已开启了事务);
[0084] 如果开启了事务,则事务开启标识不作任何修改;如果没有开启事务,则利用事务开启函数(trns_Begin_app)开启应用的事务处理,将事务开启标识设置为0xA5;
[0085] 即使有应用接口穿插其中,但所有原子操作仍执行备份函数(u8BacBackup)利用平台备份记录保证其原子性,更新函数(Page_Program)为带页面保护的非原子写;因此,在平台开启事务之后不论有多少层穿插嵌套,谁申请的事务,就由谁来进行事务处理。
[0086] 需要说明的是,abort操作不受事务开启变量的限制,如果手动abort,则利用事务终止函数(trns_Abort)进行数据的回滚,根据函数中的if(NonUsePFtrns==0xA5)来判定回滚方式。
[0087] (2)由应用开启防拔,平台接口穿插其中(如PBOC追加记录指令“里面有NEW空间”):
[0088] 应用利用备份开启接口函数(trns_Begin_app)开启防拔事务处理,并把事务开启标识NonUsePFtrns设置为0xA5;
[0089] 如果发生平台的再次开启事务的嵌套,只会使得事务嵌套级别变量的值增加(st_bac.u8_level++),并不做其他任何操作;根据备份栈操作函数(u8BacBackup)中的if(NonUsePFtrns==0xA5)决定,备份函数不再做任何操作;
[0090] 更新函数(Page_Program)同样是通过判断(NonUsePFtrns==0xA5),采用带页面保护的原子写,且不会在防拔标志区写失效标志,即所有的数据保护都交由页面保护处理;
[0091] 若发生非掉电情况需要回滚时,判断事物开启标识,如果是应用开启事务,则调用应用专用恢复函数根据防拔保护区和标志页面区对数据区进行数据恢复;如果是平台开启事务,则调用平台恢复函数根据防拔保护区、标志页面区和备份栈区对数据区进行数据恢复;
[0092] 若发生掉电复位情况需要回滚时,检查标志页面区,若判定标志页面区中存在失效标志,则说明是由平台开启的事务,调用带有备份栈数据恢复的函数,对当前有效的防拔保护页恢复完成后,利用备份栈内的备份记录对数据一一进行回滚;若判定标志页面区中不存在失效标志,则说明是由应用开启的事务,通过调用应用私有的恢复函数,根据标记页面区记录的所有标志,回滚对应的防拔保护区中的数据。
[0093] 对应于图1至图4中的防掉电智能卡工作方法,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述初始化的方法的步骤。
[0094] 具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述防掉电智能卡工作方法。
[0095] 在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0096] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0097] 另外,在本申请提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0098] 所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0099] 应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
[0100] 最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围。都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈