您的当前位置:首页正文

基于USB接口设备的驱动程序设计

2023-08-31 来源:好走旅游网
维普资讯 http://www.cqvip.com 兵工自动化 软件歼发与应用 Exploitation and Application of Software O.I.Automation 2007年第26卷第5期 文章编号:1006—1576(2007)05—0089—03 2007,Vo1.26,No.5 基于USB接口设备的驱动程序设计 涂望明,魏友国,段道聚,梁季程,张学志,谢存 (武汉军械士官学校火控雷达教研室,湖北武汉430075) 摘要:采用PDIUSBD12芯片的基于USB接口设备驱动程序,模型最上层的函数驱动程序,管理应用程序与较 低级总线驱动程序间的通信。底层的总线驱动程序,管理函数驱动程序与设备硬件间通信。中间的过滤器驱动程序, 辅助函数驱动程序与总线驱动程序.USB设备函数驱动程序与总线驱动程序,使用I/0信息包处理USB的通信.同 时,根据USB通信协议,使用DriverWorks的工具模块进行WDM设备驱动程序的开发. 关键词:USB接口;设备驱动程序;PDIUSBD12芯片;DriverWorks 中图分类号:TP3II.11 文献标识码:A Design of Drive Program Based on USB Interface Device TU Wang—ming,WEI You.guo,DUAN Dao—Ju,LIANG Ji—cheng,ZHANG Xue-zhi,XIE Cun (Fire Control Staff Room。Wuhan Ordnance Petty.Oficer’fS School,Wuhan 430075,China) Abstract:The driver of the device based on USB interface which applied PDIUSBD 1 2 chip,whose function driver at the top of the model,manage the communication between application program and the bus—class driver of the lower layer.The bus..class driver of the bottom manages communication between management function driver and the device hardware.The middle driver of the filter assists function driver and bus—class driver to operate.The USB device function driver and bus.class driver use I/O request packet to deal with the USB device communication.According to the USB communication pact,using DriverWorks tools module to develop the driver of the WDM device. Keywords:USB interface;Driver;PDIUSBD 12 chip;DriverWorks O 引言 USB(Universal Serial Bus)通用串行总线已成 动程序,包括执行所有的USB驱动程序,都在内核 为PC标准配备,使用USB接口可连接多个不同设 备,支持热插拔,并具自检功能。在Windows系统 下,主机与设备间的USB通信须经设备驱动程序 来传输。故基于USB接口设计其驱动程序。 模式中执行。其程序代码无系统资源存取限制。 Windows在USB设备驱动程序是分层模型,每个 驱动程序执行USB通信的部分工作。 驱动程序模型在内核模式下运行含最上层函 数驱动程序,管理程序与较低级总线驱动程序间通 信。驱动程序模型的最底层含总线驱动程序,管理 函数驱动程序与设备硬件间的通信。驱动程序模型 的中间有一个或数个过滤器驱动程序,用来辅助函 数驱动程序与总线驱动程序。USB设备的函数驱动 程序与总线驱动程序,使用I/O要求信息包(IRP: I/0 Request Packet)来处理USB通信,如图l。 应用程序 一 一1 USB硬件电路 该电路设计选用Philip公司PDIUSBD12芯片。 1.1设备驱动程序原理与组成 (1)驱动程序基本原理 设备驱动程序(device driver)是一个软件组件, 其应用程序可存取硬件设备。 Windows内执行的USB设备驱动程序,须符合 Microsoft定义的Win32驱动程序模型(WDM: Win32 Driver Mode1)规格,该文件扩展名为.sys。 (2)分层的驱动程序 Windows系统下,程序代码是在用户模式或内 核模式中执行,每种模式允许不同层级的存取内存 与系统资源的权限。应用程序运行在用户模式, Windows会限制内存与系统资源的存取。大部分驱 量一一 WIN32 API调用 用户模式 l W'm32子系统函数驵动程序I 童 ——1 —一I/O要求信息包(IRP)内核模式 特定瑾窑拉口 总线驵动程序I USB设备 图1 Windows系统下USB使用的分层驱动程序模型 USB总线包含:根集线器驱动程序(root.hub driver);总线类别驱动程序(bus.class driver);主 收稿日期:2006一ll—ol;修回日期:2007-04-04 作者简介:涂望明(1980一),男,湖北人,2003年解放军军械工程学院本科毕业,从事雷达信号处理、系统仿真研究。 维普资讯 http://www.cqvip.com 兵工●动化 软件开发与应用 Exploitation and Application of Software O.I.Automation 2007,Vo1.26,No.5 2007年第26卷第5期 机控制器驱动程序(host—controller driver)。 1.2设备驱动程序调用过程 Windows中,用户对设备请求是在应用程序中 驱动程序的DriverEntry段如下: NTS1:f TI,S C::DriverEntry(PUNICODE_STRING RegistryPath) f,,Open the”Parameters”key under he tdriver KRegistryKey Params(RegistryPath,L”Parameters”); 通过调用Win32子环境中的API函数,求得操作系 统的支持。首先,API函数要将用户程序的请求转 换为对内核态I/O系统服务请求。I/O管理器接收 用户请求后,构造出描述请求的I/O数据结构一 if(NT_SUCCESS ̄arams.LastError0)) {#ifDBG ULONG bBreakOnEntry=FALSE; //Read”BreakOnEntry”value from registry Params.QueryValue(L”BreakOnEntry”,&bBreakOnEntry); //If requested,break into debugger I/O请求包(IRP)。I/O管理器将IRP传递给相应 的设备驱动程序并等待执行。完成后,其结果交给 if(bBreakOnEntry)DbgBreakPoint0; I/O管理器,并返回Win32 API函数,由所请求 Win32 API将结果交给用户。若同时有多个任务请 求而接收I/O管理器的多个IRP时,设备驱动程序 便不能立即执行IRP,须将IRP置为悬挂状态,送 入待执行的IRP队列中排队,以便逐个执行。 1.3 WDM设备驱动程序结构 在WINDOWS下,与USB设备的任何通信须 通过WDM驱动程序。WDM是分层的,不同层的 驱动程序具有不同优先级。WDM还引入功能设备 对象FDO(Function Device Object)与物理设备对 象PDO(Physical Device Object)两个新类用来描 述硬件,一个PDO对应一个真实硬件。一个硬件只 允许有一个PDO却可拥有多个FDO,在驱动程序 中直接操作的不是硬件而是相应的PDO与FDO。 WDM驱动程序功能模块…由以下部分组成:驱动 程序初始化:创建和删除设备及处理Win32程序打 开和关闭文件句柄请求、处理Win32程序输入/输 出请求、实现对设备的串行访问、访问硬件、取消 I/O请求、超时I/O请求、调用其他驱动程序、处 理电源管理请求、使用Windows管理诊断(WMI) 向管理员报告和处理可热插拔设备被加入或删除 等。其中,“初始化”模块不能少,其他模块则可选。 不同模块间有许多交互,一些是直接的函数调 用,但更多信息要在数据结构中传递。其中: (1)驱动程序入口点和回调例程 WDM驱动程序的初始化入口点,即Driver Entry的例程,是标准函数原型。当WDM被装入 时,内核调用DriverEntry例程。驱动程序的 DriverEntry例程须设置一系列的回调例程来处理 IRP。每个回调例程有其标准的函数原型。内核将 在合适的环境设置下调用该例程。内核通过发送 I/O请求包(IRP)来运行驱动程序代码。如WIN32 ReadFile调用作为“读”IRP到达设备驱动程序, 读缓冲区的大小和位置作为IRP中指定参数。 ・90・ #endif //Loaddriverdatamembersfromthe registry oLadRegistryParameters(Params); l m_Unit=0: erturnSTATUS_SUCCESS; l (2)分发例程 “创建”、“关闭”、“读”、“写”、IOCTL和内部 IOCTL等处理程序称为分发例程。通常因只执行 IRP的一些初始化处理如检查所有参数是否合法, 然后把IRP发送到驱动程序的其余地方。如表1。 表1分发例程IRP Win32 IRP CreateFile CREATE .CloseHandlel CLOSE ReadFile READ WriteFile WRITE DevieeloContro IOCTL或内部IOCTL (3)创建设备 大多数WDM设备对象都是在即插即用管理器 调用AddDevice例程入口点时被创建。插入新设备 后,当系统找到由安装信息文件所指定的驱动程序 时,该例程被调用。之后,一系列即插即用IRP被 发送到驱动程序,并进行相应功能的处理。 (4)开发工具 目前WDM驱动程序开发工具有2类:① Microsoft提供的Windows DDK(Device Driver Kit),有Windows98 DDK和Windows2000 DDK两 个版本。Windows98 DDK能开发Windows95/ 98/Me/NT下的WDM驱动程序。Windows2000 DDK能开发Windows98/Me/2000/NT下的WDM 驱动程序;②NuMega公司的DriverWorks。 DriverWorks对于Windows98和Windows2000 共同支持Win32驱动模型(WDM)设备驱动程序 的开发提供完全支持。DriverWorks中含WDM框架 程序生成工具(DriverWizard)及相应库类。提供 维普资讯 http://www.cqvip.com 兵工自动化 软件开发与应用 o.I.Automation 2007年第26卷第5期 Exploitation and Application of Software 2007,Vo1.26,No.5 在C++下进行设备驱动程序开发。由DriverWorks 2003. 生成的源代码,经修改便可使用。 【3】朱玉军,等.基于USB和目标识别的图像采集系统的 设计实现[J].微计算机信息,2006,(1):89—91. 2 结语 【4】林勇,宋征.VC++6.0应用指南【M】.北京:人民邮电出 根据USB通信协议,使用DriverWorks工具模 版社.1999. 【5】武安河,周利莉.Windows设备驱动程序开发实务【M】. 块进行WDM设备驱动程序开发,简化开发工作, 北京:电子工业出版社。2001. 提高开发效率,设计出适合用户需求的USB设备。 【6】PDIUSBD 1 2 Data sheet【EB/OL].http://www.Philip.com. 参考文献: 2000. 【7】王朔,李刚.USB接口器件PDIUSBD12的接口应用设 【l】许永和.健莲科技改编.USB外围设备设计与应用[M】. 计『J].单片机与嵌入式系统应用,2002,4. 北京:中国电力出版社,2002. 【8】王洪,顾本斗.USB设备的开发[J].计算机工程与设计, 【2】萧世丈.USB2.0硬件设计【M】.北京:清华大学出版社, 2002,61,3. (上接第85页) 起始输入地址37,起始输出地址 L D l1 10。“Count”选项中,“Signal evaluation”选择 ,R 0.5 “Pulse/direction”。软件配置完成。 CALL”PULSE”,DB20,/调用系统功能函数块SFB49 2.3程序 CHANNEL:=1,/通道号 程序实现的功能为:触发信号一棘轮旋转标志 ‘5∥软件门'M0・5= 时'开始发送脉冲 MO.5被置通,脉冲输出端Q4.1开始输出脉冲周期 SET—Do:= 为0.4ms的脉冲串,驱动步进电机按设定速度运行, 5o0 高速计数器计数。当计数值达到1667时,M0.5被 JOB—ID:= 复位,脉冲输出停止,电机停止,等待下次被触发。 - 编程步骤:在STEP7中调用系统功能块SFB47 STS—STRT:= …r、一 “COUNT”和SFB49“PULSE”,路径为“Libraries 3Jo1B3_IJU:=DoNE:: Standard library ̄System Function Blocks”,为其 JOB—ERR:= 分配背景数据块DB20,DB22。程序如下: JOB—STAT: L 1667,/将计数器触发值赋给MD1 1 3 结论 CALL”COUNT”,DB22,/调用SFB47,脉冲计数 应用西门子¥7-300 C内部集成的PWM脉宽调 CHANNEL LADDR。- :=0 //通道号 ; ;蓄县 制功能和高速计数器功能,已成功实现步进电机的。p H 0日J尬 艄 H L_J ’ SW—GATE:=M0.5# ̄4q-门,M0.5=1时,开始计数 脉冲驱动和位置反馈,并实现电机的速度调节。由 o: 于¥7-300 C集成脉冲输出最高频率为2.5kHz,故 J~—O B REQi::= 只能满足电机速度不高的情况下应用,若电机在更 尺日E 两疋电仉 发/l、向削 l再仇『、 川,石电仉位叉 JOB_ID: w群 SJOTSB GVAATLE:M=  ∥一计数器触发值 ………….. 高频率的脉冲串驱动下运行,仍需西门子专门的步 :=sTs_G盯E.:Jz[吧仉^匕 佚 簇 =I'M7JO^D 3j _o  … ~一…一 s—RTS TSL TCH:三= 参考文献:爹 X : STS C DN:一 = t1】SIL J EMENS SIMATIC s7.一 300和s7.,。 。 400订 系统软件的系统和 ¨ 日 。 STSuP:= 标准函数参考手册【z】.四川省机械研究设计院,西门子 —C—COUNTVAL:=MD15 ,/当前计数器值 四川技术服务部. LATCHVAL:= 『21 SIEMENS SIMATIC STEP7 V5.3编程使用手册『Z1.四川 J TOoBB呈{ E: S AT:三 一 = [31省机械研究设计院,西门子四川技术服务部.倦目目伶 二叶爿非匕 , 砸吧仙 丹氍 糸巩L姜 系统【 z厶】J.成 ・风 LMD 15,/当前计数器值达到触发值时,M0.5被复位 都步进机电科技有限公司. ・9l・ 

因篇幅问题不能全部显示,请点此查看更多更全内容