8K智能卡DTT4C08及其应用程序设计
文章出处:http://www.nexussmartsolutions.com 作者: 人气: 发表时间:2011年09月17日
DTT4C08是具有低功耗、高性能、可反复擦写的FLASH程序存储器和8KEEPROM数据存储器的8位8K智能CPU卡芯片,采用自上而下(Top-Down)设计方法设计实现。
1 DTT4C08芯片简介
1.1 DTT4C08管脚定义(模块状态)
其管脚定义和布局如图1所示。
1.2 基本硬件结构
中央处理CPU、16K字节程序存储器FLASH、256字节数据存储顺SRAM、可电擦写的8K数据存储器EEPROM。DTT4C08芯片利用FLASH工艺技术,制作成编程速率快、擦写时间短、面积小的FLASH存储器,并具备了相应的控制、接口和防攻击电路,具有更安全、更开放、更灵活的特点;DTT4C08芯片CPU指令集与MCS-51完全兼容。
1.3 DTT4C08芯片其它说明
(1)8K字节的EEPROM数据存储器支持页操作和字节操作;
(2)256字节的内部SRAM单元,支持位寻址;
(3)带时钟频率检测器。当外部时钟停止时,置片上FLASH于stand by状态,EEPROM、SRAM停止工作,以减少功耗。
2 基于DTT4C08的智能卡应用开发方法
2.1 芯片操作系统软件设计方法
下面以电信智能卡操作系统(COS)开发流程为例简要说明基于DTT4C08软件的应用开发。应用外接设备执行操作,卡片上电后,首先进行参数初始化,向移动终端发送ATR,卡与移动终端ME进行传输协议商定,然后开始接收命令数据并进行数据分析,根据分析结果散转到相应命令子程序入口并执行命令,命令结束后卡发给移动终端响应。一条指令执行流程结束,卡重新开始接收数据,执行下一条指令。
电信智能卡COS主控程序流程图如图2所示。
2.2 芯片操作系统软件调试环境
芯片操作系统编码完成后可利用大唐微电子推荐的“集成调试环境+读写器模拟器”软件仿真系统进行软件仿真测试。该仿真系统涵盖了智能卡应用开发对仿真器的仿真需求,能够模拟条例ISO7816标准的I/O输入输出,超出了通常意义上的软件仿真。整个芯片操作系统经过仿真之后就可以下载程序列卡上,由真实的“卡”作为“调试载体”,使得开发过程与实际应用环境完全一致。
图3是通过一台微机实现DTT4C08芯片的仿真调试。
3 一种散转接口应用程序设计方法
卡(DTT4C08芯片)接收ME的命令数据要进行数据分析,根据分析结果散转到相应命令子程序入口并执行命令。命令数据即应用协议数据单元(APDU)的信息结构如图4所示。
其中CLA是命令类别,取值为“A0”,当CLA=FF时,为PTS过程的头标;INS为指令代码,用来区分别不同的命令。ME通过I/O双向数据线按图4顺序将命令数据串行发送给卡,卡将CLA、INS、P1、P2和P3分别暂存于R3、R4、R5、R6和R7,将数据体暂存于RAM的指定连续单元。最简单的命令散转判断程序如下:
CJNE R4,#0A4H,NEXT_INS01 ;通过INS判断具体命令
LJMP SELECT ;转向SELECT指令处理程序
NEXT_INS01:CJNE R4,#0F2H,NEXT_INS02
LJMP STATUS ;转向STATUS指令处理程序
NEXT_INS02:CJNE R4,#0B0H,NEXT_INS03
LJMP READ_DINARY ;转向READ_BINARY 指令处理程序
NEXT_INS03: ……
NEXT_INS34:CJNE R4,#14H,NEXT_INS22
LJMP TERMINAL_RESPONSE
;转向TERMINAL_RESPONSE指令处理程序
NEXT_INS35:出错处理
除标准GSM命令外,加上SIM卡发行、调试等附加命令的散转处理,卡至少需处理35条指令(210字节),占用了较多的程序空间。本文利用堆栈和子程序返回指令,通过查表判断散转入口的设计技巧,巧妙地获得指令处理入口地址,散转程序只需要131字节,大大节省了程序空间。需要处理的命令越多,节省的程序空间越多。
MOV R2,#(Command_INS_END-Command_INS)/3 命令个数
MOV DPTR,#Command_INS ;INS 命令表起始地址
Command_INS_LOOP:CLR A
MOVC A,@A+DPTR
XRL A,R4
JZ find_INS_in_table ;A=R4,找到相应命令
INC DPTR
INC DPTR
INC DPTR
;没找到,指向下一命令信息地址
DJNZ R2,Command_INS_LOOP
;查找下一个出错处理
find_INS_in_table:
MOV A,#02H
MOVC A,@A+DPTR
PUSH ACC
;相应命令处理程序入口低地址入栈
MOV A,#01H
MOVC A,@A+DPTR
PUSH ACC
;相应命令处理程序入口高地址入栈
RET ;借用RET指令将堆栈中的数据弹出给PC地址指针,转向相应命令处理程序入口
Command_INS:DB 0A4H
DW SELECT ;SELECT命令
DB 0F2H
DW STATUS ;STATUS命令
DB 0B0H
DW READ_BINARY
;READ_BINARY命令
……
DB 14H
DW TERMINAL_RESPONSE
;TERMINAL_RESPONSE命令
Command_INS_END: ;35个命令
4 结束语
采用DTT4C08芯片的智能卡可进行拓展功能的应用开发,在金融、医疗、保险、出入口控制、各种预付费场合有广泛的应用领域和推广价值。