原创 IC卡COS系统I/0模块通讯协议实现原理

2008-10-20 13:38 3340 10 10 分类: 软件与OS
数据I/O流程也就是IC卡数据通信协议的实现,下面以IC卡中最常用的接触方式ISO7816-3 T="0方式为例"。

    I/O的工作流程可以分为数据输入和数据输出两部分。根据I/O模块的层次,数据输入分为字符帧的输入和命令报文的输入;数据输出分为命令响应报文的输出、ATR的输出和字符帧的输出。

  1、命令报文的输入流程

    命令报文分为命令头和命令数据域两个部分,CLA、INS、P1、P2和P3是所有命令共有的部分,根据命令的不同类型,P3可能对应Lc,也可能对应Le。如果P3对应的是Lc的话,命令报文中还含有数据域。

  2、字符帧的输入流程

    命令报文的输入最终由命令报文各个字节的输入组成。每一个字节的I/O表现为一个字符帧的输入,字符帧的输入是I/O模块数据输入的基本单位。

    数据的输入方式是单工串行输入,在默认的通信速率下,一个字符帧的接收需要12个etu来完成,每个etu时间段内完成一个字符位的接收。

    一个字符帧的接收包含了如下主要步骤:

    * 检测帧的起始位;
    * 接收8个数据位;
    * 接收奇偶校验位;
    * 检查奇偶校验位是否正确;
    * 接收结果返回。

    字符帧接收成功之后将顺序保存在命令缓冲区中组成一个完整的命令报文。

  3、命令响应报文的输出流程

    命令响应报文分为响应数据和响应状态码两个部分。根据命令执行情况的不同,命令数据可能不存在。

  4、ATR的输出流程

    ATR的输出可以分解为若干个ATR字节的输出。

  5、字符帧的输出流程

    字符帧的输出是I/O模块数据输出的基本单位。数据的输出方式是单工串行输出,在默认的通信速率下,一个字符帧的发送需要12个etu来完成,每个etu时间段内完成一个字符位的传送。

    一个字符帧的发送包含了如下主要步骤:

    * 帧的起始位发送;
    * 帧的数据位发送;
    * 帧的奇偶校验位计算;
    * 帧的奇偶校验位发送;
    * 等待中断接收结果返回;
    * 判断重发字符帧或者发送完毕。

    每一个字符帧发送之后IC卡都能够收到终端的响应,如果发送失败,将进行该字符帧的重发,连续重发的最大次数一般为3次,如果连续发送失败的话,本次数据的输出将中断。

文章评论0条评论)

登录后参与讨论
我要评论
0
10
关闭 站长推荐上一条 /2 下一条