来源:中国一卡通网 作者:刘春河,季昊 发布时间:2010-09-17 15:18:48 字体:[大 中 小]
摘 要:基于USB 的MBF200 指纹采集仪是AIFS 系统的重要组成部分,负责原始指纹图像的采集。根据MBF200 的芯片接口,加以必要的辅助电路,设计了指纹采集仪内部电路。基于KUDF 驱动框架,设计了核心态驱动程序,可以实现批量和单字节传输。根据指纹图像的特点,采用硬中断和软中断两种方式保证送入特征提取和比对模块的指纹图像质量。为了实现Win32 应用程序和驱动程序的通信,设计了统一的通信接口,完成了指纹图像的自动采集,效果较好。
引言
指纹识别利用了人体指纹的唯一性和不变性,是生物特征识别领域的重要手段,已广泛应用于信息安全领域。自动指纹识别系统(AIFS)[1]包含如下过程:
图 1 AIFS 系统过程
指纹采集过程作为指纹识别系统的第一步,负责原始指纹图像的采集,采集图像的质量直接影响到指纹处理结果。所以指纹采集仪的选取至关重要,影响整个系统的性能。较早出现的活体指纹采集仪主要采用光学方法,采用光的全反射原理取像;后来陆续出现了超声波扫描型、热敏型和半导体型的指纹采集仪。超声波采集仪虽然采集质量出色,但是由于造价高,不适于大批量应用;热敏型采集仪则由于采集质量差、采集面积小,使用较少。半导体型的大多是基于CMOS 压感特性,由于性价比高,占据了大部分的指纹采集设备市场。MBF200 是市场上先进的高性能、低功耗半导体型传感器。
指纹采集器在系统中使用时,由于大多数产品和Windows 系统相连,所以在Windows操作系统下的驱动开发显得尤为重要。WDF 是微软下一代驱动模型[3],兼容Windows2000以后的所有平台,在Vista 操作系统和即将发布的Windows7 操作系统中均被采用,代表了驱动设计领域最先进的技术方向。
WDF 封装了驱动程序中的某些共同行为:例如即插即用和电源管理就属于这种共同行为。因为大多数驱动程序中都需要处理即插即用和电源管理问题,据说这大概要上千行的代码,况且,没有相当水平还不一定能处理好。为了一劳永逸,WDF 干脆将即插即用和电源管理封装了进了对象之内,一举成了对象的缺省(默认)行为。
WDF 改变了操作系统内核与驱动程序之间的关系,WDM 驱动程序中,一方面要处理硬件,另一方面要处理驱动程序与操作系统内核的交互。现在WDF 则将驱动程序与操作系统内核之间进行了分离,驱动程序与操作系统交互工作交给框架内封装的方法(函数)完成,这样驱动开发者只需专注处理硬件的行为即可。这不仅避免了顾此失彼两面不周的弊端,也指纹采集预处理 特征提取 比对 识别结果
由于双方的分离,对操作系统内的某些改动和硬件制造商配套驱动程序的开发都有莫大的好处。
1 MFB200 的结构和特性
MBF200[4]具有256×300 传感器阵列和500dpi 的分辨率,集成8 位A/D 转换器,工作电压为3.3~5V,且有指纹自动检测功能。它提供3 种总线接口:8 位微处理器总线接口(MCU)、串行外围设备接口(SPI)和集成USB 全速接口。在计算机系统中采用它作为采集设备时,大多采用USB 接口。
MBF200 的电容传感器阵列由二维金属电极组成.所有金属电极充当一个电容板,接触的手指充当第二个电容板。器件表面的钝化层作为两板的绝缘层。当手指触摸传感器表面时,指纹的高低不平就会在传感器阵列上产生变化的电容,从而引起二维阵列上电压的变化,并形成8 位灰度级的数字指纹图像。分辨率高达500DPI,信噪比高,反应速度快。传感器的灵敏度可通过读写其内部的放电电流寄存器(DCR)、放电时间寄存器(DTR)和增益控制寄存器(PGC)来进行控制。
2 指纹采集仪电路设计
指纹采集仪分为电源模块、USB 连接模块、时钟模块、模式控制模块和辅助外围电路。电源模块负责向传感器芯片提供3.3~3.6V 的电压;时钟模块采用外部晶体振荡电路,有助于降低功耗;模式控制模块负责选择芯片的接口模式和ROM 配置方式;USB 连接模块负责芯片和USB 连接器的连接,为了使采集器在数据传输速度和信号质量上取得较好的效果,该模式下采用带屏蔽层的电缆。USB 设备与主机相连接的控制电路如图2 所示,其中R3 是全速USB 设备必须要求的上拉电阻,为1.5K,R1、R2 是起阻抗匹配用,均为43。
图 2 USB 连接模块
MBF200 内部嵌有USB 控制器,Firmware 也已经固化在了芯片中。芯片主要用到的引脚如图2:MODE 分别置为1、0,表示采用USB 模式并使用内部ROM;XTAL1 和XTAL2连接12MHz 晶振,ISET 用于设置内部参考电流,FSET 用于设置内部多频振荡器及自动指纹检测速率。AIN 用于模拟信号输入方式选择,USB 接口使用三个端点;其中端点0 是控制端点,用来控制对功能寄存器的读写;端点1 是读端点,用来读取经过AD 转换后的指纹图像数据,它是以块方式进行读取的,每次64 个字节;端点2 是中断端点,当ISR 被置位时,由它向端点2 发送中断信号。
图 3 指纹采集仪原理图
3 基于KMDF 的USB 驱动架构
3.1 WDF 框架
微软操作系统下的驱动模型,最开始采用的是VxD(VIRTUAL X DRIVER),现早已经废弃。自Windows 2000 开始,驱动开发基于WDM(Windows Driver Model)标准驱动模型。WDF[5] (Windows Driver Foundation)是微软提出的下一代全新的驱动程序模型,它是在WDM(windows Driver Model)的基础上发展而来的;WDF 是Vista 系统及其以后的版本采用的驱动模型,全面向上兼容WDM。最新发布的Windows7 中就采用了WDF。WDF 支持面向对象、事件驱动的驱动程序开发,提供了比WDM 更高层次抽象的高度灵活、可扩展、可诊断的驱动程序框架。WDF 框架管理了大多数与操作系统相关的交互,实现了公共的驱动程序功能(如电源管理、PnP 支持),隔离了设备驱动程序与操作系统内核,降低了驱动程序对内核的影响。
图 4 WDF 驱动栈模型
对应于驱动模型,分别有相应的驱动开发套件。WDM 驱动模型对应于DDK(Driver Develop Kit),而WDF 驱动模型对应于WDK(Windows Driver Kit)。WDK 提供了两个框架:KMDF(内核模式驱动程序框架)和UMDF(用户模式驱动程序框架)。对内核模式和用户模式对象来说,WDF 是两者的父对象。相对于内核模式,派生出的对象称为“KMD 框架”,即KMDF;相对于用户模式,派生出的模型称为“UMD 框架”,即UMDF。具体到实现,KMDF 对应于.Sys 文件,负责硬件交互和处理;UMDF 对应于.Dll 文件,负责和用户的交互。
推荐文章
论坛热帖