新闻中心

EEPW首页 > 模拟技术 > 设计应用 > USB设备驱动程序的设计

USB设备驱动程序的设计

作者:陈新忠 中国电子科技集团公司第二十研究所时间:2009-05-21来源:电子产品世界收藏

  USB设备是一种典型的WDM(Windows Driver Model),其程序模型如图1所示。用户应用程序工作在Windows操作系统的用户模式层,它不能直接访问USB设备,当需要访问时,通过调用操作系统的API(Application programming interface)函数生成I/O请求信息包(IRP),IRP被传输到工作于内核模式层的设备,并通过驱动程序完成与UBS外设通信。设备驱动程序包括两层:函数驱动程序层和总线驱动程序层,函数驱动程序一方面通过IRP及API函数与应用程序通信,另一方面调用相应的总线驱动程序,总线驱动程序完成和外设硬件通信。USB总线驱动程序已经由操作系统提供,驱动程序开发的重点是函数驱动程序。

本文引用地址:http://www.eepw.com.cn/article/94605.htm

  USB设备驱动程序的设计

  使用3.2开发USB设备驱动程序

  该驱动程序的主要功能包括:从控制端点0读取规定个数的数据、向端点0发出控制命令、从端点2批量读数据、向端点2批量写数据,驱动程序的开发采用3.2驱动程序开发包及VC++6.0,使用开发包中的向导程序DriverWizard就可以方便的生成驱动程序框架、模块及部分程序源代码,开发者只需要在功能模块中加入自己的实现程序就能完成复杂的USB设备驱动程序设计,下面介绍使用DriverWizard生成ISP1581驱动程序的过程:

  1)启动DriverWizard,选择DriverWorks Project创造一个名为USBDIO的VC++项目;

  2)在驱动程序类型中选择WDM Driver,WDM Function Driver,在硬件设备所支持的总线类型中选择USB(WDM Only),在USB Vendor ID(厂商识别码)中填写0741,在USB Product ID(产品识别码)中填写0821;

  3)增加USB设备端点,设置端点2为批量输入/输出传输方式;

  4)在驱动程序支持的功能项中选择Read、Write、Device Control、Cleanup;

  5)选择自动产生批量读及批量写程序代码;

  6)在I/O请求IRP处理方式中选择None,即IRP不排队;

  7)在接口的打开方式中选择Symbolic link:UsbdioDevice,即应用程序以符号链接名打开设备;

  8)定义应用程序调用DeviceIoControl函数对WDM驱动程序通信的控制命令,结果如图2所示。

 

  图2 定义控制代码



评论


相关推荐

技术专区

关闭