vhdl语言实验系统后台pc机支持程序设计计算机本科学位论文.doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《vhdl语言实验系统后台pc机支持程序设计计算机本科学位论文.doc》由会员分享,可在线阅读,更多相关《vhdl语言实验系统后台pc机支持程序设计计算机本科学位论文.doc(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、河北大学2009届本科生毕业论文(设计) VHDL语言实验系统后台PC机支持程序设计摘 要USB产业近几年的迅猛发展,使得传输速度和性能上都有了大幅度的提高,也使得该技术的优势越来越明显,应用也相应的越来越广泛。学习和应用单片机的热潮始终不减,特别是MCS51系列。实际上,从应用通用数字集成电路系统到广泛应用单片机,是我国电子设计在智能化应用水平上质的飞跃。 本文主要介绍的是PC机上驱动程序的编写,主要包括Windows USB驱动程序设计,即编写用户程序以及内核驱动并让其进行通信。在本文中,首先介绍了USB的发展现状,接着介绍了编写驱动程序需要用到的一些知识,其中包括:Windows 驱动程
2、序,USB设备,USB内核驱动等的介绍。最后给出详细的开发技术以及设计程序步骤。最后对这次毕业设计的过程进行了总结和收获。关键词: USB驱动 设备驱动程序 PC机 WDM ABSTRACTUSB technology has advanced by swift and violent in recent years,the transmission speed and performance have improved substantially, but also makes the technology more and more obvious, more and more exten
3、sive applications. Learning and application of microprocessor has reduced the fever, especially MCS51 series. In fact, the universal digital integrated circuits from the application systems to the wider use of single-chip, is the application of intelligent electronic design level in a qualitative le
4、ap.This paper mainly introduces the PC, the driver of the preparation, including the design of Windows USB drivers, that is, user programs and kernel drivers and their communication. In this article, first introduced the development of USB, and then introduced the drivers needed to prepare some of t
5、he knowledge, including: Windows drivers, USB devices, USB kernel drivers, etc. introduction. Finally, detailed procedures for the development of technology and design steps. The final design of the graduation process and harvest summary.Key words: USB Driver Device driver personal computer Windows
6、Driver Model目录一 绪论11.1课题设计背景11.2课题设计意义1二 系统总体模块划分22.1系统模块分类22.1.1系统硬件电路22.1.2实验板监控程序22.1.3后台PC机支持程序22.2后台驱动模块的功能和意义32.2.1后台驱动模块的功能32.2.2后台驱动模块的意义32.3基于Windows的驱动程序概述32.3.1 Kernel模式驱动程序框架构建32.3.2基于框架驱动程序的WDM概念42.3.3 I/O请求数据包5三 Windows 驱动程序简介63.1 Windows 驱动分类63.2 WDM驱动程序6四 USB设备简介84.1 USB总线协议84.2 USB设
7、备简介84.3 USB连接拓扑结构94.4 USB通信的流程10五 USB内核驱动简介125.1功能驱动与物理总线驱动125.2构造USB请求包125.3发送USB请求包125.4 USB设备初始化135.5 USB设备的插拔135.6 USB设备的读写13六 USB应用程序编写过程146.1选择开发环境156.2进行前台设计156.3创建KMDF驱动程序166.3.1建立KMDF编程环境以及驱动程序166.3.2生成KMDF驱动程序166.3.3安装KMDF驱动程序176.4进行KMDF驱动程序与应用程序之间的通信176.4.1应用程序对驱动程序的通信176.4.2驱动程序对应用程序的通信1
8、8总结19谢辞20参考文献21一 绪论1.1课题设计背景Windows驱动发展,从开始到现在经历了几个阶段:VXD,NT,WDM,WDF。其中VXD已经被淘汰,而NT式驱动是非即插即用的,在此基础上又提出一个新的驱动模型:WDM驱动,WDM驱动支持即插即用,由于大多数驱动程序中都需要处理即插即用,所以NT式驱动已经基本没多少人使用。但是由于WDM驱动的编写很繁琐,微软退出全新的WDF驱动。自Windows 2000开始,开发驱动程序必以WDM为基础的,但其开发难度之大,根本不能奢望像用户模式应用程序开发那样容易。为改善这种局面,微软推出了新的驱动程 序开发环境。要预先指出的是,这不是另起炉灶改
9、弦更张,而是以WDM为基础进行了建模和封装,显著特点是降低了开发难度。1.2课题设计意义本课题研究的是VHDL实验班监控,具体功能为:用户可以使用EDA软件编译VHDL硬件描述语言编写的程序,然后将得到的目标文件将通过JTAG口下载到FPGA中以得到需要的逻辑功能。该实验系统中还包含一个基于ARM7TDMI-S微控制器的芯片LPC2142,用于运行监视、控制实验板的工作状态,并通过通信口上传到后台主机。具体是后台PC机通过USB接口与该单片机相连进行信息交互。而单片机通过用通用I/O口模拟的JTAG接口与FPGA芯片相连进行通信。通过本实验系统电路设计人员可以在很短时间内就可完成电路的输入、编
10、译、优化和仿真。而我负责的模块为后台PC机驱动程序的编写,该模块为整个实验系统提供了数据传输的通道。能够将主机上的FPGA的配置数据解析然后送到实验板的FPGA中。二 系统总体模块划分2.1系统模块分类该系统一共分为三个模块:系统硬件电路设计;实验班监控程序设计;后台PC机支持程序设计。2.1.1系统硬件电路系统硬件电路设计主要包括:在确定了系统的整体功能后,选择满足需求的芯片进行学习研究;根据系统功能,画出系统电路图并反复检查是否正确;进行布线,选择电路板交印刷公司印刷;对印刷好的电路板进行焊接;其中主要进行的是电路板电路图是否正确以及焊接、排线是否正确。2.1.2实验板监控程序 焊接实验板
11、监控程序设计。该模块又包括三个主要子模块:LPC2142的Bootloader设计、后台PC与单片机的USB通信和单片机通用I/O口模拟JTAG口进行数据传输。Bootloader是LPC2142的引导程序,主要负责初始化芯片时钟、中断向量、通用I/O等操作,同时为RTOS必要的运行环境然后将控制权交给操作系统。USB通信实现的是后台PC和LPC2142芯片间的数据传送和信息反馈,主要是对LPC2142主机控制器的编程和PC机方基于WDM的USB编程。LPC2142通过通用I/O模拟JTAG接口的TAP状态机来完成数据通信。2.1.3后台PC机支持程序 后台PC机程序设计,主要包括Window
12、s USB驱动程序设计 ,其中具体的主要分为三个模块:首先利用VC+编写用户界面,然后编写USB驱动程序,最后把Quartus II编译的目标文件整理成USB的数据格式以数据包的形式通过USB电缆传输到单片机。其三部分如图2-1所示:Windows应用程序Windows USB驱动程序PC机实验板LPC2142微控制器配置数据反馈信息USB设备控制器USB主机控制器USB总线二路选择器并口并口-JTAG转化ByteBlaster下载电缆FPGAJTAG接口GPIO模拟JTAG图2-1 系统总体模块划分2.2后台驱动模块的功能和意义2.2.1后台驱动模块的功能在本次试验中,我负责的是后台驱动模块
13、的设计。其主要包括两个部分。第一、编写用户程序,使得用户可以运用来读取文件或者缓冲区内容。并把其分成USB数据包,通过底层的Windows USB驱动下载到单片机上运行。然而,单片机也可以反馈信息到用户,把单片机上的信息通过USB电缆传输到底层Windows USB驱动 进行解析并反馈到用户界面上。使用户对文件进行更详细的认识。第二、编写内核驱动。主要是编写基于WMD的驱动程序,其主要功能是接收传输下来的数据并发送到单片机上。2.2.2后台驱动模块的意义实现了后台监控程序对可编程逻辑器件进行数据配置,并进行信息反馈以及对它进行监控。对文件的传输提供了很重要的作用,并有效的提高了文件下载到单片机
14、的速度。使得用户可以简单的操作,下载,并进行试验。2.3基于Windows的驱动程序概述2.3.1Kernel模式驱动程序框架构建Kernel模式驱动程序框架为驱动程序提供了机基于对象的界面,框架定义的对象界面包括:对象方法:方法是使驱动程序能用来对对象执行某项操作或者用来收集或设定对象属性的一种函数。对象事件回调函数:事件回调函数由驱动程序提供,每一函数都代表一个基于对象的特定事件。当特定事件发生时,框架就会执行事件回调函数。对象属性:属性是对象自身价值,驱动程序可以取得(即拥有)或者设定(即改变)这些价值。对象处理:基于框架的取得程序不能直接访问框架对象。相反的,驱动程序会接收对象处理,并
15、传递给对象方法。框架定义了几种基于框架的驱动程序能使用的对象类型:1 框架驱动程序对象代表每个驱动程序。2 框架设置对象代表驱动程序所支持的每种设置。3 框架队列对象代表能接收设置I/O请求的I/O队列。4 框架请求对象代表每个I/O队列接收的I/O请求。下面列出框架定义的所有对象,每个基于框架的驱动程序包括:1当驱动程序满载时使用的DriverEntry 路线。2 当特定对象事件发生时,框架使用的一系列事件回调函数。例如,框架设置对象定义了一种驱动程序能够执行的EvtDeviceD0Entry 回调函数。每次当设置进入工作(D0)状态时,框架就会调出EvtDeviceD0Entry 函数。2
16、.3.2基于框架驱动程序的WDM概念Kernel模式驱动框架是一种围绕微软WDM界面的封装器.虽然框架简化了许多WDM概念,并能将无需处理的概念完全隐藏,但仍要了解它的一些基本概念。特别的,要了解一下内容:驱动程序类型:基于Windows的驱动程序分为三种类型:总线驱动,智能驱动和筛选驱动。总线驱动通过发现嵌入母线的子装置并回报其属性来支持I/O总线。(这一行为被称为总线清点.)函数驱动为设备和总线控制I/O操作。筛选驱动能接收、检查或修改用户应用软件和驱动程序之间或个人驱动器间的数据流动。总线驱动本质上是也能清点子设备的职能驱动.当清点总线上子设备数目时,驱动程序扮演着“总线驱动”的角色。另
17、外,当处理访问总线适配器硬件设备的I/O请求时,同一驱动程序扮演着“职能驱动”的角色。驱动程序堆栈:在Windows操作系统中,WDM驱动程序按垂直顺序安放,称之为驱动程序堆栈。堆栈顶端的驱动程序主要接收来自用户应用软件的I/O请求,当然是在这些请求通过操作系统的I/O管理器之后。底层的驱动程序主要与计算机硬件进行交流。一般的驱动程序堆栈包括底端的总线驱动,处理特定的总线I/O操作并相关的子设备数目。典型的,一个或多个特定设置的职能驱动程序置于总线驱动之上。这些职能驱动程序处理与总线相关的I/O操作。筛选驱动可能位于职能驱动之上,或者位于总线驱动和职能驱动之间。每一个运行系统都有几个支持不同类
18、型设备的驱动程序堆栈。设备堆栈:每个驱动程序堆栈都支持一个或多个设备堆栈。设备堆栈是由WDM定义的设备对象结构创建的一系列设备对象。每个设备堆栈代表一种设备。驱动程序为每种设备创建一个设备对象,并将每一对象与堆栈相连。设备堆栈会随着设备被插入移除或者系统重启而被创建或移动。当总线驱动程序发现子设备被插入或移除时,它会通知插入和运行管理器(PnP)。相应的,PnP管理器会命令总线驱动程序为每个与之相连的子设备创建特定的设备对象(PD0).PDO会置于设备堆栈的底端。接着,PnP管理器会装入职能和筛选驱动程序来支持每种设备(如果还未被装入),然后,PnP管理器命令每个驱动程序创建一个设备对象并将其
19、置于设备堆栈的顶端。职能驱动程序创建职能型 的设备对象(FDOs),筛选驱动程序创建筛选设备对象(筛选 DOs)。当I/O管理器发送I/O请求到设备驱动程序时,它会将请求传递给创建堆栈顶端设备对象的驱动程序。如果这一驱动程序要求I/O管理器将请求传递给下一层级,管理器会通过堆栈来确定谁是次级驱动程序(次级驱动是创建次级设备对象的驱动程序)。Kernel模式驱动程序框架为每一个WDM设备对象创建框架设备对象。基于框架的驱动程序会访问这些设备对象而不是WDM设备对象。2.3.3I/O请求数据包I/O管理器通过创建I/O请求数据包(IRPs)将请求发送给驱动程序。每一IRP包括一个执行I/O操作的请
20、求(如读/写操作) 或一个执行I/O控制行为(如状态反馈)的请求。另外,PnP管理器会创建代表PnP的IRPs和驱动程序必须执行的电源管理操作并且会发送这些IRPs到驱动器。典型的,当用户软件要求读或写操作时,I/O管理器会创建一个读或写IRP并将之传递给置于堆栈顶端的驱动程序,这一驱动程序或者处理请求或者将之传递给下一层级。有些请求会运行到堆栈底部,有些完全由高层驱动程序来处理。每当驱动程序接收一个IRP时,它会同时接收一个指示给能够处理这一操作的设备对象,因此,堆栈中的驱动程序运用设备对象来决定特定请求会进入哪一个嵌入设备。基于框架的驱动程序一般不直接访问IRPs。Kernel模式驱动程序
21、框架会将代表读、写的WDM IRPs和设备I/O控制操作转化为驱动程序能在I/O队列中接收的框架请求对象。框架会处理PnP和内部的电源管理IRPs并通过事件回调函数告知PnP驱动和电源事件。三 Windows驱动程序简介3.1Windows驱动分类 Windows驱动程序分为 NT式驱动程序和WDM式驱动程序,NT式驱动程序不支持即插即用功能,而WDM式驱动程序是支持即插即用功能的一类驱动程序。本文中编写的是WDM式驱动程序,接下来对WDM驱动程序做一个详细介绍。3.2WDM驱动程序对于WDM驱动程序来说,一般都是基于分层的。也就是说,完成一个设备的操作至要由两个驱动设备共同完成。在WDM模型
22、中,完成一个设备的操作,至少有两个设备对象共同完成。其中,一个是屋里设备对象(Physical Device Object),另一个是功能设备对象(Function Device Object).其关系是“附加”与“被附加”的关系。 当PC插入某个设备时,PDO会自动创建。确切的说,是由总线驱动创建的。PDO不能单独操作设备,需要配合FDO一起使用。系统会提示检测到新设备,要求驱动安装驱动程序。需要安装的驱动程序指的就是EDM程序,此驱动程序负责创建FDO并且附加到PDO之上。当一个FDO附加在PDO上的时候,PDO设备对象的子域AttachedDevice会记录FDO的位置。PDO被称作底层
23、驱动或者是下层驱动,而FDO被称作高层驱动或者上层驱动。这里的“上”层指的是接近发出I/O请求的地方,而“下”层指的是靠近屋里设备的地方。PDO和FDO之间的关系可以从图3-1中得到更好的理解。HelloWDM驱动程序 总线驱动程序 FDOAttachedDevice PDOAttachedDevice创建创建图3-1 FDO与PDO这是最简单的一种情况,事实要比这个复杂一些。在FDO和PDO之间还会存在过滤驱动,如图3-2所示。在FDO上面的过滤驱动被称作上层过滤驱动。在FDO的下层的驱动,被称为下层过滤驱动。另外每个设备对象中,有个StackSize子域,表明操作这个设备对象需要几层才能到
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vhdl 语言 实验 系统 后台 pc 支持 程序设计 计算机 本科 学位 论文
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内