摘要 L i n u x系统中,设备驱动程序提供了设备和上层应用空间的标准抽象接口,使得硬件响应这个标准的内部编程接口;而用户则可以通过一组标准化的系统调用对硬件设备进行打开、关闭、读写、参数控制设置等特定的操作。本文首先介绍L i n u x下设备模块的概念和基本分类,然后介绍I c卡设备的硬件接口设计以及在L i n u x系统下如何应用字符设备开发I c卡设备驱动模块。
关键词 嵌入式Linux 设备驱动 IC卡设备
引 言
随着现代工业社会逐步向信息社会的过渡,信息将扮演愈来愈重要的角色www.cechina.cn,成为现代经济生活中的成功要素。IC卡作为卡基应用系统中的一种卡型,是利用安装在卡中的集成电路(IC)来记录和传递信息的;具有存储量大、数据保密性好、抗干扰能力强、存储可靠、读写设备简单、操
我们基于公用电话IC卡的应用CONTROL ENGINEERING China版权所有,开发了多媒体信息终端产品,在传统公用IC卡电话功能的基础上增加了上网、邮件、电子支付、信息浏览等各种多媒体功能,统一采用公用电话IC卡进行收费。目前设计的IC卡读写器和驱动软件已经应用于我们的多媒体终端产品中。
1 嵌入式Linux下设备驱动模块简介
Linux系统将设备分成三种类型:字符设备、块设备和网络接口。三种类型设备定义如下:
字符设备:字符设备是指能够像字节流(比如文件)一样被访问的设备,如字符终端(/dev/con s01e)和串口(/dev/ttys0)以及类似设备。字符设备对应文件系统中的节点CONTROL ENGINEERING China版权所有,用户则通过此文件节点访问和控制设备。
块设备:块设备和字符设备一样可以通过文件系统节点来进行访问,Linux允许应用程序像字符设备那样读写块设备。
网络接口:任何网络设备都要经过一个网络接口,即一个能够和其它主机交换数据的设备。通常接口是个硬件设备,但也可能是个纯软件设备,比如回环(100pback)接口。Linux访问网络接口的方法是分配一个唯一的名字。
Module是Linux内核的一大创新,其正规的叫法应该是Loadable Kernel Module控制工程网版权所有, 即可安装模块。可安装模块实现了Linux操作系统的可扩展性。模块运行在内核空间环境中,它的程序运行函数库都是在内核空间定义控制工程网版权所有,而不是在用户函数库空间。Linux模块的最方便之处为可加载和卸载。Linux操作系统提供了系统调用in smod和rmmod可随时将自己开发的模块进行加载和卸载。
根据Linux设备分类,设备驱动模块也可大致分为字符模块(char module)、块模块(block module)和网络模块(network module)三种。
2 IC卡设备触点硬件电路介绍
IC卡硬件触点接口及信号如图一所示。
C1:VCC电源电压。
C2:RST复位信号。
C3:cLK时钟信号。
C4:未用。
C5:GND。
C6:VPP编程电压。
C7:I/O数据输入/输出口线。
C8:未用。
以上触点中,VPP编程电压触点是厂家生产卡时编程所用,用户卡读写时没有应用。所以准确地说,只有五个触点分别连接来自外部主控制器的五个控制信号。 设备复位后的后续操作可包括卡的地址设定操作、读写操作、擦除操作。针对以上卡的各种操作皆有严格的信号控制时序,详情可参照各种应用卡的DATASHEET。 IC卡作为卡基应用系统中的一种卡型,是利用安装在卡中的集成电路(IC)来记录和传递信息的,所以IC卡皆有特定的存储位图。具体存储位图针对应用领域的不同和标准的不同具有不同的位图定义,详细情况请参见自己开发应用卡的DATASHEET资料。在驱动的开发过程中,也只有完全清楚这些位图定义后才能将所读取的数据按照位图定义协议进行译码而得到自己最终需要的各种数据。
3 IC卡读卡电路简介