本文介绍了WinCE5.0下USB设备驱动框架,结合USB Camera的驱动开发实例说明了在USB驱动框架中驱动数据的流动方向,并已在中星微公司的301PLUS和303这两个系列的摄像头上得到成功运用和实践。所采用的程序设计方法及思想,对其他类似嵌入式系统软件的设计也有较高的参考价值。 WinCE5.0是一个32位、多任务、多线程的实时嵌入式操作系统。USB Camera 以其良好的性能和低廉的价格得到广泛的应用,同时因其灵活、方便的特性,易于集成到嵌入式系统中。通过采用USB Camera可以在WinCE5.0下方便地得到实时图像。但是由于嵌入式硬件环境的多样性以及WinCE5.0对USB设备驱动开发只提供了一些底层支持,摄像头厂商尚未提供WinCE5.0下USB摄像头的驱动,因此开发出WinCE5.0下USB摄像头驱动具有实际的意义和价值。 USB系统由USB主机、一个或多个USB设备和物理总线组成。主机上又分两层:较高的包含USB设备驱动程序的软件层和主机控制器硬件层,也称作“适配层”。主机的主要任务是控制对USB设备的双向数据传输。IHV和USB设备制造商利用USBD提供的函数来实现USB设备的驱动程序。OEM负责给基于WinCE的平台提供HCD模块,这样相应的硬件才能与USBD模块进行交互。流接口驱动程序通过系统提供的文件系统API与应用程序交互;而系统通过设备管理器完成对流接口驱动程序的加载、卸载等管理工作;流接口驱动程序通过调用USBD模块提供的接口函数实现与底层USB设备通信。 基于WinCE5.0平台的两种专用的驱动模型为:本机设备驱动程序和流接口驱动程序。本机设备驱动程序适合于集成到WinCE 5.0 平台的设备;而后者则是一般类型的设备驱动程序,适用于大部分外围设备。流接口驱动程序是一种可以定制接口的驱动模型,一般由设备管理器负责管理。它把设备管理器和应用程序的命令转换成所控设备的适当动作所需信息。流接口驱动程序需要实现一组固定的流接口函数,供给WinCE5.0系统内核使用。 实验使用的USB Camera由于实时图像数据传送量比较大,很多USB Camera产品在图像传输之前已进行了数据压缩处理,如果不知道解码算法,是没有办法在WinCE上获得图像的。在开发的时候主要使用SnoopyPro,它是一款可以分析USB通信数据的软件,辅助进行Zc030x的驱动开发工作,最后成功开发出Zc030x在WinCE5.0下的驱动程序。
|