CN102929708B - 一种实现智能卡多任务处理的方法 - Google Patents
一种实现智能卡多任务处理的方法 Download PDFInfo
- Publication number
- CN102929708B CN102929708B CN201210461469.6A CN201210461469A CN102929708B CN 102929708 B CN102929708 B CN 102929708B CN 201210461469 A CN201210461469 A CN 201210461469A CN 102929708 B CN102929708 B CN 102929708B
- Authority
- CN
- China
- Prior art keywords
- task
- data
- iso
- swp
- apdu
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种实现智能卡多任务处理的方法,涉及智能卡操作系统领域。该方法包括:智能卡的底层操作系统创建多个任务,并为每个任务分配优先级,查找优先级最高且当前状态为就绪状态的任务并切换到该任务运行,包括SWP任务和ISO任务接收上层下发的数据,从中解析出APDU数据进行APDU命令处理并将处理结果封包成响应数据返回给上层,或者SWP任务和ISO任务将解析出APDU数据发送给APDUProcess任务执行APDU命令处理,等待接收返回的处理结果,并将处理结果封包成响应数据返回给上层。本发明实现了智能卡的多个IO接口同时工作,使得智能卡的功能更加强大。
Description
技术领域
本发明涉及智能卡操作系统领域,特别涉及一种实现智能卡多任务处理的方法。
背景技术
目前,智能卡应用已广泛渗透到各个行业,智能卡以其安全、方便、快捷、容量大、多功能等诸多特点越来越受到普遍重视,并被广泛应用。同时随着半导体技术和电子技术的迅猛发展,使得一张卡片能同时存储的数据量大大增加,这也使得一张卡片通过多接口实现同时支持多个应用有了物理基础,同时在一张卡片具备多个接口实现多个应用的时,会遇到需要多个接口同时工作的情况,这些是目前智能卡操作系统的研发遇到的难题,现有的传统的多界面智能卡无法保证在所有处理的数据都满足各自的接口规范时,各界面的数据能够同时处理,无法满足多接口同时工作的需求。
发明内容
本发明的目的是解决现有技术中一张智能卡在一个时刻只有一个IO接口可以工作的问题,提出了一种实现智能卡多任务处理的方法,即实现同一时刻智能卡的多个IO接口同时工作进而实现同一时刻智能卡的多任务处理。
本发明采取的技术方案是:
一种实现智能卡多任务处理的方法,包括
步骤S1:智能卡上电,进行卡片初始化;
步骤S2:智能卡的底层操作系统对多任务环境进行初始化;
步骤S3:智能卡的底层操作系统创建多个任务,并为创建的多个任务分配优先级;
步骤S4:智能卡的底层操作系统查找优先级最高且当前状态为就绪状态的任务并切换到该任务运行;
当切换到SWP任务运行时,执行步骤S5-S13;
当切换到ISO任务运行时,执行步骤S14-S20;
步骤S5:所述SWP任务判断是否有激活信号,是则执行下一步,否则等待激活信号;
步骤S6:所述SWP任务检测到激活信号后向上层发送SWP激活数据帧;
步骤S7:所述SWP任务等待接收上层下发数据;
步骤S8:所述SWP任务判断接收到的数据是否符合预设数据帧格式,是则执行步骤S9,否则执行SWP层协议处理返回相应响应数据给上层,然后返回步骤S7;
步骤S9:所述SWP任务判断接收到的数据是否包含HCI数据包,是则执行步骤S10,否则执行SWP层协议处理返回相应响应数据给上层,然后返回步骤S7;
步骤S10:所述SWP任务判断所述HCI数据包中是否包含预设事件指令,是则执行步骤S11,否则执行HCI协议层处理返回第一响应数据给上层,然后返回步骤S7;
步骤S11:所述SWP任务提取所述预设指令中包含的APDU数据,并执行APDU命令处理得到处理结果;
步骤S12:所述SWP任务把处理结果打包成HCI数据包,再把所述HCI数据包打包成符合预设数据帧格式的第二响应数据;
步骤S13:所述SWP任务将所述第二响应数据返回给上层,返回步骤S7;
步骤S14:所述ISO任务判断是否有激活信号,是则执行下一步,否则等待激活信号;
步骤S15:所述ISO任务检测到激活信号后向上层发送ISO激活数据帧;
步骤S16:所述ISO任务等待接收上层下发数据;
步骤S17:所述ISO任务判断接收到的数据是否是PPS数据,是则执行PPS处理返回PPS响应数据给上层,否则执行步骤S18;
步骤S18:所述ISO任务等待接收APDU数据;
步骤S19:所述ISO任务对接收到的所述APDU数据执行APDU命令处理得到处理结果;
步骤S20:所述ISO任务将处理结果返回给上层,返回步骤S18。
该方法还可以是:
当切换到SWP任务运行时,执行步骤S5'-S13';
当切换到ISO任务运行时,执行步骤S14'-S20';
当切换到APDUProcess任务时候,执行步骤S21'-S25';
步骤S5':所述SWP任务判断是否有激活信号,是则执行下一步,否则等待激活信号;
步骤S6':所述SWP任务检测到激活信号后向上层发送SWP激活数据帧;
步骤S7':所述SWP任务等待接收上层下发数据;
步骤S8':所述SWP任务判断接收到的数据是否符合预设数据帧格式,是则执行步骤S9',否则执行SWP层协议处理返回相应响应数据给上层,然后返回步骤S7';
步骤S9':所述SWP任务判断接收到的数据是否包含HCI数据包,是则执行步骤S10',否则执行SWP层协议处理返回相应响应数据给上层,然后返回步骤S7';
步骤S10':所述SWP任务判断所述HCI数据包中是否包含预设事件指令,是则执行步骤S11',否则执行HCI协议层处理返回第一响应数据给上层,然后返回步骤S7';
步骤S11':所述SWP任务提取所述预设指令中包含的APDU命令,并将所述APDU命令加入APDU队列,等待接收处理结果;
步骤S12':所述SWP任务把接收到的所述处理结果打包成HCI数据包,再把所述HCI数据包打包成符合预设数据帧格式的第二响应数据;
步骤S13':所述SWP任务将所述第二响应数据返回给上层,返回步骤S7';
步骤S14':所述ISO任务判断是否有激活信号,是则执行下一步,否则等待激活信号;
步骤S15':所述ISO任务检测到激活信号后向上层发送ISO激活数据帧;
步骤S16':所述ISO任务等待接收上层下发数据;
步骤S17':所述ISO任务判断接收到的数据是否是PPS数据,是则执行PPS处理返回PPS响应数据给上层,否则执行步骤S18';
步骤S18':所述ISO任务等待接收APDU数据;
步骤S19':所述ISO任务将接收到的所述APDU数据加入APDU队列,等待接收处理结果;
步骤S20':所述ISO任务将接收到的所述处理结果返回给上层,返回步骤S18';
步骤S21':所述APDUProcess任务进行任务初始化;
步骤S22': 所述APDUProcess任务等待APDU队列有数据存入;
步骤S23':所述APDUProcess任务按先进先出的顺序从所述APDU队列中提取出数据;
步骤S24':所述APDUProcess任务对提取出的所述数据执行APDU命令处理;
步骤S25':所述APDUProcess任务将处理结果发送给与所述数据对应的任务,然后返回步骤S22'。
所述判断是否有激活信号具体为,检查IO接口是否有满足条件的电流或电压信号,是则表示有激活信号,否则表示没有激活信号。
所述SWP任务判断接收到的数据是否符合预设数据帧格式具体包括:
A:所述SWP任务判断接收到的数据是否是SHDLC数据帧类型,是则执行B,否则不符合预设数据帧格式;
B:判断所述数据是否是I帧,是则符合预设数据帧格式,否则不符合预设数据帧格式。
所述SWP任务判断接收到的数据是否包含HCI数据包,是则还包括,所述SWP任务判断所述HCI数据包是否完整,是则执行下一步,否则返回等待接收上层下发数据。
所述ISO任务等待接收APDU数据之后还包括,所述ISO任务判断接收到的所述APDU数据是否完整,是则执行下一步,否则返回等待接收APDU数据。
所述ISO任务等待接收APDU数据之后执行还可以执行以下步骤:
步骤A1:所述ISO任务判断接收到的数据是否是I-block数据帧类型,是则执行下一步,否则执行T1层协议处理返回第四响应数据给上层,然后返回等待接收上层下发数据;
步骤A2:所述ISO任务从接收到的I-block数据帧中提取出APDU数据;
步骤A3:所述ISO任务判断接收到的所述I-block数据帧是否是最后一个分组,是则执行下一步,否则返回等待接收APDU数据;
步骤A4:所述ISO任务对提取到的APDU数据执行APDU命令处理;
步骤A5:所述ISO任务把处理结果打包成I-block数据帧类型的第三响应数据;
步骤A6:所述ISO任务将所述第三响应数据返回给上层,然后返回等待接收APDU数据。
或者是所述ISO任务等待接收APDU数据之后执行以下步骤:
步骤B1:所述ISO任务判断接收到的数据是否是I-block数据帧类型,是则执行下一步,否则执行T1层协议处理返回第四响应数据给上层,然后返回等待接收上层下发数据;
步骤B2:所述ISO任务从接收到的I-block数据帧中提取出APDU数据;
步骤B3:所述ISO任务判断接收到的所述I-block数据帧是否是最后一个分组,是则执行下一步,否则返回等待接收APDU数据;
步骤B4:所述ISO任务将提取到的APDU数据加入APDU队列,,等待接收处理结果;;
步骤B5:所述ISO任务把接收到的所述处理结果打包成I-block数据帧类型的第三响应数据;
步骤B6:所述ISO任务将所述第三响应数据返回给上层,然后返回等待接收APDU数据。
所述为创建的多个任务分配优先级具体为根据时序为创建的多个任务分配优先级。
本发明的有益效果是:可以实现同一时刻智能卡的多个IO接口同时工作,使得智能卡的功能更加强大。
附图说明
图1是实施例1提供的一种实现智能卡多任务处理的方法流程图;
图2是图1中步骤108和109的细化图;
图3是图1中步骤113和114的一种细化图;
图4是图1中步骤113和114的另一种细化图;
图5是实施例2提供的一种实现智能卡多任务处理的方法流程图;
图6是图2中步骤208-步骤213的细化图;
图7是图2中步骤222-步骤227的一种细化图;
图8是图2中步骤222-步骤227的另一种细化图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
实施例1
本实施例提供的一种实现智能卡多任务处理的方法,以两个任务的处理为例进行介绍,如图1所示包括以下步骤:
步骤101:智能卡上电,进行卡片初始化;
步骤102:智能卡的底层操作系统(底层OS)对多任务环境进行初始化;
步骤103:底层操作系统创建SWP任务和ISO任务,并为创建的任务分配优先级;
优选的底层OS根据时序为多任务分配优先级。
本实施例中,具体的按照优先级从高到低的顺序创建的两个任务分别为:SWP任务和ISO任务。
其中高优先级任务可以抢占低优先级任务,如当高优先级任务从等待状态转为就绪状态时,会抢占正在运行的低优先级任务而转为运行状态,被抢占的低优先级任务则由运行状态变成就绪状态。同时,几个任务之间有互斥特性,即当几个任务同时访问共享资源时(如执行硬件加解密算法),只有一个任务可以得到共享资源,别的任务必须等待共享资源被释放时,才能访问此共享资源,即使它的优先级更高。
步骤104:底层操作系统查找优先级最高且当前状态为就绪状态的任务并切换到该任务运行;
当查找到的符合条件的任务为SWP任务时,即当切换到SWP任务运行时执行步骤105-109;
当查找到的符合条件的任务为ISO任务时,即当切换到ISO任务运行时执行步骤110-114;
当切换到SWP任务时或在ISO任务运行前还包括:底层OS将SWP任务或ISO任务的当前状态更改为运行状态,并恢复SWP任务或ISO任务的运行时环境。每个任务对应有自己的堆栈和全局变量,用于存储当前任务的运行时环境,如程序指针和堆栈指针,其他CPU寄存器等等,恢复该任务的运行时环境具体为将该任务的运行时环境存储到CPU寄存器中。
本实施例中具体地,根据步骤103中分配的优先级,本步骤中查找到的符合条件的任务是SWP任务。
步骤105:SWP任务判断是否有SWP激活信号,是则执行步骤107,否则执行步骤106;
具体地,判断SWP任务对应的IO接口是否有满足条件的电流或电压信号,是则表示有SWP激活信号,否则没有激活信号处于等待激活状态。
步骤106:SWP任务等待SWP激活信号;
具体地,在等待SWP激活信号时还包括:底层OS将SWP任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境。
当收到SWP激活信号时还包括:底层OS将SWP任务的当前状态由等待状态更改为就绪状态,当处于就绪状态且优先级最高的任务是SWP任务时,底层OS将SWP任务的当前状态更改为运行状态,恢复该任务的运行时环境。
步骤107:SWP任务接收到激活信号后向上层发送符合SWP协议的激活数据帧。
具体地,向上层发送ACT_SYC_FRAME。
步骤108:SWP任务等待接收上层下发数据;
具体地,SWP任务在等待接收上层下发数据时还包括:底层OS将SWP任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境。
本实施例中具体地,当执行当前任务过程中需要等待某些事件时,将当前任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境具体为将CPU寄存器中的执行环境保持到当前任务对应的堆栈和全局变量中。
具体地,当接收到数据时还包括:底层OS将SWP任务的当前状态由等待状态更改为就绪状态,当处于就绪状态且优先级最高的任务是SWP任务时,底层OS将SWP任务的当前状态更改为运行状态,恢复该任务的运行时环境执行步骤109。
步骤109:SWP任务对接收到的数据进行处理并向上层返回符合SWP协议的相应响应数据,然后返回步骤108。
本实施例中具体地,当SWP接收到的数据中含有APDU数据时,则对APDU数据进行处理并封装成APDU响应返回给上层。
所述对APDU数据进行处理具体为:根据APDU 数据结构中的CLS,INS,P1,P2及携带的数据执行相应的处理,所述APDU响应包括向上层返回的处理结果及状态字。
本实施例中,上述步骤108和步骤109可以具体为如下内容,如图2所示:
步骤1-1:SWP任务等待接收上层下发数据;
步骤1-2:SWP任务判断接收到的数据是否是SHDLC数据帧格式,是则执行步骤1-4,否则执行步骤1-3;
具体地,判断接收到的数据第一个字节的最高位是否为1,是则符合SHDLC数据帧格式,否则不符合。
例如:接收到的上层下发的数据为80 8450 00A4040000,符合SHDLC数据帧格式。
步骤1-3:SWP任务执行SWP层协议处理返回相应响应数据给上层;
步骤1-4:SWP任务判断所述数据是否是I帧,是则执行步骤1-5,否则执行步骤1-3;
具体地,判断所述数据的第一个字节次高位是否为0,是则表示是I帧,否则不是I帧。例如所述数据80 8450 00A4040000是I帧。
步骤1-5:SWP任务判断I帧是否携带HCI数据包,是则执行步骤1-6,否则执行步骤1-3;
本实施例中具体地,I帧携带的HCI数据包为8450 00A4040000。
步骤1-6:SWP任务判断携带的HCI数据包是否完整,是则执行步骤1-7,否则执行步骤1-1;
具体地,若接收到的HCI数据包的第一个字节最高两位是10,则表示完整的接收到了上层下发的数据8450 00A4040000。
步骤1-7:SWP任务判断HCI数据包是否包含evt_send_data事件指令,是则执行步骤1-9,否则执行步骤1-8;
具体地,若接收到的HCI数据包的第二个字节是“50”,则表示包含有evt_send_data事件指令。
步骤1-8:SWP任务执行HCI层协议处理返回第一响应数据给上层,然后返回步骤1-1;
步骤1-9:SWP任务提取evt_send_data事件指令所包含的APDU数据;
具体地,提取到的APDU数据为00A4040000。
步骤1-10:SWP任务对所述APDU数据执行APDU命令处理;
具体地,对数据00A4040000执行APDU命令处理后生成的处理结果为:6F 10 84 08 A0 00 00 00 03 00 00 00 A5 04 9F65 01 FF 90 00。
步骤1-11:SWP任务把处理结果打包成包含 evt_send_data 事件指令的HCI数据包;
具体地,将上述处理结果打包成的HCI数据包为:
84 50 6F 10 84 08 A0 00 00 00 03 00 00 00 A504 9F 65 01 FF 90 00。
步骤1-12:SWP任务将HCI数据包打包成符合SHDLC数据帧类型的第二响应数据;
具体地,将上述HCI数据包打包成的SHDLC数据帧类型的第二响应数据为:81 84 50 6F 10 84 08 A0 00 00 00 03 00 0000 A5 04 9F 65 01 FF 90 00。
步骤1-13:SWP任务将第二响应数据返回给上层,返回执行步骤1-1。
步骤110:ISO任务判断是否有ISO激活信号,是则执行步骤112,否则执行步骤111;
具体地,判断ISO任务对应的IO接口激活是否有满足条件的电流或电压信号,是则表示有ISO激活信号,否则没有激活信号处于等待激活状态。
步骤111:ISO任务等待ISO激活信号;
具体地,在等待ISO激活信号时还包括:底层OS将ISO任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境。
当接收到ISO激活信号时还包括:底层OS将ISO任务的当前状态由等待状态更改为就绪状态;当处于就绪状态且优先级最高的任务是ISO任务时,底层OS将ISO任务的当前状态更改为运行状态,恢复该任务的运行时环境执行步骤112。
步骤112:ISO任务检测到激活信号后向上层发送符合ISO协议的激活数据帧。
具体地,向上层发送一个ATR。例如:
当ISO任务支持T0类型协议时,向上层发送的ATR为:
3b 7b 96 00 00 46 54 43 4f 53 2e 45 31 3152 20
当ISO任务支持T1类型协议时,向上层发送的ATR为:
3b 9a 95 81 31 80 9f 48 31 30 43 52 2e 4654 30 30 c4
步骤113:ISO任务等待接收上层下发数据;
具体地,ISO任务在等待接收上层下发数据时还包括:底层OS将ISO任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境;
本实施例中具体地,当执行当前任务过程中需要等待某些事件时,将当前任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境具体为将CPU寄存器中的执行环境保持到当前任务对应的堆栈和全局变量中。
具体地,当接收到数据时还包括:底层OS将ISO任务的当前状态由等待状态更改为就绪状态;当处于就绪状态且优先级最高的任务是ISO任务时,底层OS将ISO任务的当前状态更改为运行状态,恢复该任务的运行时环境执行步骤114。
步骤114:ISO对接收到的数据进行处理并向上层返回符合ISO协议的相应响应数据,返回步骤113。
本实施例中具体地,当接收到的数据中含有APDU数据,则对APDU数据进行处理并封装成APDU响应返回给上层。
所述对APDU数据进行处理具体为:根据APDU数据结构中的CLS,INS,P1,P2及携带的数据执行相应的处理,所述APDU响应包括向上层返回的处理结果及状态字。
本实施例中,上述步骤113和步骤114可以具体为如下内容,如图3所示:
步骤2-1:ISO任务等待接收上层下发数据;
步骤2-2:ISO任务判断接收到的数据是否是PPS数据,是则执行步骤2-3,否则执行步骤2-4;
具体地,ISO任务判断接收到的数据的第一个字节是否为FF,是则是PPS数据执行步骤2-3,否则执行步骤2-4;
例如,ISO任务接收到的PPS数据为FF 10 96 79。
步骤2-3:ISO任务执行PPS处理返回PPS响应数据给上层,然后返回执行步骤2-1;
具体地,ISO任务返回给送上层的PPS响应数据为FF 10 96 79。
步骤2-4:ISO任务判断接收到的APDU数据是否完整,是则执行步骤2-6,否则返回执行步骤2-5;
具体地,ISO任务判断接收到的APDU数据是否为5个字节,是则接收到了完整的数据,执行步骤2-6,否则返回执行步骤2-5。
例如:ISO任务接收到上层下发的完整的APDU数据为00A4040000。
步骤2-5:ISO任务等待接收APDU数据,返回步骤2-4;
步骤2-6:ISO任务对接收到的APDU数据执行APDU命令处理;
具体地,ISO任务对APDU数据执行APDU命令处理后包括:
1)向上层返回一个状态字SW;
具体地,向上层发送的状态字SW为:61 12。
2)等待上层下发取数据命令;
具体地,上层下发的提取数据命令为:00 C0 00 00 12。
3)ISO任务对所述提取数据命令执行APDU命令处理生成处理结果;
具体的,生成的处理结果为:6F 10 84 08 A0 00 00 0003 00 00 00 A5 04 9F65 01 FF 90 00。
步骤2-7:ISO任务将处理结果返回给上层,然后返回步骤2-5。
本实施例中,上述步骤113和步骤114还可以具体为如下内容,如图4所示:
步骤2-1':ISO任务等待接收上层下发数据;
步骤2-2':ISO任务判断接收到的数据是否是PPS数据,是则执行步骤2-3',否则执行步骤2-5';
具体地:ISO任务判断接收到的数据的第一个字节是否为FF,是则所述数据是PPS数据执行步骤2-3',否则执行步骤2-5'。
例如,ISO任务接收到的PPS数据为FF 11 95 7B。
步骤2-3':ISO任务执行PPS处理返回PPS响应数据给上层,然后返回执行步骤2-1';
具体地,ISO任务返回给上层的PPS响应数据为:FF 11 95 7B。
步骤2-4':ISO任务等待接收数据,然后进入步骤2-5';
步骤2-5':ISO任务判断接收到的数据是否是I-block数据帧类型,是则执行步骤2-7',否则执行步骤2-6';
具体地:ISO任务判断接收到的数据的第二字节的第八位是否为0,是则所述数据是I-block数据帧类型执行步骤2-7',否则执行步骤2-6'。
例如,ISO任务接收到的I-block数据帧类型的数据为:00 00 0500 A4 04 00 00 A5;ISO任务接收到的非I-block数据帧类型的数据为:00 C1 01 FE 3E。
步骤2-6':ISO任务执行T1层协议处理返回第四响应数据给上层,然后返回步骤2-1';
具体地,ISO任务向上层返回的第四响应数据为:00 E1 01 FE1E。
步骤2-7':ISO任务从接收到的I-block数据帧中提取出APDU数据;
具体地,ISO任务从接收到的I-block数据帧00 00 05 00 A404 00 00 A5中提取出的APDU数据为:00A4040000。
步骤2-8':ISO任务判断接收到的I-block数据帧是否是最后一个分组,是则执行步骤2-9',否则返回执行步骤2-4';
具体地,ISO任务判断接收到的I-block数据帧的第二字节的第六位是否为0,是则接收到的I-block数据帧是最后一个分组执行步骤2-9',否则返回执行步骤2-4'。
步骤2-9':ISO任务对提取到的APDU数据执行APDU命令处理;
具体地,ISO任务对提取到的APDU数据执行APDU命令处理得到的处理结果为:6f 10 84 08 a0 00 00 00 03 00 00 00a5 04 9f 65 01 ff 90 00。
步骤2-10':ISO任务把处理结果打包成I-block数据帧类型的第三响应数据;
具体地:ISO任务把处理结果打包成I-block数据帧类型的第三响应数据为:00 00 14 6f 10 84 08 a0 00 00 00 0300 00 00 a5 04 9f 65 01 ff 90 00 71。
步骤2-11':ISO任务将第三响应数据返回给送上层,然后返回执行步骤2-4'。
进一步的,本实施例中步骤113和步骤114还可以具体为如下步骤:
步骤E1:ISO任务等待接收上层下发数据;
步骤E2:ISO任务判断接收到的数据是否是PPS数据,是则执行步骤E3,否则执行步骤E4;
步骤E3:ISO任务执行PPS处理返回PPS响应数据给上层,然后返回执行步骤E1;
步骤E4:ISO任务判断当前的协议类型,如果是T0类型协议,则执行图3所示步骤2-4至步骤2-7,如果是T1类型协议,则执行图4所示步骤2-4'至步骤2-11'。
实施例2
本实施例提供的一种实现智能卡多任务处理的方法,以三个任务的处理为例进行介绍,如图5所示包括以下步骤:
步骤201:智能卡上电,进行卡片初始化;
步骤202:智能卡的底层操作系统(底层OS)对多任务环境进行初始化;
步骤203:底层操作系统创建SWP任务、ISO任务和APDUProcess任务,并为创建的任务分配优先级;
优选的底层OS根据时序为多任务分配优先级。
本实施例中,具体的按照优先级从高到低创建任务分别为:SWP任务、ISO任务和APDUProcess任务。
其中高优先级任务可以抢占低优先级任务,如:当高优先级任务从等待状态转为就绪状态时,会抢占正在运行的低优先级任务而转为运行状态。被抢占的任务则变成就绪状态。同时,几个任务之间有互斥特性,即当几个任务同时访问共享资源时(如执行硬件加解密算法),只有一个任务可以得到共享资源,别的任务必须等待共享资源被释放时,才能访问此共享资源,即使它的优先级更高。
步骤204:底层操作系统查找优先级最高且当前状态为就绪状态的任务并切换到该任务运行;
当查找到的符合条件的任务为SWP任务时,即当切换到SWP任务运行时执行步骤205-213;
当查找到的符合条件的任务为APDUProcess任务时,即当切换到APDUProcess任务运行时执行步骤214-218;
当查找到的符合条件的任务为ISO任务时,即当切换到ISO任务运行时执行步骤219-227;
当切换到查找到的符合条件的任务运行前还包括:底层OS将查找到的符合条件的任务的当前状态更改为运行状态,并恢复任务的运行时环境。每个任务对应有自己的堆栈和全局变量,用于存储当前任务的运行时环境,如程序指针和堆栈指针,其他CPU寄存器等等,所述恢复该任务的运行时环境具体为将该任务的运行时环境存储到CPU寄存器中。
本实施例中具体地,根据步骤203中分配的优先级,本步骤中查找到的符合条件的任务是SWP任务。当前切换到SWP任务运行前还包括:底层OS将SWP任务的当前状态更改为运行状态,并恢复SWP任务的运行时环境。
步骤205:SWP任务判断是否有SWP激活信号,是则执行步骤207,否则执行步骤206;
具体地,判断SWP任务对应的IO接口是否有满足条件的电流或电压信号,是则表示有SWP激活信号,否则没有激活信号执行步骤206即SWP任务处于等待激活状态。
步骤206: SWP任务等待SWP激活信号;
具体地,本步骤还包括:底层OS将SWP任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境。
具体地,当接收到SWP激活信号时还包括:底层OS将SWP任务的当前状态由等待状态更改为就绪状态,当处于就绪状态且优先级最高的任务是SWP任务时,底层OS将SWP任务的当前状态更改为运行状态,恢复该任务的运行时环境执行步骤207。
步骤207:SWP任务检测到激活信号后向上层发送符合SWP协议的激活数据帧;
具体地,向上层发送ACT_SYC_FRAME。
步骤208:SWP任务等待接收上层下发数据;
本实施例中具体地,当执行当前任务过程中需要等待某些事件时,将当前任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境具体为将CPU寄存器中的执行环境保持到当前任务对应的堆栈寄存器中。
具体地,当接收到数据时还包括:底层OS将SWP任务的当前状态由等待状态更改为就绪状态,当处于就绪状态且优先级最高的任务是SWP任务时,底层OS将SWP任务的当前状态更改为运行状态,恢复该任务的运行时环境执行步骤209。
步骤209:SWP任务判断接收到的数据是否含有APDU数据,是则执行步骤211,否则执行步骤210;
步骤210:执行底层协议处理并向上层返回相应响应,返回步骤208;
所述执行底层协议处理具体为:执行对SWP和HCI底层协议指令的响应,组包,拆包,错误处理,发送申请延时等。
步骤211:提取APDU数据放入卡片存储器预定的APDU队列中,通知APDUProecess任务处理APDU数据;
步骤212:SWP任务等待APDU数据处理结果;
具体地,本步骤还包括底层OS将SWP任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境;
当接收到APDU数据处理结果时,底层OS将SWP任务的当前状态由等待状态更改为就绪状态,当处于就绪状态且优先级最高的任务是SWP任务时,底层OS将SWP任务的当前状态更改为运行状态,恢复该任务的运行时环境执行步骤213。
步骤213:SWP任务向上层发送接收到的APDU数据处理结果,然后返回步骤208。
本实施例中,上述步骤208至步骤213可以具体为如下内容,如图6所示:
步骤3-1:SWP任务等待接收上层下发数据;
步骤3-2:SWP任务判断接收到的数据是否是SHDLC数据帧格式,是则执行步骤3-4,否则执行步骤3-3;
步骤3-3:SWP任务执行SWP层协议处理返回相应响应数据给上层;
步骤3-4:SWP任务判断所述数据是否是I帧,是则执行步骤3-5,否则执行步骤3-3;
步骤3-5:SWP任务判断I帧是否携带HCI数据包,是则执行步骤3-6,否则执行步骤3-3;
步骤3-6:SWP任务判断携带的HCI数据包是否完整,是则执行步骤3-7,否则执行步骤3-1;
步骤3-7:SWP任务判断是否包含evt_send_data事件指令,是则执行步骤3-9,否则执行步骤3-8;
步骤3-8:SWP任务执行HCI层协议处理返回第一响应数据给上层,然后返回步骤3-1;
步骤3-9:SWP任务提取evt_send_data事件指令所包含的APDU数据;
步骤3-10:SWP任务将提取到的APDU数据加入队列,等待接收处理结果;
步骤3-11:SWP任务把接收到的处理结果打包成包含 evt_send_data事件指令的HCI数据包;
步骤3-12:SWP任务将HCI数据包打包成符合SHDLC数据帧类型的第二响应数据;
步骤3-13:SWP任务将第二响应数据返回给上层,返回执行步骤3-1。
本实施例中具体地,当切换到APDUProcess任务运行前还包括:底层OS将APDUProcess任务的当前状态更改为运行状态,恢复该任务的运行时环境,然后执行步骤214。
步骤214:任务初始化;
具体地,包括分配并初始化卡片存储器的APDU队列,分配并初始化处理结果存储区。
步骤215:APDUProcess任务等待APDU队列有数据存入;
具体地,本步骤还包括底层OS将APDUProcess任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境。
当APDU队列有数据时,底层OS将APDUProcess任务的当前状态由等待状态更改为就绪状态,当处于就绪状态且优先级最高的任务是APDUProcess任务时,底层OS将APDUProcess任务的当前状态更改为运行状态,恢复该任务的运行时环境执行步骤216。
步骤216:APDUProcess任务按先进先出顺序从APDU队列中提取出存入的APDU数据;
步骤217:处理提取出的APDU数据;
具体为:根据APDU 数据结构中的CLS,INS,P1,P2及携带的数据执行相应的处理,并将处理结果存储到处理结果存储区。
步骤218:APDUProcess任务把处理结果发送给APDU数据对应的任务,返回执行步骤215。
本实施例中具体地,当切换到ISO任务运行前还包括:底层OS将ISO任务的当前状态更改为运行状态,恢复该任务的运行时环境,然后执行步骤219。
步骤219:ISO任务判断是否有ISO激活信号,是则执行步骤221,否则执行步骤220;
具体地,判断ISO任务对应的IO接口是否有满足条件的电流或电压信号,是则表示有ISO激活信号,否则没有激活信号执行步骤220即ISO任务处于等待激活状态。
步骤220:ISO任务等待ISO激活信号;
具体地,在等待ISO激活信号时还包括:底层OS将ISO任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境。
具体地,当接收到ISO激活信号时还包括:底层OS将ISO任务的当前状态由等待状态更改为就绪状态;当处于就绪状态且优先级最高的任务是ISO任务时,底层OS将ISO任务的当前状态更改为运行状态,恢复该任务的运行时环境执行步骤221。
步骤221:ISO任务检测到激活信号后向上层发送符合ISO协议的激活数据帧。
具体地,向上层发送一个ATR。
步骤222:ISO任务等待接收上层下发数据;
具体地,ISO任务在等待接收上层下发数据时还包括:底层OS将ISO任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境;
本实施例中具体地,当执行当前任务过程中需要等待某些事件时,将当前任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境具体为将CPU寄存器中的执行环境保持到当前任务对应的堆栈和全局变量中。
具体地,当接收到数据时还包括:底层OS将ISO任务的当前状态由等待状态更改为就绪状态;当处于就绪状态且优先级最高的任务是ISO任务时,底层OS将ISO任务的当前状态更改为运行状态,恢复该任务的运行时环境执行步骤223。
步骤223:ISO任务判断接收到的数据是否含有APDU数据,是则执行步骤225,否则执行步骤224;
步骤224:执行底层协议处理并向上层返回相应响应数据,返回步骤222;
所述执行底层协议处理包括:PPS处理,T0 过程字节处理,T1的块处理等。
步骤225:提取APDU数据放入卡片存储器预定的APDU队列中,通知APDUProecess任务处理APDU数据;
步骤226:ISO任务等待APDU数据处理结果;
具体地,本步骤还包括底层OS将ISO任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境;
当接收到APDU数据处理结果时,底层OS将ISO任务的当前状态由等待状态更改为就绪状态,当处于就绪状态且优先级最高的任务是ISO任务时,底层OS将ISO任务的当前状态更改为运行状态,恢复该任务的运行时环境执行步骤227。
步骤227:ISO任务向上层发送接收到的APDU数据处理结果组成的响应数据,然后返回步骤222。
本实施例中,上述步骤222至步骤227可以具体为如下内容,如图7所示:
步骤4-1:ISO任务等待接收上层下发数据;
步骤4-2:ISO任务判断接收到的数据是否是PPS数据,是则执行步骤4-3,否则执行步骤4-4;
步骤4-3:ISO任务执行PPS处理返回PPS响应数据给上层,然后返回执行步骤4-1;
步骤4-4:ISO任务判断接收到的APDU数据是否完整,是则执行步骤4-6,否则执行步骤4-5;
步骤4-5:ISO任务等待接收APDU数据,然后返回步骤4-4;
步骤4-6:ISO任务对接收到的APDU数据执行APDU命令处理;
步骤4-7:ISO任务将处理结果返回给上层,然后返回步骤4-5。
进一步的本实施例中,上述步骤222至步骤227还可以具体为如下内容,如图8所示:
步骤4-1':ISO任务等待接收上层下发数据;
步骤4-2':ISO任务判断接收到的数据是否是PPS数据,是则执行步骤4-3',否则执行步骤4-5';
步骤4-3':ISO任务执行PPS处理返回PPS响应数据给上层,然后返回执行步骤4-1';
步骤4-4':ISO任务等待接收数据,然后进入步骤4-5';
步骤4-5':ISO任务判断接收到的数据是否是I-block数据帧类型,是则执行步骤4-7',否则执行步骤4-6';
步骤4-6':ISO任务执行T1层协议处理返回第四响应数据给上层,然后返回步骤4-1';
步骤4-7':ISO任务从接收到的I-block数据帧中提取出APDU数据;
步骤4-8':ISO任务判断接收到的I-block数据帧是否是最后一个分组,是则执行步骤4-9',否则返回执行步骤4-4';
步骤4-9':ISO任务将提取到的APDU数据加入APDU队列,等待接收处理结果;
步骤4-10':ISO任务将接收到的处理结果打包成I-block数据帧类型的第三响应数据;
步骤4-11':ISO任务将第三响应数据返回给送上层,然后返回执行步骤4-4'。
本发明提出的一种实现智能卡多任务处理的方法中,如果高优先级任务正在执行,这时处于等待状态的低优先级任务的等待条件满足了,低优先级任务并不能转入运行状态,而是转入就绪状态,因为低优先级任务不能抢占高优先级任务。例如在SWP任务执行过程中,智能卡操作系统通过IO接口检测到ISO激活信号,智能卡操作系统执行中断处理:向IOS任务发送收到激活信号的通知,将ISO任务的当前状态更改为就绪状态,将SWP任务的当前状态更改为就绪状态;查找当前状态为就绪状态的高优先级的任务,切换到SWP任务继续执行,将SWP任务的当前状态更改为运行状态,直到SWP任务进入等待状态,才切换到ISO任务执行。
如果低优先级任务执行过程中,当高优先级任务的等待条件满足时,低优先级任务将被高优先级任务抢占,低优先级任务的当前状态将转为就绪状态,高优先级任务的当前状态转为运行状态。例如在APDU任务执行过程中,智能卡操作系统监测到SWP激活信号,智能卡操作系统执行中断处理:向SWP任务发送收到激活信号的通知,将SWP任务的当前状态更改为就绪状态,将APDU的当前状态更改为就绪状态;智能卡操作系统查找当前状态为就绪状态的高优先级的任务,切换到SWP任务执行,将SWP的当前状态更改为运行状态,直到SWP任务进入等待状态,智能卡操作系统再次查找当前状态为就绪状态的高优先级的任务时才可能切换到APDU任务执行。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (6)
1.一种实现智能卡多任务处理的方法,其特征是:包括
步骤S1:智能卡上电,进行卡片初始化;
步骤S2:智能卡的底层操作系统对多任务环境进行初始化;
步骤S3:智能卡的底层操作系统创建多个任务,并根据时序为创建的多个任务分配优先级;且当高优先级任务从等待状态转为就绪状态时,会抢占正在运行的低优先级任务而转为运行状态,被抢占的低优先级任务则由运行状态变成就绪状态;
步骤S4:智能卡的底层操作系统查找优先级最高且当前状态为就绪状态的任务并切换到该任务运行;
当切换到SWP任务运行时,执行步骤S5-S13;
当切换到ISO任务运行时,执行步骤S14-S20;
步骤S5:所述SWP任务判断是否有激活信号,是则执行下一步,否则等待激活信号;在所述等待激活信号时还包括:底层操作系统将SWP任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境;当收到激活信号时还包括:底层操作系统将SWP任务的当前状态由等待状态更改为就绪状态,当处于就绪状态且优先级最高的任务是SWP任务时,底层操作系统将SWP任务的当前状态更改为运行状态,恢复该任务的运行时环境,然后执行步骤S6;
步骤S6:所述SWP任务检测到激活信号后向上层发送SWP激活数据帧;
步骤S7:所述SWP任务等待接收上层下发数据;
所述SWP任务在等待接收上层下发数据时还包括:底层操作系统将SWP任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境;
当所述SWP任务接收到数据时还包括:底层操作系统将SWP任务的当前状态由等待状态更改为就绪状态,当处于就绪状态且优先级最高的任务是SWP任务时,底层操作系统将SWP任务的当前状态更改为运行状态,恢复该任务的运行时环境,然后执行步骤S8;
步骤S8:所述SWP任务判断接收到的数据是否符合预设数据帧格式,是则执行步骤S9,否则执行SWP层协议处理返回相应响应数据给上层,然后返回步骤S7;
所述SWP任务判断接收到的数据是否符合预设数据帧格式具体包括:
A:所述SWP任务判断接收到的数据是否是SHDLC数据帧类型,是则执行B,否则不符合预设数据帧格式;
B:判断所述数据是否是I帧,是则符合预设数据帧格式,否则不符合预设数据帧格式;
步骤S9:所述SWP任务判断接收到的数据是否包含HCI数据包,是则执行步骤S10,否则执行SWP层协议处理返回相应响应数据给上层,然后返回步骤S7;
所述SWP任务判断接收到的数据是否包含HCI数据包,是则还包括,所述SWP任务判断所述HCI数据包是否完整,是则执行步骤S10,否则返回步骤S7;
步骤S10:所述SWP任务判断所述HCI数据包中是否包含预设事件指令,是则执行步骤S11,否则执行HCI协议层处理返回第一响应数据给上层,然后返回步骤S7;
步骤S11:所述SWP任务提取所述预设事件指令中包含的APDU数据,并执行APDU命令处理得到处理结果;
步骤S12:所述SWP任务把所述处理结果打包成HCI数据包,再把所述HCI数据包打包成符合预设数据帧格式的第二响应数据;
步骤S13:所述SWP任务将所述第二响应数据返回给上层,返回步骤S7;
步骤S14:所述ISO任务判断是否有激活信号,是则执行下一步,否则等待激活信号;在等待激活信号时还包括:底层操作系统将ISO任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境;当接收到激活信号时还包括:底层操作系统将ISO任务的当前状态由等待状态更改为就绪状态;当处于就绪状态且优先级最高的任务是ISO任务时,底层操作系统将ISO任务的当前状态更改为运行状态,恢复该任务的运行时环境,然后执行步骤S15;
步骤S15:所述ISO任务检测到激活信号后向上层发送ISO激活数据帧;
步骤S16:所述ISO任务等待接收上层下发数据;
所述ISO任务在等待接收上层下发数据时还包括:底层操作系统将ISO任务的当前状态由运行状态更改为等待状态,保存当前任务的执行环境;
当所述ISO任务接收到数据时还包括:底层操作系统将ISO任务的当前状态由等待状态更改为就绪状态;当处于就绪状态且优先级最高的任务是ISO任务时,底层操作系统将ISO任务的当前状态更改为运行状态,恢复该任务的运行时环境,然后执行步骤S17;
步骤S17:所述ISO任务判断接收到的数据是否是PPS数据,是则执行PPS处理返回PPS响应数据给上层,否则执行步骤S18;
步骤S18:所述ISO任务等待接收APDU数据;
步骤S19:所述ISO任务对接收到的所述APDU数据执行APDU命令处理得到处理结果;
步骤S20:所述ISO任务将所述处理结果返回给上层,返回步骤S18。
2.如权利要求1所述的一种实现智能卡多任务处理的方法,其特征是:
当切换到SWP任务运行时,执行步骤S5'-S13';
当切换到ISO任务运行时,执行步骤S14'-S20';
当切换到APDUProcess任务时候,执行步骤S21'-S25';
步骤S5':所述SWP任务判断是否有激活信号,是则执行下一步,否则等待激活信号;
步骤S6':所述SWP任务检测到激活信号后向上层发送SWP激活数据帧;
步骤S7':所述SWP任务等待接收上层下发数据;
步骤S8':所述SWP任务判断接收到的数据是否符合预设数据帧格式,是则执行步骤S9',否则执行SWP层协议处理返回相应响应数据给上层,然后返回步骤S7';
步骤S9':所述SWP任务判断接收到的数据是否包含HCI数据包,是则执行步骤S10',否则执行SWP层协议处理返回相应响应数据给上层,然后返回步骤S7';
步骤S10':所述SWP任务判断所述HCI数据包中是否包含预设事件指令,是则执行步骤S11',否则执行HCI协议层处理返回第一响应数据给上层,然后返回步骤S7';
步骤S11':所述SWP任务提取所述预设指令中包含的APDU命令,并将所述APDU命令加入APDU队列,等待接收处理结果;
步骤S12':所述SWP任务把接收到的所述处理结果打包成HCI数据包,再把所述HCI数据包打包成符合预设数据帧格式的第二响应数据;
步骤S13':所述SWP任务将所述第二响应数据返回给上层,返回步骤S7';
步骤S14':所述ISO任务判断是否有激活信号,是则执行下一步,否则等待激活信号;
步骤S15':所述ISO任务检测到激活信号后向上层发送ISO激活数据帧;
步骤S16':所述ISO任务等待接收上层下发数据;
步骤S17':所述ISO任务判断接收到的数据是否是PPS数据,是则执行PPS处理返回PPS响应数据给上层,否则执行步骤S18';
步骤S18':所述ISO任务等待接收APDU数据;
步骤S19':所述ISO任务将接收到的所述APDU数据加入APDU队列,等待接收处理结果;
步骤S20':所述ISO任务将接收到的所述处理结果返回给上层,返回步骤S18';
步骤S21':所述APDUProcess任务进行任务初始化;
步骤S22':所述APDUProcess任务等待APDU队列有数据存入;
步骤S23':所述APDUProcess任务按先进先出的顺序从所述APDU队列中提取出数据;
步骤S24':所述APDUProcess任务对提取出的所述数据执行APDU命令处理;
步骤S25':所述APDUProcess任务将处理结果发送给与所述数据对应的任务,然后返回步骤S22'。
3.如权利要求1或2所述的一种实现智能卡多任务处理的方法,其特征是:所述判断是否有激活信号具体为,检查IO接口是否有满足条件的电流或电压信号,是则表示有激活信号,否则表示没有激活信号。
4.如权利要求1或2所述的一种实现智能卡多任务处理的方法,其特征是:所述ISO任务等待接收APDU数据之后还包括,所述ISO任务判断接收到的所述APDU数据是否完整,是则执行下一步,否则返回等待接收APDU数据。
5.如权利要求1所述的一种实现智能卡多任务处理的方法,其特征是:所述ISO任务等待接收APDU数据之后执行以下步骤:
步骤A1:所述ISO任务判断接收到的数据是否是I-block数据帧类型,是则执行下一步,否则执行T1层协议处理返回第四响应数据给上层,然后返回等待接收上层下发数据;
步骤A2:所述ISO任务从接收到的I-block数据帧中提取出APDU数据;
步骤A3:所述ISO任务判断接收到的所述I-block数据帧是否是最后一个分组,是则执行下一步,否则返回等待接收APDU数据;
步骤A4:所述ISO任务对提取到的APDU数据执行APDU命令处理得到处理结果;
步骤A5:所述ISO任务把所述处理结果打包成I-block数据帧类型的第三响应数据;
步骤A6:所述ISO任务将所述第三响应数据返回给上层,然后返回等待接收APDU数据。
6.如权利要求2所述的一种实现智能卡多任务处理的方法,其特征是:所述ISO任务等待接收APDU数据之后执行以下步骤:
步骤B1:所述ISO任务判断接收到的数据是否是I-block数据帧类型,是则执行下一步,否则执行T1层协议处理返回第四响应数据给上层,然后返回等待接收上层下发数据;
步骤B2:所述ISO任务从接收到的I-block数据帧中提取出APDU数据;
步骤B3:所述ISO任务判断接收到的所述I-block数据帧是否是最后一个分组,是则执行下一步,否则返回等待接收APDU数据;
步骤B4:所述ISO任务将提取到的APDU数据加入APDU队列,等待接收处理结果;
步骤B5:所述ISO任务把接收到的所述处理结果打包成I-block数据帧类型的第三响应数据;
步骤B6:所述ISO任务将所述第三响应数据返回给上层,然后返回等待接收APDU数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210461469.6A CN102929708B (zh) | 2012-11-16 | 2012-11-16 | 一种实现智能卡多任务处理的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210461469.6A CN102929708B (zh) | 2012-11-16 | 2012-11-16 | 一种实现智能卡多任务处理的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102929708A CN102929708A (zh) | 2013-02-13 |
CN102929708B true CN102929708B (zh) | 2015-09-23 |
Family
ID=47644516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210461469.6A Active CN102929708B (zh) | 2012-11-16 | 2012-11-16 | 一种实现智能卡多任务处理的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102929708B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106355124A (zh) * | 2016-08-31 | 2017-01-25 | 新智数字科技有限公司 | 一种cpu卡的读写方法及装置 |
CN108259427A (zh) * | 2016-12-29 | 2018-07-06 | 国民技术股份有限公司 | 一种多功能智能卡及其数据处理方法、通信系统 |
CN108923934B (zh) * | 2018-08-01 | 2021-04-06 | 飞天诚信科技股份有限公司 | 一种管理卡片生命周期的实现方法及装置 |
CN113283898A (zh) * | 2021-05-27 | 2021-08-20 | 武汉天喻信息产业股份有限公司 | 一种基于多操作系统的智能卡调度方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1987795A (zh) * | 2006-11-30 | 2007-06-27 | 北京飞天诚信科技有限公司 | 一种实现复合卡操作系统多任务同时工作的方法及装置 |
CN101051280A (zh) * | 2006-04-03 | 2007-10-10 | 北京握奇数据系统有限公司 | 智能卡嵌入式操作系统及其控制方法 |
CN101730295A (zh) * | 2008-11-03 | 2010-06-09 | 国民技术股份有限公司 | 射频sim卡接口应用冲突的协调处理方法 |
-
2012
- 2012-11-16 CN CN201210461469.6A patent/CN102929708B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101051280A (zh) * | 2006-04-03 | 2007-10-10 | 北京握奇数据系统有限公司 | 智能卡嵌入式操作系统及其控制方法 |
CN1987795A (zh) * | 2006-11-30 | 2007-06-27 | 北京飞天诚信科技有限公司 | 一种实现复合卡操作系统多任务同时工作的方法及装置 |
CN101730295A (zh) * | 2008-11-03 | 2010-06-09 | 国民技术股份有限公司 | 射频sim卡接口应用冲突的协调处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102929708A (zh) | 2013-02-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102929708B (zh) | 一种实现智能卡多任务处理的方法 | |
CN106790599B (zh) | 一种基于多核无锁环形缓冲区的共生虚拟机通信方法 | |
US9183032B2 (en) | Method and system for migration of multi-tier virtual application across different clouds hypervisor platforms | |
CN103685399B (zh) | 一种登录类Unix虚拟容器的方法、装置和系统 | |
CN105531685A (zh) | 通用pci express端口 | |
WO2016115831A1 (zh) | 一种虚拟机容错的方法、装置及系统 | |
CN102724035B (zh) | 一种加密卡的加解密方法 | |
KR20060045877A (ko) | 정보처리 시스템의 피시아이 익스프레스 고급 스위칭시스템 및 방법 | |
US20140019572A1 (en) | Remote Direct Memory Access Socket Aggregation | |
US9507617B1 (en) | Inter-virtual machine communication using pseudo devices | |
US9459937B2 (en) | Method for using shared device in apparatus capable of operating two operating systems | |
CN104424033B (zh) | 一种电子设备及数据处理方法 | |
CN104126179A (zh) | 用于多核处理器中的核心间通信的方法、装置和计算机程序产品 | |
CN105677480B (zh) | 一种数据处理方法及装置 | |
CN103150190B (zh) | Linux系统下用户态网卡自动探测及驱动加载的方法 | |
CN108228309B (zh) | 基于虚拟机的数据包发送和接收方法及装置 | |
CN104778143B (zh) | 主动与苹果设备连接并进行通信的方法和苹果设备附件 | |
CN104850516B (zh) | 一种ddr变频设计方法和装置 | |
CN112559476A (zh) | 一种用于提高目标系统性能的日志存储方法及其相关设备 | |
CN103731364A (zh) | 基于x86平台实现万兆大流量快速收包的方法 | |
CN102752104A (zh) | 一种基于智能卡cos的对称密码服务实现方法 | |
CN102521082A (zh) | 一种星载实时操作系统中的检查点恢复容错方法及系统 | |
CN106156311B (zh) | 一种对动态内容进行标注和显示的方法及系统 | |
CN108415779A (zh) | 用于通过主机结构接口的队列管理的技术 | |
CN205263799U (zh) | 一种PCIe链路乱序响应包的处理电路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |