基于PocketPC的CF卡驱动程序设计
摘要:本文结合CF(CompactFlash)卡驱动的设计,重点阐述了PocketPC驱动程序的设计方法、CF卡设备的驱动结构和设计原理,介绍了使用实现CF+协议的接口芯片TL16PC564的系统设计,探讨了CF卡的即插即用问题,并且给出了一个CF卡PocketPC驱动及应用程序和驱动交互的实例。
关键词:PocketPC流接口驱动CF卡;即插即用
1.概述
在信息和咨讯快速更新的今天,掌上电脑以其方便和易携带性开始得到广泛应用,如在服务行业、导航系统、金融、证券、保险等领域。在掌上电脑高端市场中,由微软开发的嵌入式操作系统WinCE发展迅速,占有较高的比例。PocketPC2002采用定制化的WindowsCE3.0操作系统,由Microsoft开发专用于个人数字手持设备。
为方便扩展,基于PocketPC的掌上电脑向用户提供了CF卡通用扩展槽,利用该接口,可设计不同的CF卡实现不同的应用,如CFMODEM卡、CF网卡、CF数据采集接口卡等。在CF卡的设计中,基于PocketPC的驱动程序设计非常关键,直接影响着CF卡的性能。本文结合CF卡驱动的设计,介绍了PocketPC驱动程序的设计方法、CF卡设备的驱动结构和设计原理,探讨了CF卡的即插即用问题,并且给出了一个CF卡PocketPC驱动的设计及应用程序和驱动交互的实例。
2.基于PocketPC的CF卡驱动设计
2.1.PocketPC驱动简介
WindowsCE3.0是微软公司针对嵌入式系统开发的实时操作系统,具有可以独立开发的内核和设备驱动程序模型,PocketPC是针对掌上电脑的定制化的WindowsCE操作系统,其驱动模型与WindowsCE一致。
PocketPC驱动程序模型以静态连接库(.lib文件)或动态连接库(.dll文件)形式实现。支持四种驱动程序类型:Nativedriver(本机驱动)、StreamInterfacedriver(流接口驱动)、USBdriver和NDISdriver(网络驱动)。本机驱动是指本地设备的驱动程序。如点触式面板,显示器,键盘,发光二极管,电池等的驱动。USB和NDIS驱动模型分别是针对USB设备和网络协议驱动实现。流接口驱动程序是为连接基于WindowsCE的平台的外围设备而设计的,包括串口、PC卡,CF卡等[1]。
2.2.CF卡驱动架构和原理
设计CF卡驱动程序的主要任务是实现PocketPC应用程序对CF卡系统硬件的访问,实现CF卡设备的管理和即插即用。应用程序对CF卡硬件的访问需要考虑驱动程序的体系结构、应用程序与驱动程序的交互、驱动层的中断处理等问题。CF卡即插即用问题涉及设备管理程序、设备文件名等等。
2.2.1.流接口驱动程序的系统结构
PocketPC中CF卡驱动程序的设计对应模式是流接口驱动。流接口驱动程序是一个管理外围设备的DLL,它把设备表示为文件系统的一个特殊文件,主要任务是把外设的使用传递给应用程序。PocketPC的设备文件存在固定的路径\Windows下,以一个特殊的命名惯例来区分设备文件和其他文件。
流接口驱动程序接收设备管理器和应用程序通过系统调用的命令,并且封装所有命令,转换成控制设备适当的动作信息。图一表示CF卡的流接口驱动程序和其他系统部件间的相互关系:
流接口驱动程序通过内部硬件访问外围设备。对CF卡而言,内部设备是CF卡插槽,由内置CF卡插槽驱动程序驱动,而CF卡插槽驱动程序提供编写CF卡流接口驱动程序的插槽接口函数。即CF卡的设备驱动程序使用CF卡服务库(由CF卡插槽接口函数组成),CF卡服务库控制CF卡插槽硬件。
2.2.2.实现即插即用
在PocketPC中,中断、I/O端口等系统资源被操作系统接管,并由其根据情况进行智能的分配,当设备连接到掌上电脑时,操作系统能自动识别并启动相应的驱动,这就是即插即用。为实现PocketPC的CF卡即插即用,必须理解两个概念:设备管理程序(DeviceManager,DM)和设备文件名。
2.2.3.编写CF卡接口驱动程序DLL
设备管理程序属于用户层程序,与内核,注册表和流接口驱动程序DLL相互作用并实现特定功能(见图一),从而实现设备的即插即用。
DM执行下列任务[1]:
a.初始化驱动程序的加载。
在系统启动或收到用户在基于PocketPC平台上增加外围设备的信息时,开始加载相应驱动;
b.向内核注册设备文件名。
该文件名把应用程序使用的流I/O函数映射到流接口驱动程序的对应函数;
c.启动相应的驱动程序
通过从外围设备获得即插即用标识符或激活一个检查模块为外围设备寻找合适的设备驱动程序;
d.自动卸载设备驱动程序
通过读写注册表值加载和跟踪驱动程序,当不再需要设备时卸载其驱动程序。
B)设备文件名
应用程序通过文件系统里的特殊入口访问外围设备。
PocketPC的文件系统可以识别特殊文件名并重定向文件IO操作到适当的流接口驱动程序。
设备文件名前缀由三个大写字母组成,用来识别与特
- MCS-51系列单片机结构化程序设计探讨(04-20)
- 状态机在单片机程序设计中的应用(05-01)
- ARM处理器的位置无关程序设计(09-19)
- 基于分布式处理技术的物联网数据库设计(05-21)
- 模块化管理和设计(12-01)
- 马踏棋盘的实现(12-01)