智能卡COS芯片层模块设计与测试方案研究
文章出处:http://www.nexussmartsolutions.com 作者:张李静 张秋燕 人气: 发表时间:2011年09月28日
0 引 言
随着科学技术的不断进步,智能卡的应用已经越来越广泛,涉及到人类生活的各个领域,如商业、医疗、保险、交通、社会公共事业等多种领域,所以如何设计一个高效稳定的智能卡操作系统口具有较高的社会意义。这里针对智能卡的硬件结构设计了操作系统的通信和硬件其他模块,并提出了一种测试方案以检测芯片底层模块的稳定性。
1 智能卡操作系统概述
片内操作系统(Chip Operating System,COS)一般是紧紧围绕着它所服务的智能卡的特点而开发的。与常见的微机上的操作系统相比,COS在本质上更加接近于监控程序。在此以具体开发实例说明卡片操作系统的基本问题,并提出一种可行可测试的芯片层设计方案及一种芯片底层的测试方案。
2 COS芯片模块设计
COS底层模块在设计时一般都是紧密结合智能卡内存储器分区的情况,按照国际标准中所规定的一些功能进行设计、开发。
IS07816是接触式智能卡必须遵循的国际规范其中IS07816—3主要描述接触式智能卡的电信号和传输协议,其中包括各个触点的电压电流承受范围、卡复位应答各个信息位的实际表示和T=0,T=1的传输协议。ISO/IEC 7816—3规定了IC卡的电气特性和传输协议。包括该类卡和接口设备问的电源、电气信号协议和信息交换协议。通信过程中,由接口设备给IC卡提供电源 (Vcc),复位信号(RST)和时钟(CLK),卡和接口设备间通过I/O端口进行串行通信。
(1)通信模块设计。根据T=0异步半双工字符传输协议,Ic卡和接口设备之间以字符为单位(简称字符帧)进行传输,采用偶校验,每个字符由10 b组成。传输字符帧之前,I/O线处于状态z,第1 b为起始位(状态A);后面8 b为数据位D1~D8;第10 b为偶校验位,即8位数据和奇偶校验位中1的个数为偶数。
串行通信是按位传送的,每位信息宽度(持续时间)定义为基本时间单位ETU(Elementary Time Unit)。在复位应答期间的信息宽度称为“初始ETU”,它等于372个时钟周期,即1ETU=372/f。复位应答后的信息宽度称为“当前ETU”,其计算公式为:当前ETU=(F/D)(1/f)。其中:F是时钟频率变换因数;D是比特率调整因数;f是时钟频率。
IC卡必须与相应的读写设备(IFD)通信。从这个角度讲,智能IC卡操作系统的作用就是从读写设备(IFD)接收命令、执行命令并将结果返回读写设备 (IFD)。所以,通信管理功能模块在操作系统中具有十分重要的作用。通信管理功能模块主要实现以下几种功能:实现某一通信协议的数据链路层的传输管理功能;实现ISO/IEC 7816标准规定的ATR(复位响应)等功能;为操作系统中的其他功能模块提供相应接口。
按ISO/IEC 7816标准,IC卡和读写设备之间的通信协议有多种,一般一种卡片只支持某一种通信协议。下面以符合ISO/IEC 7816—3标准的T=0字符传输协议的智能IC卡为例介绍通信管理功能(支持其他通信协议的卡的通信管理功能与此相似)。
ICC上电之后,IFD将向ICC发送命令数据,在这样一次典型的通信过程中,通信管理功能主要从事6个步骤的具体工作。如图1所示。
图1:6个步骤的具体工作
以下是卡片接收指令相关的源代码:
(2)硬件模块设计。智能卡COS上电后首先要进行芯片初始化,其主要设置以下几个方面:芯片初始工作时的频率,以及使用外频还是内频;芯片串口初始工作的速率(一般为“ll”的波特率)-芯片串口的工作模式(包括T=0还是T=1协议,正向传输还是反向传输,奇校验还是偶校验等);存储器的初始映射方式。
智能卡芯片(以下以51系列智能卡芯片为例)一般包含几十到几百KB的FLASH,以1个页面为单位进行擦除,根据FLASH编程写的特点,也就是1能写成0,而0不能写成1,故在设计编程写函数时为了保证写数据的正确性,特采取如下的方式实现此功能:
第一步:取出要写入地址的数据(为A),与要写入的数据(为B)进行与操作(结果为C);
第二步:在要写入数据的地址写入数据(B);
第三步:取出写人数据后的地址的数据与数据C进行比较。
对于51系列智能卡芯片,由于标准的8051对程序存储器最大值支持64 KB,所以芯片采用BANK的编址方式。这时往往需要一个映射函数来实现不同BANK的跳转。如果一款智能卡芯片的程序存储器采用128 KB的FLASH用来存放COS和用户数据。128 KB的FLASH均分4个32 KB的BANK,在这4个区域里,Commom区是3个Bnak的公共区域,即Commom区和每个32 KB的BANK都可以组成64 KB的连续空间。3个Bnak之间不能直接互相访问,而必须调用Commom区里的程序才能实现相互的访问。所以在创建工程时要把经常使用的程序和常数,如中断入口函数、Bank Switch跳转表等都放到Commom区里,这样才能实现各个区域的相互访问。
(3)异常保护模块设计。IS07816—3规定2个连续字符上升沿之间的延迟至少是12 ETU,且2个连续字符上升沿之间的延迟应不超过9 600 ETU。所以COS在设计时要加入发送“60”来实现正常的通信。
发送“60”采用芯片定时器中断的方式,设置定时器的工作模式,使用时钟和的初始值。定时器的中断服务程序的实现流程:关闭发送“60”定时器;发送“60”;打开发送“60”定时器。
操作系统的异常处理,此函数为COS进行异常状态时调用的函数。进入异常状态时,要关闭发送“60”的定时器,然后进入死循环状态。
3 芯片测试方案设计
以下提出一种针对芯片模块函数的测试方案。即嵌入式Testing COS。
(1)Testing COS测试平台组成。T-COS平台由MAIN.C文件、API.C文件、常量配置、A51文件以及芯片库、LIB文件组成。其中,针对不同的芯片,main.c,api.C是相同的,而常量配置文件和芯片库文件则不同,在使用时需要更改或更换。
另外,MAIN.C文件中的CommandInterpreter()命令解释器函数是对发送命令的识别解释(在此函数中,为所有需要测试的函数定义了指令吗)。被测函数的函数体在API.C文件中。芯片库在API.C文件中被具体调用。
此Testing COS可直接写入智能卡中,设计思路是:采用直接APDU指令调用的形式,直接调用硬件模块函数,如擦一页函数。执行完指令,函数返回一个状态字。
主程序是一个死循环,如下:
命令解释器函数支持多个函数,为用户对硬件的直接操作提供接口,可以通过发送APDU指令实现对芯片的多种操作。
例如:APDU:80 00 10 00 00表示擦除地址0x1000所在页面。
APDU:80 0C 10 00 10表示从地址Oxl000开始读取长度为Oxl0的数据。
(2)Tesling COS测试平台的使用。T—COS测试 平台测试流程,如图2所示:
(3)Testing COS测试平台局限性分析。T—COS平台使用方便简洁,易于观察执行结果,但是其不能观察过程。因此,在返回结果与预期结果不一致,或者出现错误的情况下,无法判断产生错误的原因。在这种情况下,需要借助仿真器,跟踪执行过程,最终找出产生问题的原因。
4 结 语
智能卡操作系统根本的部分就在于芯片底层各个模块的稳固性。芯片层开发是电信、税控等产品开发的重要组成部分之一,也是最基础的部分。为了保证电信、税控产品可以在不同芯片之间的平稳移植,需要对芯片层的开发提出一定的要求和标准,这样可以保证上层开发的一致性。