嵌入式Linux下IC卡接口设计与驱动开发

欢迎进入IT技术社区论坛,与200万技术人员互动交流 >>进入

引 言

  随着现代工业社会逐步向信息社会的过渡,信息将扮演愈来愈重要的角色,成为现代经济生活中的成功要素。IC卡作为卡基应用系统中的一种卡型,是利用安装在卡中的集成电路(IC)来记录和传递信息的;具有存储量大、数据保密性好、抗干扰能力强、存储可靠、读写设备简单、操作速度快、脱机工作能力强等优点,其应用范围极为广泛。   我们基于公用电话IC卡的应用,开发了多媒体信息终端产品,在传统公用IC卡电话功能的基础上增加了上网、邮件、电子支付、信息浏览等各种多媒体功能,统一采用公用电话IC卡进行收费。目前设计的IC卡读写器和驱动软件已经应用于我们的多媒体终端产品中。

1 嵌入式Linux下设备驱动模块简介

  Linux系统将设备分成三种类型:字符设备、块设备和网络接口。三种类型设备定义如下:字符设备:字符设备是指能够像字节流(比如文件)一样被访问的设备,如字符终端(/dev/con s01e)和串口(/dev/ttys0)以及类似设备。字符设备对应文件系统中的节点,用户则通过此文件节点访问和控制设备。   块设备:块设备和字符设备一样可以通过文件系统节点来进行访问,Linux允许应用程序像字符设备那样读写块设备。   网络接口:任何网络设备都要经过一个网络接口,即一个能够和其它主机交换数据的设备。通常接口是个硬件设备,但也可能是个纯软件设备,比如回环(100pback)接口。Linux访问网络接口的方法是分配一个唯一的名字。   Module是Linux内核的一大创新,其正规的叫法应该是Loadable Kernel Module, 即可安装模块。可安装模块实现了Linux操作系统的可扩展性。模块运行在内核空间环境中,它的程序运行函数库都是在内核空间定义,而不是在用户函数库空间。Linux模块的最方便之处为可加载和卸载。Linux操作系统提供了系统调用in smod和rmmod可随时将自己开发的模块进行加载和卸载。   根据Linux设备分类,设备驱动模块也可大致分为字符模块(char module)、块模块(block module)和网络模块(network module)三种。

2 IC卡设备触点硬件电路介绍

IC卡硬件触点接口及信号如图1所示。

C1:VCC电源电压。

C2:RST复位信号。

C3:cLK时钟信号。

C4:未用。

C5:GND。

C6:VPP编程电压。

C7:I/O数据输入/输出口线。

C8:未用。

以上触点中,VPP编程电压触点是厂家生产卡时编程所用,用户卡读写时没有应用。所以准确地说,只有五个触点分别连接来自外部主控制器的五个控制信号。 设备复位后的后续操作可包括卡的地址设定操作、读写操作、擦除操作。针对以上卡的各种操作皆有严格的信号控制时序,详情可参照各种应用卡的DATASHEET。 IC卡作为卡基应用系统中的一种卡型,是利用安装在卡中的集成电路(IC)来记录和传递信息的,所以IC卡皆有特定的存储位图。具体存储位图针对应用领域的不同和标准的不同具有不同的位图定义,详细情况请参见自己开发应用卡的DATASHEET资料。在驱动的开发过程中,也只有完全清楚这些位图定义后才能将所读取的数据按照位图定义协议进行译码而得到自己最终需要的各种数据。

3 IC卡读卡电路简介

IC卡读卡接口电路框图如图2所示。

我们采用MPC823E作为主处理器。因为IC触点工作电压为5V,而主控制器的工作电压为3.3V,所以在读卡器中设计了中间电平转化驱动电路,同时增加了控制信号的驱动能力。为了实时检测插卡操作,在插卡器电路中设置一开关电路,接主控制器的控制口线,用于检测是否插卡。

4 IC卡设备驱动模块的实现详解

下面以我们采用的公用电话机通用的IC卡为例,通过已实现代码来说明整个IC卡设备驱动模块。

(1)数据结构的确定

[1][2][3][4]

也有善意的提醒:何不去远方!昆明呀——赶一个花海;

嵌入式Linux下IC卡接口设计与驱动开发

相关文章:

你感兴趣的文章:

标签云: