面以我们采用的公用电话机通用的IC卡为例,通过已实现代码来说明整个IC卡设备驱动模块。
(1)数据结构的确定
编辑头文件ICDATA.H,确定在驱动模块程序中应用的公用数据结构。驱动模块的最终目的是读取和写入卡数据处理,所以规范整齐的数据结构是必须的。可以定义一个数据结构体来实现卡数据的存储区域、数据地址索引、控制标志位等,如:
这样在驱动模块中,只需要struct ICDATA iccdata;一条语句便可定义全部的卡处理数据结构定义;而ic_fops则定义了设备操作映射函数结构。从这个数据结构看,我们实现了IC卡设备的打开、读、写和监控函数。
(2)硬件接口控制线控制子函数
这些函数用作进行卡复位、时钟等信号的控制。
以上是以我们开发的硬件系统平台为例的硬件控制接口操作函数之一,用于控制IC卡的复位信号置1。针对不同硬件平台,函数内部操作方法不尽相同。类似的其它操作函数还有:
(3)模块初始化函数的实现
模块初始化函数是模块开发过程中必不可少的处理函数,用于实现设备的初始化、中断初始化及处理、设备注册等。在上面函数中,首先应用iniTIcdata(&icdata)实现了卡数据的初始化,然后定义了队列数据。再进行了中断处理函数的绑定、中断申请以及中断初始化。最后实现了IC卡字符设备的申请。设备名为IC。