一种智能卡间的通信方法、装置及存储介质与流程

文档序号:26358494发布日期:2021-08-20 20:34阅读:161来源:国知局
一种智能卡间的通信方法、装置及存储介质与流程

本发明涉及通信技术领域,特别涉及一种智能卡间的通信方法、装置及存储介质。



背景技术:

随着移动终端和移动支付的发展及普及,越来越多的场景需要通过2个以上的智能卡实现安全通信,其中一个智能卡集成se(安全芯片),通过se能够保证通信的安全性。

目前现有技术中,两张智能卡之间是不能直接进行通信的,因为作为智能卡都只有从iso7816接口,没有主iso7816接口,如se卡和uicc卡。在现有技术中,为了解决这个问题,有这样一个方案,其中se卡集成了从iso7816接口和主iso7816接口,从iso7816接口用于和终端通信,主iso7816接口用于和uicc卡进行通信,如此一来,终端和uicc卡进行通信只能通过se卡来进行,通信过程的协议和通信帧格式,都需要重新定义,只要一方发生改变,另一方接着需要改变,另一方面,se卡和uicc卡之间的通信也存在通信不稳定的问题,这极大的影响了使用者的使用感受。



技术实现要素:

本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种智能卡间的通信方法,能够通过se模拟主iso7816接口实现se和智能卡的直接通信,且具有通讯速率高且稳定的特点。

本发明还提出一种具有上述智能卡间的通信方法的智能卡间的通信装置。

本发明还提出一种具有上述智能卡间的通信方法的计算机可读存储介质。

根据本发明的第一方面实施例的智能卡间的通信方法,包括以下步骤:第一智能卡基于定时器计算数据的发送和/或接收的基本时间单元;基于所述基本时间单元计算所述第一智能卡接收第二智能卡的数据的时延值;基于所述时延值,补偿数据的传输延迟后,所述第一智能卡与所述第二智能卡之间进行数据通讯;其中,所述第一智能卡能够模拟主iso7816接口与所述第二智能卡进行通讯。

根据本发明的一些实施例,所述第一智能卡基于定时器计算数据的发送和/或接收的基本时间单元包括以下步骤:通过时钟信号的个数定义所述定时器的计数时间,所述定时器为递减定时器;在数据开始传输的同时启动所述定时器开始计数;在所述数据传输结束的同时停止所述定时器计数;通过所述定时器开始计数时的计数时间和所述定时器停止计数时的计数时间计算所述数据的传输时间;基于所述数据的传输时间计算所述基本时间单元。

根据本发明的一些实施例,基于所述基本时间单元计算所述第一智能卡接收第二智能卡的数据的时延值,包括:基于所述基本时间单元定义第一时延值;若第一时延值大于预设时延常数,则设置第一时延值为第一时延值与所述预设时延常数的差值;若第一时延值大于所述基本时间单元,则设置第二时延值为第一时延值与所述基本时间单元的差值;若第一时延值不大于所述基本时间单元,则设置第二时延值为0;若第二时延值大于零,则设置第一时延值为第一时延值与所述第二时延值的差值;通过第二时延值及第一时延值计算所述第一智能卡接收第二智能卡的数据的时延值。

根据本发明的一些实施例,所述预设时延常数通过中断触发时间和定时器启动时间确定。

根据本发明的一些实施例,基于所述基本时间单元计算所述第一智能卡接收第二智能卡的数据的时延值,包括:设置第一时延值为1.5个所述基本时间单元;若第一时延值大于预设时延常数,则设置第一时延值为第一时延值与所述预设时延常数的差值,所述预设时延常数通过中断触发时间和定时器启动时间确定;若第一时延值大于一个所述基本时间单元,则设置第二时延值为第一时延值与一个所述基本时间单元的差值;若第一时延值不大于一个所述基本时间单元,则设置第二时延值为0;若第二时延值大于零,则设置第一时延值为第一时延值与第二时延值的差值;设置第二时延值为所述第一智能卡接收所述第二智能卡传输的第一个数据位的时延值;设置第一时延值为所述第一智能卡接收所述第二智能卡传输的第二个数据位的时延值;基于第二时延值及第一时延值计算所述第一智能卡接收第二智能卡的数据的时延值。

根据本发明的一些实施例,还包括所述第一智能卡与所述第二智能卡通讯的实时校准,包括:设置通讯次数阈值,若所述第一智能卡与所述第二智能卡的通讯次数大于或等于所述通讯次数阈值,则基于外部时钟对所述定时器进行校准;若所述第一智能卡与所述第二智能卡之间通讯失败,则基于外部时钟对所述定时器进行校准。

根据本发明的一些实施例,还包括步骤:直接操作寄存器实现所述第一智能卡和/或所述第二智能卡的输入输出口的电平读取。

根据本发明的第二方面实施例的智能卡间的通信装置,用于实现智能卡间的通信方法,包括:终端,所述终端包括iso7816主接口,用于提供符合iso7816标准协议的电源信号、时钟信号、复位信号、接地信号及io信号;第一智能卡,所述第一智能卡与所述终端连接;第二智能卡,所述第二智能卡分别与所述终端和所述第一智能卡连接;其中,所述第二智能卡的io端口与所述第一智能卡的io端口连接,所述第二智能卡的电源端口、时钟端口、复位端口、接地端口分别与所述终端的电源端口、时钟端口、复位端口、接地端口连接。

根据本发明的一些实施例,所述第一智能卡为se卡,所述se卡的其中一个io端口与所述终端的io端口连接,所述se卡的另外一个io端口与所述第二智能卡的io端口连接,所述se卡的电源端口、时钟端口、复位端口、接地端口分别与所述终端的电源端口、时钟端口、复位端口、接地端口连接。

根据本发明的第三方面实施例的一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被一个或多个处理器执行时能够执行上述任一项所述的智能卡间的通信方法的步骤。

根据本发明实施例的智能卡间的通信方法,至少具有如下有益效果:通过第一智能卡模拟主iso7816接口实现智能卡和智能卡的直接通信,能够基于定时器定义基本时间单元和传输时延,保证了智能卡和智能卡之间通信的稳定性和高速率。

本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明实施例的方法的流程示意图;

图2为本发明实施例的基本时间单元计算的方法的流程示意图;

图3为本发明实施例的数据传输时延计算的方法的流程示意图;

图4为本发明实施例的定时器实时校准的方法的流程示意图;

图5为本发明实施例的装置的模块示意框图;

图6为本发明实施例的数据通讯的效果示意图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。

应理解,本发明实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

在本发明的描述中,若干的含义是一个或者多个,多个的含义是两个及两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。

术语解释:

iso7816:智能卡的标准;

iso7816主接口:是指可以根据iso7816协议读取智能卡数据的接口,一般指读卡器端;

etu:智能卡通信中数据传输的基本时间单元;

io:输入输出端口;

se:安全芯片。

参照图1,图1为本发明实施例的方法的流程示意图,包括以下步骤:

第一智能卡基于定时器计算数据的发送和/或接收的基本时间单元;

基于基本时间单元计算第一智能卡接收第二智能卡的数据的时延值;

基于时延值,补偿数据的传输延迟后,第一智能卡与第二智能卡之间进行数据通讯;

其中,第一智能卡能够模拟主iso7816接口与第二智能卡进行通讯。

需要说明的是,现有技术中两个智能卡之间并不能直接进行通讯,通过本技术方案的实施例中的第一智能卡模拟主iso7816接口能够直接与智能卡进行通信,以此实现了两个智能卡间的直接通讯,另一方面,通过两张智能卡共用外部的iso7816电源、时钟、复位和地,io模拟iso7816的数据接口实现智能卡和智能卡之间的直接通讯,可以理解的是,本技术方案中实施例的智能卡并不局限于uicc卡、euicc卡、sim卡及se卡,所有能够实现本技术方案的智能卡均属于本方案的保护范围;再一方面,为了实现智能卡之间的通信的高效性和稳定性,本技术方案的实施例通过第一智能卡基于定时器计算数据传输中的etu,根据etu确定智能卡的时延,由于使用了定时器,使得智能卡之间的通讯更加可靠,能够实现较高的通讯速率。

图2示出了本发明实施例的etu计算的方法的流程示意图,第一智能卡基于定时器计算数据的发送和/或接收的基本时间单元包括以下步骤:

通过时钟信号的个数定义定时器的计数时间,定时器为递减定时器;

在数据开始传输的同时启动定时器开始计数;

在数据传输结束的同时停止定时器计数;

通过定时器开始计数时的计数时间和定时器停止计数时的计数时间计算数据的传输时间;

基于数据的传输时间计算基本时间单元。

本发明的一个具体的实施例是,se使用高速定时器替换现有技术方案中的使用硬件etu计算外部时钟,以此实现高精度的确定发送数据和接收数据时间点。通常情况下,iso7816通讯的外部时钟高达5mhz,在如此高的频率下,通过原有的硬件etu计算外部时钟往往会产生一定的误差,从而影响通信的可靠性,本发明的一个实施例,通过se的定时器计算外部时钟,通过计算的外部时钟和对应的数据的传输,能够计算出基本时间单元,例如,可以定义定时器时间为1000个clk,在收发数据时,如一个bit对应32个时钟周期,就可以通过比例换算出一个bit对应的定时器时间。

本发明的另一个具体的实施例是:

sciscnt=clknumber;定义定时器时间为clknumber,此处可以定义为1000;

timer1load=timer_start_num;可以定义定时器为递减的定时器

sysclken|=(1<<9);使能时钟定时器

sysclken|=(1<<19);使能时钟定时器总线

timer1control=(1<<7)|(1<<1)|1;定时器开始工作

scissr|=bit6;/*begin1etucounter*/

while((scissr&bit6)!=0);计时是否结束

timervalue=timer_start_num-timer1value;计算定时器时间

g_iso7816_one_etu_timer_num=timervalue>>param;

g_iso7816_half_etu_timer_num=(g_iso7816_one_etu_timer_num>>1)

基于此,能够通过定时器计算一个基本时间单元和半个时间单元,上述实施例中分别表示为g_iso7816_one_etu_timer_num和g_iso7816_half_etu_timer_num。

根据图3,图3为本发明实施例的数据传输时延计算的方法的流程示意图,基于基本时间单元计算第一智能卡接收第二智能卡的数据的时延值,包括:

基于基本时间单元定义第一时延值;

若第一时延值大于预设时延常数,则设置第一时延值为第一时延值与预设时延常数的差值;

若第一时延值大于基本时间单元,则设置第二时延值为第一时延值与基本时间单元的差值;

若第一时延值不大于基本时间单元,则设置第二时延值为0;

若第二时延值大于零,则设置第一时延值为第一时延值与第二时延值的差值;

通过第二时延值及第一时延值计算第一智能卡接收第二智能卡的数据的时延值。

在本发明一些具体的实施例之中,预设时延常数通过中断触发时间和定时器启动时间确定,具体的,预设时延常数和实际通讯环境中的mcu的主频相关,在一定程度上,预设时延常数为定时器开始到时序发送之间的时间误差值,更具体地,预设时延常数可以通过触发中断和打开定时器中间地一段时延值确定,可以理解的是,预设时延常数在通讯环境确定之后,是一个常量,这个常量跟系统的实际环境相关,能够通过常用的技术实验手段测得。

参照图3,基于基本时间单元计算第一智能卡接收第二智能卡的数据的时延值,包括:设置第一时延值为1.5个基本时间单元;

若第一时延值大于预设时延常数,则设置第一时延值为第一时延值与预设时延常数的差值,预设时延常数通过中断触发时间和定时器启动时间确定;

若第一时延值大于一个基本时间单元,则设置第二时延值为第一时延值与一个基本时间单元的差值;

若第一时延值不大于一个基本时间单元,则设置第二时延值为0;

若第二时延值大于零,则设置第一时延值为第一时延值与第二时延值的差值;

设置第二时延值为第一智能卡接收第二智能卡传输的第一个数据位的时延值;

设置第一时延值为第一智能卡接收第二智能卡传输的第二个数据位的时延值;

基于第二时延值及第一时延值计算第一智能卡接收第二智能卡的数据的时延值。

本发明一个具体的实施例为,se接收uicc卡的数据时,添加定时器开启过程的时延补偿,如图3所示,图3中,firstbitnum为第一时延值,timer_repair_num为预设时延常数;startbitnum为第二时延值;etu_timer_num为基本时间单元,具体的:

firstbitnum=g_iso7816_half_etu_timer_num+

g_iso7816_one_etu_timer_num;

firstbitnum=(firstbitnum>first_bit_timer_repair_num)?

(firstbitnum-first_bit_timer_repair_num):firstbitnum;

startbitnum=(firstbitnum>g_iso7816_one_etu_timer_num)?

(firstbitnum-g_iso7816_one_etu_timer_num):0;

firstbitnum=(startbitnum>0)?(firstbitnum-startbitnum):firstbitnum;

g_iso7816_rev_fisrt_bit_wait_timer_num=startbitnum;

g_iso7816_rev_second_bit_wait_timer_num=firstbitnum。

其中,firstbitnum为第一时延值,通过firstbitnum计算第一智能卡接收第二智能卡传输的第二个数据位的时延值,startbitnum为第二时延值,通过startbitnum计算第一智能卡接收第二智能卡传输的第一个数据位的时延值,基于第二时延值及第一时延值确定第一智能卡接收第二智能卡的数据的时延值。例如:firstbitnum初始设置为1.5etu,first_bit_timer_repair_num初始设置为1个etu,由于此时firstbitnum大于first_bit_timer_repair_num,则firstbitnum重新设置为1.5-1=0.5etu,此时,firstbitnum小于1个etu,因此,startbitnum设置为0,在startbitnum为0的情况下,firstbitnum的值不变还是0.5etu,因此,在firstbitnum=1.5etu,first_bit_timer_repair_num=1etu的初始情况下,第一智能卡接收第二智能卡传输的第一个数据位的时延值为0etu,相当于无时延,当接收到中断信号则立即启动接收;第一智能卡接收第二智能卡传输的第二个数据位的时延值为0.5个etu。另一种情况,firstbitnum初始设置为1.5etu,first_bit_timer_repair_num初始设置为0.3个etu,由于此时firstbitnum大于first_bit_timer_repair_num,则firstbitnum重新设置为1.5-0.3=1.2个etu,此时,firstbitnum大于1个etu,因此,startbitnum设置为1.2-1=0.2个etu,在startbitnum大于0的情况下,firstbitnum的值为1.2-0.2=1个etu,因此,在firstbitnum=1.5etu,first_bit_timer_repair_num=1etu的初始情况下,第一智能卡接收第二智能卡传输的第一个数据位的时延值为0.2etu,第一智能卡接收第二智能卡传输的第二个数据位的时延值为1个etu。

在本发明一些实施例中,第一智能卡接收第二智能卡传输的第一个数据位始终为低电平,不是有效数据位,第一智能卡接收第二智能卡传输的第二个数据位才是数据传输的有效值,通过本发明实施例的计算时延的方法,可以看出,无论在何种情况下,都能避免时延计算不准确从而导致接收数据错误的问题产生,本发明的实施例能够根据预设时延常数,通过基本时间单元和预设时延常数之间的关系更加精确的计算出实际的传输时延值,保证了数据接收的稳定性和可靠性,这一点也在本发明实施例的相关实验得到了验证。在本发明一些实施例之中,first_bit_timer_repair_num也就是预设时延常数为1.5μs。

图4示出了本发明实施例的定时器实时校准的方法的流程示意图,包括:

设置通讯次数阈值,若第一智能卡与第二智能卡的通讯次数大于或等于通讯次数阈值,则基于外部时钟对定时器进行校准;

若第一智能卡与第二智能卡之间通讯失败,则基于外部时钟对定时器进行校准。

本发明的一个具体的实施例为:智能卡增加实时通讯校准功能,避免了温度变化导致晶振/定时器偏差引起通讯失败的问题,例如,当se模拟iso7816主接口和uicc卡或者sim卡等通信过程中,当通讯次数超过比如100次后,使用外部iso7816时钟校准内部定时器,达到实时校准目的。

其中,etutopclkcoefficient为时钟校准函数,时钟校准的具体方法为本领域技术人员所熟知的常用技术,因此此处不再赘述。

在安全芯片se模拟iso7816和sim卡或其他智能卡通信过程中,如果发生通讯失败,则立刻使用外部时钟对内部时钟进行校准,避免温度变化导致导致晶振/定时器偏差引起通讯失败。

根据本发明的一些具体的实施例,还包括直接操作寄存器实现第一智能卡和/或第二智能卡的输入输出口的电平读取。可以理解的是,本领域中通常的做法是采用上层函数调用的方法操作寄存器,这样数据的传输就会经过函数调用过程的一定程度的延迟,有时候还会出错,本发明的实施例提供一种直接操作寄存器的方法读取数据,进一步节约了数据的读取时间。

本发明的一个具体的实施例是:智能卡使用高速gpio接口,直接操作寄存器实现100ns内gpio翻转和io口电平读取;

#defineiso7816io_low(gpiodata&=~(1))

#defineiso7816io_high(gpiodata|=(1))

#defineiso7816io_data(gpiodata&0x01)

参照图5,图5为本发明实施例的装置的模块示意框图;,包括:

终端,终端包括iso7816主接口,用于提供符合iso7816标准协议的电源信号、时钟信号、复位信号、接地信号及io信号,可以理解的是,本发明中的终端可以是手机,掌上电脑,平板电脑,电话手表等等;

第一智能卡,第一智能卡与终端连接;

第二智能卡,第二智能卡分别与终端和第一智能卡连接;

其中,第二智能卡的io端口与第一智能卡的io端口连接,第二智能卡的电源端口、时钟端口、复位端口、接地端口分别与终端的电源端口、时钟端口、复位端口、接地端口连接。

在本发明的一些实施例之中,第一智能卡为se卡,se卡的其中一个io端口与终端的io端口连接,se卡的另外一个io端口与第二智能卡的io端口连接,se卡的电源端口、时钟端口、复位端口、接地端口分别与终端的电源端口、时钟端口、复位端口、接地端口连接。

在本发明一些具体的实施例之中,手机中的iso7816主接口的vccrstclkgnd和sim卡连接,se的普通io口和sim卡7816从io口连接,通过驱动普通io口模拟7816接口实现se和sim卡通信。

在本发明的一些实施例之中,通过iso7816选择应用的方式区别se和sim的指令,或者区别两个智能卡之间的应用的指令,芯片上电默认选择se应用,当手机发送选择sim卡应用指令给se后,后续指令由se转发给sim卡,指令格式和正常sim卡一样,不需要特殊处理。

图6为本发明实施例的数据通讯的效果示意图,智能卡如se模拟iso7816的io接口实现和智能卡如sim卡之间的高速稳定通讯,通讯速率可以高达300kbps,目前,业内基本都是100kbps的。图6中时序显示,智能卡se先接收到手机发过来的0x950x3b0x2e0x660x710x8c0x1f0x5a,然后转发给智能卡sim卡,智能卡sim返回0x9000给智能卡se,智能卡se再返回给手机,整个采用高速率通讯,时序合理,且时延准确,通信稳定可靠。

在本发明的一些实施例之中,还包括一种计算机可读存储介质,计算机存储介质包括存储的计算机程序;计算机程序在运行时控制计算机存储介质所在的设备执行智能卡间的通信方法。

本发明的实施例具有硬件要求更低,实现更加灵活,使用更加便利的特点,本发明实施例通过se模拟主iso7816接口实现se和智能卡的直接通信,能够基于定时器定义基本时间单元和传输时延,保证了se和智能卡之间通信的稳定性和高速率。

尽管本文描述了具体实施方案,但是本领域中的普通技术人员将认识到,许多其它修改或另选的实施方案同样处于本公开的范围内。例如,结合特定设备或组件描述的功能和/或处理能力中的任一项可以由任何其它设备或部件来执行。另外,虽然已根据本公开的实施方案描述了各种例示性具体实施和架构,但是本领域中的普通技术人员将认识到,对本文的例示性具体实施和架构的许多其它修改也处于本公开的范围内。

上文参考根据示例性实施方案的系统、方法、系统和/或计算机程序产品的框图和流程图描述了本公开的某些方面。应当理解,框图和流程图中的一个或多个块以及框图和流程图中的块的组合可分别通过执行计算机可执行程序指令来实现。同样,根据一些实施方案,框图和流程图中的一些块可能无需按示出的顺序执行,或者可以无需全部执行。另外,超出框图和流程图中的块所示的那些部件和/或操作以外的附加部件和/或操作可存在于某些实施方案中。

因此,框图和流程图中的块支持用于执行指定功能的装置的组合、用于执行指定功能的元件或步骤的组合以及用于执行指定功能的程序指令装置。还应当理解,框图和流程图中的每个块以及框图和流程图中的块的组合可以由执行特定功能、元件或步骤的专用硬件计算机系统或者专用硬件和计算机指令的组合来实现。

本文的程序模块、应用程序等可包括一个或多个软件组件,包括例如软件对象、方法、数据结构等。每个此类软件组件可包括计算机可执行指令,计算机可执行指令响应于执行而使本文的功能的至少一部分(例如,本文的例示性方法的一种或多种操作)被执行。

软件组件可以用各种编程语言中的任一种来编码。一种例示性编程语言可以为低级编程语言,诸如与特定硬件体系结构和/或操作系统平台相关联的汇编语言。包括汇编语言指令的软件组件可能需要在由硬件架构和/或平台执行之前由汇编程序转换为可执行的机器代码。另一种示例性编程语言可以为更高级的编程语言,其可以跨多种架构移植。包括更高级编程语言的软件组件在执行之前可能需要由解释器或编译器转换为中间表示。编程语言的其它示例包括但不限于宏语言、外壳或命令语言、作业控制语言、脚本语言、数据库查询或搜索语言、或报告编写语言。在一个或多个示例性实施方案中,包含上述编程语言示例中的一者的指令的软件组件可直接由操作系统或其它软件组件执行,而无需首先转换成另一种形式。

软件组件可存储为文件或其它数据存储构造。具有相似类型或相关功能的软件组件可一起存储在诸如特定的目录、文件夹或库中。软件组件可为静态的(例如,预设的或固定的)或动态的(例如,在执行时创建或修改的)。

上面结合附图对本发明实施例作了详细说明,但是本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1