本发明专利技术是一种增强智能卡可靠性的方法,属于嵌入式软件领域中的智能卡的嵌入式软件可靠性设计领域。本发明专利技术提出一种在智能卡程序中设置软件开关、通过控制软件开关,减少智能卡程序因受到干扰错误的执行了擦写函数的概率,达到增强智能卡可靠性的目的。
【技术实现步骤摘要】
增强智能卡可靠性的方法
本专利技术属于嵌入式软件领域中的智能卡软件范畴,特别涉及智能卡可靠性方法。
技术介绍
智能卡是一种IC卡,卡内的集成电路包括中央处理器CPU、ROM、EEPROM(或其它介质)、RAM和存储在卡内的智能卡软件和数据。智能卡通常有电压保护、频率保护等硬件可靠性保护措施,但仍然存在在某些非正常工作条件下(如电源不稳定、带电插拔、电磁干扰等的条件),智能卡程序指针跑飞的情况。智能卡程序指针跑飞,通常会使程序返回错误的状态。根据智能卡应用的特点,程序跑飞会带来两种后果。一是对于大多数程序跑飞的情况而言,程序将可能返回错误状态,仅会造成应用中断,因为智能卡应用的上位机及后台服务器通常有针对应用中断的处理,因此影响很小;另一种后果是,因为智能卡内是有擦写程序的,如果程序跑飞并调用了擦写程序导致擦写了不应该擦写的数据甚至擦写了程序代码,则卡片会成为无效卡片。如果在生产环节出现此问题,会造成成品率的下降;如果在用户手中出现此问题,则给持卡人带来不便,造成发卡商投诉率上升。通常嵌入式软件中为提高可靠性级别时,会采用N版本程序设计的方法,即设计N个相同功能的相异程序,各版本先后运算出来的结果相互比较来确定输出。但这种方法会造成开发周期长,性能较低,占用空间大,通常而言是不适合智能卡的应用场景的。芯片硬件有时也会采取一些可靠性的设计,例如硬件设计为在擦写等动作前要先写入一定的指令序列,否则不启动擦写。但通常擦写函数是将该指令序列和启动擦写放在一个函数中的,一旦程序跑飞到函数入口,则会顺序写入指令序列和启动擦写,就会造成误擦写。
技术实现思路
智能卡由于本身的特点,需要嵌入式软件来增强智能卡整体的可靠性。在智能卡可靠性问题中较严重的一种问题,就是智能卡在受到干扰时程序指针跑飞造成程序代码或数据被误擦写的情况。本专利技术正是为解决这一问题而设计的一种方法。本专利技术提供的这种增强智能卡可靠性的方法,设计了一个软件开关来控制智能卡非易失性存储器擦写函数的擦写使能,将软件开关的开启和关闭操作放置在擦写函数之外,同时将软件开关的开启和关闭操作和正确的程序运行流程紧密结合。如果软件开关没有打开,则程序不会执行擦写函数或硬件的擦写指令。将软件开关的开启和关闭操作和正确的程序运行流程紧密结合,则使得程序跑飞时软件开关极大概率的处于关闭状态。从而当程序没有按正常的程序流程执行而跑飞到擦写函数时,擦写函数或硬件的擦写指令不会被成功执行。本专利技术包含如下软件开关程序调用方法A:(1)在智能卡开始运行的初期,将软件开关关闭;(2)进行智能卡程序的初始化;(3)在进入智能卡应用程序处理前,将软件开关关闭;(4)等待接收智能卡应用命令;(5)接收到智能卡应用命令后,将软件开关打开;(6)处理接收到的智能卡应用命令(含有调用擦写程序),并返回数据,然后将软件开关关闭;(7)重复执行步骤4~步骤6。该方法有效果的依据之一是:如果是因为干扰程序跑飞,几乎不能完整的执行步骤4~步骤6,特别是执行在第4步的接收环节中,就会因为收不到正确的命令而中止,因此在程序跑飞到擦写函数时,软件开关会极大概率的处于关闭的状态。本专利技术包含如下软件开关(Switch_Variable,采用变量的开关)程序设计方法B:(1)软件开关的打开或关闭,决定了擦写操作是否被允许执行;(2)软件开关代表的数字要在4个字节以上,即232个数据以上;(3)软件开关可拆成一组开关变量,以增加开关的判断次数,例如1个变量表示1个字节的子开关或1个变量表示2个字节的子开关;(4)软件开关等于一组特殊值时,表示开关关闭,例如0x00000000;(5)软件开关等于一组特殊值时,表示开关开启,例如0x6780904F。本专利技术包含如下结合了软件开关的非易失性存储器的擦写程序的设计方法C:(1)将待写入的数据写入硬件擦写操作的缓冲区;(2)调用判断软件开关函数。该函数功能是判断软件开关(Switch_Variable,表示基于变量的开关)是否处于开启状态(由上述的方法A、方法B决定),如果是关闭状态,则直接执行芯片异常中断或退出擦写程序;如果是开启状态,则执行下一步骤;(3)启动智能卡芯片的擦写硬件操作;特别可以利用某些CPU的指令特点来作为另一种软件开关,例如指令的条件执行属性,即当CPU内部的某SFR的某bit不满足条件时,CPU将不执行当前这句条件指令(通常称含有条件执行属性的指令为条件指令)。下面以ARMSC100CPU的条件指令为例进行说明。STREQR2,[R1];例如,假设本句指令表示硬件启动写操作,但因为有EQ这两个字母表示的条件执行属性,则说明需要在“z”这个CPU标记(该类标记是CPU内部的状态标记,一般存储在寄存器cpsr中)为1时,STREQ这句指令才会被CPU执行(R2\R1是指令的操作数)。如果只在执行该指令之前才将“z”设置为1,并且使得设置z的语句的存储位置远离STREQ这句指令(通过将设置z的语句封装在另一个函数中就能使的存储位置远离),这样就基本完全杜绝了程序直接跑飞到STREQ这句启动写的指令时,造成误擦写的情况。本专利技术包含如下结合了条件指令的软件开关的非易失性存储器的擦写程序的设计方法D:(1)将待写入的数据写入硬件擦写操作的缓冲区;(2)将条件指令的开关(Switch_Instruction,表示基于指令的开关)设为关(3)调用判断软件开关函数。该函数功能是判断当前开关(Switch_Variable)是否处于开启状态(由上述的方法A、方法B决定),如果是关闭状态,则直接执行芯片异常中断或退出擦写程序;如果是开启状态,则将条件指令的开关设为开,并执行下一步骤;(4)启动智能卡芯片的擦写硬件操作(采用条件指令);设计方法D比设计方法C的效果更好,但需要CPU指令的支持。其他能增强本专利技术效果的辅助手段还有:利用函数合并等手段将“启动智能卡芯片的擦写硬件操作”的软件操作数量尽可能的降到最少,将能提升本专利技术的效果;如果设计成由硬件在启动擦写前来识别软件开关的开启(例如硬件设计为在擦写等动作前要先写入一定的指令序列,则可将该指令序列和软件开关进行一定的匹配),将能提升本专利技术的效果。本专利技术提供的这种方法——经过热插拔和电压干扰试验的实践证明——可让智能卡从数百次干扰就出现一次数据被误改写,变成一万次以上未出现过该现象,大大的增强了智能卡的可靠性,提高了产品的成品率。附图说明为了更清楚地说明本专利技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为软件开关程序调用方法A示意图;图2为擦写程序的设计方法C示意图;下面将结合本专利技术实施例中的附图,对本专利技术进行具体介绍。具体实施方式实施例一:本实施例提供一种软件开关程序的调用方法。如图1所示,所述方法包括:步骤A00、上电复位,表示智能卡嵌入式软件开始执行。步骤A01、在程序刚开始执行,即将软件开关关闭,有利于及早的封堵程序跑飞带来不利的影响。步骤A02、执行智能卡程序的其他初始化等工作。步骤A03~A06、是智能卡的数据处理的简要模型,体现为一种本文档来自技高网...
【技术保护点】
一种增强智能卡可靠性的方法,其特征在于采用一个软件开关来控制智能卡非易失性存储器擦写函数的擦写使能;将软件开关的开启和关闭操作放置在擦写函数之外,并且将软件开关的开启和关闭操作放置在智能卡程序运行的正确流程中,步骤如下:(1)在智能卡开始运行的初期,将软件开关关闭;(2)进行智能卡程序的初始化;(3)在进入智能卡应用程序处理前,将软件开关关闭;(4)等待接收智能卡应用命令;(5)接收到智能卡应用命令后,将软件开关打开;(6)处理接收到的智能卡应用命令,并返回数据,然后将软件开关关闭;(7)重复执行步骤(4)~步骤(6)。
【技术特征摘要】
1.一种增强智能卡可靠性的方法,其特征在于采用一个软件开关来控制智能卡非易失性存储器擦写函数的擦写使能;将软件开关的开启和关闭操作放置在擦写函数之外,并且将软件开关的开启和关闭操作放置在智能卡程序运行的正确流程中,步骤如下:(1)在智能卡开始运行的初期,将软件开关关闭;(2)进行智能卡程序的初始化;(3)在进入智能卡应用程序处理前,将软件开关关闭;(4)等待接收智能卡应用命令;(5)接收到智能卡应用命令后,将软件开关打开;(6)处理接收到的智能卡应用命令,并返回数据,然后将软件开关关闭;(7)重复执行步骤(4)~步骤(6)。2.如权利要求1所述的一种增强智能卡可靠性的方法,其特征在于软件开关的打开或关闭,决定了擦写操作是否被允许执行。3.如权利要求1所述的一种增强智能卡可靠性的方法,其特征在于软件开关...
【专利技术属性】
技术研发人员:杨念东,蒙卡娜,
申请(专利权)人:北京中电华大电子设计有限责任公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。