引言
智能卡(Smart Card)是封装着集成电路的具备传输存储以及数据处理能力的塑料卡片,因其良好的处理能力和较好的保密性能,成为IC卡发展的主要方向。COS(Chip Operation System)是伴随着CPU卡的出现而产生的,并且根据CPU的差异而有所不同。COS是一种专用的系统,一般来讲一个 COS 只能用于一种特定的智能卡[24]。目前COS有两种存在方式:一种是把已经经过验证的COS直接通过掩膜方式,在生产过程中固化到智能卡芯片的只读存储器(Read only memory, ROM)中;另一种是芯片生产结束后,通过ROM中的Bootloader程序将COS下载到智能卡中的非易失存储器(Flash, EEPROM等)中[5]。相比于固化在ROM中COS不会被恶意修改的优势,采用Bootloader下载的方式使COS具有更大的灵活性,更能让COS适应瞬息万变的市场,而不用被修改掩膜的长时间周期所拖累[ 5 7]。因而,大部分研究者都是通过ROM中的Bootloader程序将COS下载到智能卡中的非易失存储器中。
郭鸿志、李代平等在《智能卡芯片操作系统的研究与实现》一文中提出了EVDO 卡 COS 的开发[1],李春丰、马海峰等在《RF_SIM卡的多应用COS研究与设计》中开发了SIM卡的COS[2],潘宇、邓赟等研究了基于智能卡COS平台的应用开发技术[3],胡云肖、杨波等提出了面向PBOC2.0的智能卡操作系统的设计[4],周成冲、林平分等研究了智能卡操作系统高速下载设计[5],
孙建、林平分等研究了双界面智能卡操作系统的设计与测试[6],杨柳、于忠臣等侧重于智能卡COS测试方案的研究[7],严婷婷、张志鸿等研究了智能卡操作系统自动化测试方法[8]。上述研究者有的侧重于智能卡COS开发的研究与实现[14],有的偏向于研究智能卡COS测试方案的研究与实现[68],但研究智能卡COS下载速度的却很少。
本文主要研究智能卡COS下载速度的提高,以北京市嵌入式系统重点实验室自主研发的非接触式智能卡BES2416版本9和版本10为基础。BES2416已经成功流片,芯片如图1所示,此智能卡已经被北京握奇数据有限公司和深圳明华科技应用,实际应用表明,实验室智能卡满足客户的需求和实际情况。智能卡COS下载速度的提高可以缩短开发周期和相应的测试周期。

图1 非接触式智能卡BES2416芯片
1 COS下载的研究和实现
本文研究的智能卡COS的下载机制为非接触式下载,与智能卡通信的读卡器有北京市嵌入式系统重点实验室自主研发和深圳明华科技公司的两种类型,读卡器和智能卡是通过射频13.56 MHz非接触式通信,其中非接触式接口服从ISO14443协议,下面主要介绍COS的下载机制。
1.1 读卡器和智能卡
智能卡COS的下载是读卡器与智能卡通过非接触式进行指令交互的形式来完成的,图2所示为封装好的智能卡和实验室自主研发设计的读卡器。

图2 智能卡和读卡器
当读卡器和智能卡进行通信时,智能卡ROM中的Bootloader完成相应初始化,准备接收下载指令,读卡器通过上位机程序连接智能卡,然后发送COS下载指令,智能卡接收到指令后解析指令,将编译后的COS二进制文件下载到智能卡的eFlash中。
1.2 指令的发送
指令的发送是通过上位机软件控制读卡器发送相应的指令,上位机程序发送智能卡Bootloader里预存的指令,读卡器通过发送连接指令、认证指令和下载COS指令等,将下载的COS拆分成各个数据包之后再进行APDU指令分装,然后通过读卡器将指令发送给智能卡。图3所示为上位机操作界面,读卡器发送指令通过相应的按钮完成或直接通过SendAPDU发送指令。

图3 上位机操作界面
1.3 指令的解析
智能卡接收到读卡器发送的指令后,对每条指令进行解析,根据不同的结果做出相应的处理,当收到下载COS的指令时对其指令进行解析,取出数据,并将数据写到相应存储器的对应区域中,完成之后回复相应的指令,下载COS的操作完成。
1.4 执行COS程序
完成COS的下载之后,智能卡重新上电时,Bootloader判断是否已经下载COS的标志位,如果已经下载完则直接执行COS程序。下面的程序是智能卡里Bootloader代码下载和执行COS的指令。
if(FLAGCHECK == 1){
switch(receive_byte()){
case 0x20: freq_change();break;
case 0x66: auth_process();break;
case 0x84: gen_rand_num(); break;
default: send_byte(0x5B); break;
}
}
else{
switch(receive_byte()){
case 0x04: jump_to_cos();break;
case 0x06: WrFlsh_128bytesdata();break;
case 0x24: read_sfr();break;
case 0x28: EflashChipErase();break;
default: send_byte(0x5A); break;
}
}
2 COS下载速度提高的研究和实现
提高COS下载速度,首先要研究影响读卡器下载COS到智能卡里的下载速度的因素有哪些。本文主要研究两点:数据传输速度和COS写入eFlash的速度。
2.1 数据传输速度的分析
读卡器产生耦合到智能卡的RF电磁场,用以传送能量和双向通信,智能卡获得能量后将其转换成直流电压。RF场的载波频率为13.56 MHz,磁场强度在1.5~7.5 A/m,在此范围内智能卡能不间断地工作,所以在指定的工作空间内,读卡器产生的磁场强度至少为1.5 A/m,且不超过7.5 A/m。ISO14443协议规定两种接口信号:Type A和Type B。本文中支持A类协议,数据传输率为13.56 M/128=106 kb/s,一位数据所占的时间周期为9.4 μs,调制方式为ASK100%调幅制。读卡器和智能卡之间的非接触式接口遵从ISO14443协议,影响数据传送的因素主要有两个,即读卡器提供的时钟信号CLK,以及读卡器与智能卡通过天线耦合的场强大小。
本研究中读卡器是实验室自主研发设计的,首先可以按要求调整CLK信号线上的频率,所以将读卡器所提供的CLK信号线上的频率提高到市场上已有读卡器可提供频率的2倍,进而将数据传输的速度提高到原来的8倍,这是提高下载速度的重要方法。其次是读卡器和智能卡的天线耦合设计,读卡器模块的外围天线匹配电路的设计如图4所示。

图4 外围天线匹配电路
外围天线电路匹配电阻的最终定值为R4=2 kΩ,R5=2.7 kΩ,R6=2.7 kΩ;电容值的大小设定为C6=150 pF,C7=270 pF,C8=150 pF。实际测量显示,读卡器可以提供给智能卡的磁场强度大小为5.5~6 A/m。在协议规定的范围内,磁场强度较强,大于一般读卡器提供的磁场强度,读卡器和智能卡的通信速度提高,下载速度提高1~2倍,这是提高下载速度的另一个措施。
2.2 数据写入eFlash的速度
智能卡的COS最终下载到卡中eFlash相应的区域,即写入eFlash中。eFlash的工作原理决定了它的工作方式,如果要对其中的区域进行写操作,需要先做擦除处理,擦除使它所有的数据位都变成1,之后再进行写操作,写操作其实就是将某些位编程为0,已经变为0的数据位无法再写成1,除非重新擦除。eFlash的擦除又分为两种方式:片擦除和页擦除。片擦除指的是将整个eFlash全部擦除一遍,页擦除指的是eFlash将擦除某些指定的页。eFlash的页的单位都不是1个Byte,这就要求我们把需要修改的内容暂存在一个buffer里,修改之后再对原始页进行擦除,最后把暂存的内容写回到原始页,如图5所示。

图5 eFlash页擦除操作
本文针对具体研究情况,首先,对COS进行下载操作时无需保留智能卡eFlash中原始信息,故可以将里面的内容全部擦除,之后再把COS全部按字节写进去,因为整个eFlash已经被完整擦除,所以COS下载时不会出现需要修改某个地方的操作,只需要按顺序将COS写到某块区域中,从而节约一定的时间。其次,更改智能卡下载过程中的写eFlash的方式,以前的方式为直接调用写eFlash的驱动,现在改为直接配置相应的特殊功能寄存器进行写操作,以减少程序调用的开销和程序执行的时间。可通过减少数据写入eFlash的时间来提高COS的下载速度。
3 结果与分析
读卡器和智能卡之间的通信是按照ISO14443协议标准制订的,通过RF无线非接触式通信。为了进一步了解Pause期间时钟和解调数据波形的具体变化,又做了进一步的细化测试,读卡器和智能卡的天线、解调数据和时钟的波形测试结果略——编者注。
本研究实际测试结果表明,读卡器和智能卡之间正常通信时,读卡器上位机程序界面选择非接触式模式,再点击Request按钮发送相应的请求指令,此时读卡器和智能卡已经为之后的通信做好了准备,之后读卡器就可以发送对应的指令与智能卡进行通信。智能卡接收指令之后做出相应的操作,智能卡操作系统下载相应的指令,当读卡器发送下载指令时,对应的COS被下载到智能卡中。实际测试结果是大小为28 KB的智能卡COS下载时间为19.175 9 s。测试结果如图6所示。

图6 COS下载时间
通过研究,COS的下载速度得到了明显提高,由以前的平均60 s的下载时间降低到现在的平均19 s,工作效率自然得到了提升。本文研究的数据传输速度和COS写入eFlash的速度提高对智能卡前期开发人员和测试人员有很大的帮助,对智能卡封装之后的COS下载和测试人员的工作效率也有明显的帮助。
结语
本文通过对智能卡下载机制的研究,进行改进设计提高智能卡COS的下载速度,以此来提高开发、测试效率和缩短发卡时间。测试结果表明,此种研究方法有助于提高智能卡COS的下载速度。