智能卡COS芯片层模块设计与测试方案研究

2024-02-24 18:08

本文主要是介绍智能卡COS芯片层模块设计与测试方案研究,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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所示。



  以下是卡片接收指令相关的源代码:





  (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 结 语

  智能卡操作系统根本的部分就在于芯片底层各个模块的稳固性。芯片层开发是电信、税控等产品开发的重要组成部分之一,也是最基础的部分。为了保证电信、税控产品可以在不同芯片之间的平稳移植,需要对芯片层的开发提出一定的要求和标准,这样可以保证上层开发的一致性。

这篇关于智能卡COS芯片层模块设计与测试方案研究的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/742914

相关文章

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

MySQL中闪回功能的方案讨论及实现

《MySQL中闪回功能的方案讨论及实现》Oracle有一个闪回(flashback)功能,能够用户恢复误操作的数据,这篇文章主要来和大家讨论一下MySQL中支持闪回功能的方案,有需要的可以了解下... 目录1、 闪回的目标2、 无米无炊一3、 无米无炊二4、 演示5、小结oracle有一个闪回(flashb

Android App安装列表获取方法(实践方案)

《AndroidApp安装列表获取方法(实践方案)》文章介绍了Android11及以上版本获取应用列表的方案调整,包括权限配置、白名单配置和action配置三种方式,并提供了相应的Java和Kotl... 目录前言实现方案         方案概述一、 androidManifest 三种配置方式