微机原理与接口技术第8章微型计算机应用系统设计案例_第1页
微机原理与接口技术第8章微型计算机应用系统设计案例_第2页
微机原理与接口技术第8章微型计算机应用系统设计案例_第3页
微机原理与接口技术第8章微型计算机应用系统设计案例_第4页
微机原理与接口技术第8章微型计算机应用系统设计案例_第5页
已阅读5页,还剩80页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第8章微型计算机应用系统设计案例8.1微型计算机应用系统设计8.2

PCI总线、USB总线接口设计8.3

Windows驱动程序设计学习目标

本章通过工程应用实例介绍几种典型微型计算机应用系统及其软硬件设计的一般方法。通过学习,要求读者了解常用的微型计算机应用系统,熟悉其硬件设计方法和软件编程思路。

学习重点

(1)常用微型计算机应用系统的类型,典型系统的一般设计方法。

(2) USB总线接口设计及驱动程序编制方法。

8.1微型计算机应用系统设计

概述

在工业生产上用到的计算机应用系统,其具体组成、硬件部件和软件系统,都因使用的目的、对功能的要求和投资的多少而各不相同。现就系统功能、使用目的介绍几种常见的典型计算机应用系统。

1.数据采集和数据处理系统

数据采集和数据处理系统结构如图8-1所示。严格地说,这种系统不由计算机控制,因为计算机并不直接参与控制。这种系统的主要作用如下:图8-1数据采集和数据处理系统结构

(1)生产过程的集中监视。计算机对生产过程(被控对象)的不同变量参数进行巡回检测,并将采集到的数据以一定格式在监视器上显示或通过打印机打印出来,实现对生产过程的集中监视。

(2)操作指导。计算机对采集到的数据进行分析处理,并给出对生产过程控制的建议,由过程的操纵者依给定的建议实现对过程的控制。

2.直接数字控制系统

直接数字控制(DDC)系统结构如图8-2所示。计算机通过输入通道对被控对象进行实时数据采集,并按控制规律进行实时决策,产生控制指令,再通过输出通道,对被控对象实现直接控制。由于这种系统中的计算机直接参与生产过程的控制,所以要求实时性好、可靠性高并且环境适应性强。图8-2直接数字控制系统结构3.监督计算机控制系统

监督计算机控制(SCC)系统结构如图8-3所示。该系统是二级计算机控制系统。其中直接数字控制完成生产过程的直接控制;监督计算机根据生产过程工况和数学模型进行优化分析,将生产的最优设定值作为直接数字控制的指令信号,由直接数字控制系统执行。监督计算机由于承担上一级控制与管理任务,要求其数据处理功能要强,存储容量要大等。图8-3监督计算机控制系统结构4.分散型控制系统

随着工业生产过程规模的扩大和综合管理与控制要求的提高,人们开始应用以多台计算机为根底的分散型控制系统(DCS),如图8-4所示。该系统采用分散控制原理、集中操作、分级管理与控制和综合协调的设计原那么,把系统从上而下分成生产管理级、控制管理级和过程控制级等,形成分布式控制。各级之间通过数据传输总线及网络相互连接起来。系统中的过程控制级完成过程的检测任务。控制管理级通过协调过程控制器工作,实现生产过程的动态优化。生产管理级完成制定生产方案和工艺流程以及对产品、人员、财务管理实现静态优化。随着企业生产规模的逐步扩大,对生产过程自动化各项指标的要求越来越高,系统向着更加复杂、更加高级的方向开展,但同时对其工作可靠性的保证有着更高的要求。

自微型计算机出现后,因其体积减小、本钱大幅度下降、可靠性不断提高而改变了以往只使用由一个CPU组成的装置实现对多个回路自动控制的概念。人们通过实践发现,生产过程中的每一个局部使用各自独立的带CPU的控制单元来完成其自动控制作用,其控制功能会得到加强,工作更加可靠,维修更加方便,性能价格比会显著提高,这就是分散型控制系统的设计思想。这一设计思想已被越来越多的人所接受。图8-4分散型控制系统分散型控制系统虽然能完成生产过程中各个局部的控制作用,但是各单元之间并无直接的联系,于是人们又使用一台档次较高的上位计算机对各分散的下位控制单元进行统一的管理。上位机根据接收到各下位控制单元送来的数据,经过分析和处理后对下位控制单元进行监督控制,实现对整个生产过程控制的协调和优化。上位机必要时还可以对生产过程进行编制方案,对原材料及能源的调度、本钱核算、库存管理、打印统计报表等进行管理。微型计算机应用系统设计举例

1.企业数据采集与网络管理系统

现在中小型企业的生产设备中,多数设备的电气控制和监控繁琐,不能有效地对工作现场的控制设备进行精确的操作,而且大多数设备之间独立工作,不能形成一个完整、有效的管理体系。各设备的操作结果必须由操作人员单独向有关负责人汇报或集中汇总后再上交给企业决策管理部门,其手续繁杂、效率低下,不能及时准确地将生产情况反响到管理部门,这是一种陈旧的管理模式。采用“企业数据采集与网络管理系统〞可以彻底改变这种效率低下的生产方式,提升和促进企业生产效率及竞争力水平,这也是现代企业管理的开展方向。这个系统对目前使用的各种生产设备进行信息化改造,对所有生产数据进行处理并发送到网上,做到了无纸化作业,保证了生产数据的科学性和可靠性,并实现了数据共享。

1)生产设备的分布情况

假设该企业所管理的设备分布在五个车间,系统对五个车间的重要加工设备和试验台加装了下述数据采集与通信装置,其生产设备分布示意图如图8-5所示。图8-5设备分布示意图2)数据采集与网络管理系统设计

(1)系统总体构成。本系统是一个基于网络通信(包括以太网络通信和RS-485总线网络通信)的设备数据采集和监控系统,主要由效劳器、以太网络、上位机监控系统、RS-485总线网络、设备数据采集及通信系统和系统管理对象组成。该系统是集网络通信技术、单片机技术、数据库技术和高级编程语言程序设计于一体的综合工程,这些技术相互联系,相互交叉。整个系统的结构见图8-6。图8-6系统构成网络图

(2)车间级网络。每个车间设一台设备监控计算机,用于管理本车间各台设备。每台设备配置一台数据采集装置。图8-7是一个车间内的设备通信总线连接及设备数据采集装置图。图8-7车间一级设备网的组成

(3)设备数据采集系统。每台设备数据采集子系统包括CPU控制电路、薄膜键盘控制、隔离数据采集电路(根据信号类型和路数设计,有隔离模拟量、开关量、脉冲量、数字量、单总线数字网络等各种形式)、隔离开关电源、LCD汉字图形显示器、通信网络接口等,如图8-8所示。图8-8设备数据处理子系统

3)系统的优点

本系统能够继续利用企业各种现有设备,通过加装数据采集接口、汉字图形显示器和网络通信接口,改造传统设备,实现车间生产设备数字化;可以对生产工作进行准确的检测和数据处理,并把检测数据及时送监控计算机,存入数据库,进行统计、打印和归档;可以为保证生产质量提供可靠依据,为企业加强科学管理、提高经济效益、减少物料和工时浪费、提高检修效率提供科学手段和工具。2.自动化仓储系统

自动化仓储系统包含了以下几个方面的含义:

(1)自动化仓储系统包括多层货架、运输设备以及计算机控制和通信系统。

(2)自动化仓储系统以高层立体货架为标志,以成套先进的搬运设备为根底,以先进的计算机控制技术为主要手段,高效率地利用仓储空间,节约时间和人力进行货物出入库作业。

(3)自动化仓储系统的设计和规划是集物流监控技术、计算机应用技术、通信技术、设备及货位优化管理技术等于一体的综合工程工程。

图8-9自动化仓储系统的网络构成图现场操作人员可以利用触摸屏设备方便地进行参数设置和在线修改,实现演示和管理功能。

(1)检测装置。为了实现对自动化仓储系统中各种作业设备的控制,并保证系统平安可靠地运行,自动仓储系统必须具有多种检测装置。检测装置连接到I/O模块,通过对检测数据的判断、处理,为系统决策提供最正确依据,使系统处于理想的工作状态。

(2)信息识别。信息识别的作用在于完成对货物名称、类别、货号、数量、等级、目的地、生产厂的识别。在自动化仓储系统中,通常采用条形码、磁条、光学字符和射频等识别技术。其中条形码识别技术应用最为普遍。本系统中计算机管理信息系统通过对货物在进出仓库时的信息识别对货物进行管理。

(3)控制装置。控制装置是自动化仓储系统运行成功的关键。为了实现自动运转,自动化仓储系统中所有的存取设备和输送设备本身必须配备各种控制装置。这些控制装置种类较多,从普通开关、继电器,到微处理器、单片机和可编程控制器(PLC),根据各自的设定功能完成一定的控制任务。

(4)监控及调度。监控系统是自动化仓储系统的信息枢纽。自动化仓储系统许多设备的运行都需要由监控系统统一调度,通过监控系统的监视画面可以直观地看到各设备的运行情况。本系统中管理级上位机配置PROFIBUS通信卡CP5611,PROFIBUS-DP网络。应用VisualBasic高级语言编制监控程序,将现场情况以形象直观的图形界面显示给控制室操作人员,完成实时管理控制功能。(5)计算机管理。计算机管理系统完成对整个仓储系统的账目管理和作业管理,并负责与上级系统的通信和企业信息管理系统的局部任务。本系统利用MicrosoftSQL2000对仓储系统的数据进行账目管理。

(6)数据通信。自动化仓储系统是一个复杂的自动化系统,它是由众多的子系统组成的。为了完成规定的任务,各系统之间、各设备之间要进行大量的信息交换。本系统中采用PROFIBUS现场总线、红外光传输等方式。

(7)大屏幕显示。在操作现场,操作人员可以通过显示设备的指示进行各种搬运、拣选和添加操作;在控制室,人们通过屏幕观察现场的操作以及设备的运行情况。

8.2

PCI总线、USB总线接口设计

PCI总线与DSP通信接口电路设计

1. PCI总线接口电路的实现方法

PCI总线接口电路有两种实现方法:一种是采用可编程逻辑器件CPLD或FPGA实现通用PCI接口;另一种是采用类似于QuickLogic公司的一次性可编程芯片来处理,每片可编程芯片内都内嵌PCI接口电路,也可根据应用的需要来裁剪烧写,但只能烧写一次。2. PCI总线接口芯片选择

目前市场上提供的专用芯片主要有AMCC、PLX和Cypress等公司的系列产品。从市场情况来看,PLX是PCI接口芯片的行业巨头,该公司提供多个系列的产品,例如主设备接口芯片9060、9080、9054等,从设备接口芯片9030、9050、9052等,分别支持“主控〞和“从控〞两种模式。所谓“主控〞,就是PCI接口芯片可以让用户电路控制PC资源,即主动对目标设备发读写信号;“从控〞那么只能让PC来控制用户电路工作,而用户电路只能被动接受,就像ISA总线一样。在支持该模式的芯片中,9030专门为嵌入式设计,支持CompactPCI;9050专门为ISA设备转换PCI总线接口而设计;9052是9050的升级版本。这些芯片价格低廉,不支持DMA,适合于设计基于PCI总线的以中断、查询方式与主机交互的系统。3. PCI9052的主要特点

PCI9052是PLX公司继PCI9050之后推出的低本钱PCI总线目标接口芯片,符合PCI2.1标准,采用CMOS工艺,低功耗,PQFP160引脚封装。其主要特点如下:

(1)包括一个64 B的写FIFO存储器和一个32 B的读FIFO存储器,可实现高性能的突发式数据传输。

(2) ISA模式下支持PCI总线到ISA总线的单周期存储器(8位或16位)读写和I/O访问,实现ISA总线到PCI总线的平滑过渡。

(3)支持两个来自局部总线的中断,可生成一个PCI中断,利用软件写内部存放器位也可以到达同样的目的。(4) PCI 9052的局部总线与PCI总线的时钟相互独立运行,局部总线的时钟频率范围为0~40 MHz,TTL电平,PCI的时钟频率范围为0~33 MHz,两种总线的异步运行方便了上下速设备的兼容。

(5)可编程的局部总线配置,支持复用或非复用模式的8、16或32位的局部总线。

(6)串行E2PROM提供PCI总线和局部总线的局部重要配置信息。

(7) 4个局部设备片选信号,各设备的基址和地址范围及其映射可由串行E2PROM或主机编程实现。

(8) 5个局部地址空间,基址和地址范围及其映射可由串行E2PROM或主机编程实现。

(9)可对局部总线的预取计数器编程为0(非预取)、4、8、16或连续(预取计数器关闭)预取模式。

(10) PCI锁定机制,PCI主控设备可以通过锁定信号独占对PC 9052的访问。

4. PCI9052的工作原理图8-10

PCI9052的总线结构5. DSP芯片TMS 320LF2407介绍

TMS 320LF2407器件是美国TI公司开发的面向电机控制的低本钱、高性能的DSP器件。TMS 320LF2407的指令周期只有33 ns,可以很好地满足系统的实时性要求,能够实现复杂的控制算法。

TMS 320LF2407在单片处理器中集成了高性能的TMS320CxLPDSP内核(运算能力为30MIPS),为电机控制而优化的事件管理器及PWM输出接口,可同时完成采样的双工A/D转换器,并行的电机电流读数转换与通信,Flash存储器或ROM程序存储器,还包括同步、异步串行外设接口,比较单元,通用定时器及与光电编码器接口的编码单元等资源。

TMS 320LF2407的主要特点如下:

(1)采用高静态CMOS技术,使得供电电压降为3.3 V,减小了控制器的功耗;30MIPS的执行速度使得指令周期缩短到33 ns(30 MHz),提高了控制器的实时控制能力。

(2)基于TMS320C2xxDSP的CPU核保证了TMS320LF240X系列DSP代码和TMS320系列DSP代码兼容。

(3)片内高达32K字的FLASH程序存储器,高达1.5K字的数据/程序RAM,544字双口RAM(DARAM)和2K的单口RAM(SARAM)。

(4)两个事件管理器EVA和EVB,各包括两个16位的通用定时器和8个16位的脉冲调制(PWM)通道。

(5)扩展的外部存储器(LF2407)总共192K字:64K字程序存储器;64K字数据存储器;64K字I/O寻址空间。

(6)看门狗定时器模块(WDT)。

(7)基于锁相环的时钟发生器。

(8)高达40个可单独编程或复用的通用输入/输出引脚(GPIO)。

(9) 5个外部中断(两个驱动保护、复位和两个可屏蔽中断)。

6. PCI与DSP通信电路

PC通过PCI总线与DSP的通信电路如图8-11所示。这种应用接口可被应用于通信、多媒体、数控系统等设备。

由于DSP与PC之间需要高速地传送大量的数据,为了提高两者之间的通信速度,在PCI9052与DSP之间参加了双口RAM。双口RAM作为一种特殊的RAM芯片,在高速数据采集处理系统中得到了广泛应用。它具有两个独立的端口,两端口各自均有一套独立的数据总线、地址总线和控制总线,允许两个端口独立地对存储器中的任何单元进行存取操作。当两个端口同时对存储器中的同一单元进行存取操作时,可由其内部仲裁逻辑决定优先权。图8-11

PCI总线与DSP的通信电路双口RAM芯片的型号为美国IDT公司生产的IDT7132,它是2 K × 8高速静态双口RAM,存取速度为35 ns,在数字信号处理领域应用比较普遍。它的时序与DSP的时序相配合,特别适用于DSP与PC之间的大量数据高速双向传送。该芯片提供两个带有自身的控制、地址和I/O引脚的独立端口。IDT7132带有片内硬件端口仲裁电路,可以允许双机同步地读或写存储器中的任何单元,同时保证数据的完整性。它的竞争原那么是:左右两端口的地址信号同时到达,首先处理CE片选信号先到的一端,慢的一方BUSY线下拉,直到快的一方访问完毕;左右两端口的片选信号同时到达,首先处理访问地址信号先到的一端,慢的一方BUSY线下拉,直到快的一方访问完毕。

采用双口RAM作为TMS320LF2407与PC主机之间的通信接口不但可以简化通信接口电路的设计,而且提高了数据交换的速度,增强了控制的实时性。由于只用到了双口RAM的16个地址,DSP的地址线A4~A10与IS信号进入CPLD进行译码对双口RAM片选。LRDYi信号和两侧的BUSY信号也进入双口CPLD进行相应的逻辑判断。由于双口RAM的数据信号电平为5 V,因此在与3.3 V的DSP之间进行数据传输时需要74LVTH245进行电平转换。USB总线与DSP通信接口电路设计

1. USB接口芯片选择

按芯片的构架来划分,市面上的USB控制器芯片可以分为不需要外接微处理器的和需要外接微处理器的两类芯片。内嵌通用微控制器的USB控制芯片,一般是在通用微控制器的根底上扩展了USB功能,其优点是开发者熟悉这些通用微控制器的结构和指令集,相关资料丰富,易于开发,如Cypress基于8051的EZ-USB系列、Microchip基于PIC的16C7x5、Motorola基于68HC08系列的68HC08JB8、Atmel基于AVR的AT76C711等USB控制芯片。对于是需要外接微控制器的芯片,只处理与USB相关的通信工作,而且必须由外部微控制器对其控制才能正常工作,这些芯片必须提供一个串行或并行的数据总线与微控制器进行连接。其优点是芯片价格廉价,而且便于用户使用自己熟悉的微控制器进行开发,如Philiphs公司的PDIUSBD12和ISP-1581。

按传输速度上下,USB控制器芯片可分为支持USB1.1协议的低速系列、全速系列和支持USB 2.0协议的高速系列。PDIUSBD12属于前者,而ISP-1581属于后者。

由于用高性能的DSP处理器作为核心,对数据传输的实时性和传输速度有较高的要求,因此选用Philiphs公司的ISP-1581接口芯片。2. ISP-1581的特性

ISP-1581是Philiphs公司在原有PDIUSBD12芯片的根底上开发的一款高速USB接口芯片。运动控制器主要涉及的ISP-1581芯片的特性如下:

(1)高性能的USB接口器件,集成了串行接口引擎(SIE)、PIE、FIFO存储器、数据收发器和3.3 V的电压调整器。

(2)支持USB 2.0的自检工作模式和USB 1.1的返回工作模式。

(3)7个IN端点、7个OUT端点和1个固定的控制IN/OUT端点。

(4)集成8 KB的多结构FIFO存储器。

(5)端点的双缓冲配置增加了数据吞吐量并可轻松实现实时数据传输。(6)同大局部的微控制器/微处理器有单独的总线接口。

(7)集成了PLL的12 MHz晶体振荡器,有良好的EMI特性。

(8)集成了5 V到3 V的内置电压调整器。

(9)可通过软件控制与USB总线连接(Softconnect)。

(10)符合ACPI、OnNOW和USB电源管理的要求。

(11)可通过内部上电复位和低电压复位电路复位,也可通过软件复位。3. ISP-1581的工作原理

1) ISP-1581的引脚介绍

ISP-1581芯片的64个引脚按照功能分为电源供给引脚、扩展总线引脚、系统相关引脚、系统时钟引脚、外扩总线控制信号和外中断输入引脚等6类。图8-12给出了ISP-1581芯片的局部引脚。图8-12ISP-1581局部引脚图(1)电源供给引脚:ISP-1581电源共占用13个引脚。其中:VCC(5.0 V)为外部供电;VCCA及VCC(3.3 V)为内部供电,不能用来驱动外部器件;DGND为数字地;AGND为模拟地。在所有的供电引脚上增加一个去耦电容(0.1 μF),同时并联一个0.01 μF的电容以得到良好的EMI性能。

(2)扩展总线引脚:AD0~AD7在通用处理器模式下用作地址总线,在断开总线模式下用作复用地址/数据总线,微控制器利用它来控制ISP-1581。DATA0~DATA15在通用处理器模式下用作DMA总线和系统总线,通过它来控制ISP-1581。但是,在断开总线模式下DATA0~DATA15仅用作DMA总线。

(3)系统相关引脚:这些是与系统配置和调试相关的其他引脚,包括系统复位引脚RESET和系统出厂时测试引脚TEST。

(4)系统时钟引脚:晶体振荡器输入XTAL1,连接一个根本的并联振荡电路或一个外部时钟源(此时XTAL2悬空);晶体振荡器输出XTAL2,连接一个根本的并联振荡电路,当XTAL1连接一个外部时钟源时,该引脚悬空。

2) ISP-1581的相关存放器

ISP-1581拥有地址存放器、方式存放器、中断配置存放器等诸多存放器,对这些存放器的理解与操作对于软件开发中建立USB与DSP的通信具有重要的意义。下面对其中一些比较重要的存放器进行简要介绍。

(1)地址存放器:该存放器用来设置USB的分配地址并激活USB设备。它的各位分配如表8-1所示。只要出现总线复位、上电复位和软件复位三者之一,DEVEN和DEVADDR清零。为响应标准USB的SET_ADDRESS请求,固件必须先将设备地址写入地址存放器,再发送一个空包给主机。当主机识别空包后,这个新设备被激活。

(2)方式存放器:该存放器是一个单字节的存放器。其位分配见表8-2。在16位总线模式下对其进行访问时忽略高字节。方式存放器控制着重新开始、挂起和唤醒行为、中断活动、软件复位、时钟信号和软件连接操作。(3)中断配置存放器:该存放器是单字节存放器,它决定了INT输出的动作和极性。其位分配见表8-3。当USB的SIE接收或产生一个ACK、NAK或STALL时,就根据以下三种位域调试方式来产生中断:

CDBGMOD:控制端点0中断。

DDBGMODIN:端点1到7的DATAIN中断。

DDBGMODOUT:端点1到7的DATAOUT中断。

用户分别对CDBGMOD、DDBGMODIN和DDBGMODOUT的调试方式进行设置,操作时ISP-1581将向外部微处理器发送一个中断请求。存放器的INTPOL位控制INT输出的信号极性(高/低电平有效,上升沿/下降沿)。假设选择电平触发方式,INTLVL必须为0。假设INTLVL设置为1,将产生一个60 ns的脉冲(边沿触发)触发产生中断。(4)中断使能存放器:该存放器用来激活/禁止单个中断源。存放器中的IEPnRX或IEPnTX位可以屏蔽所有的中断。当USB的SIE在USB总线上接收或产生一个ACK或NAK时,就产生一次中断。中断的产生还依赖于位域CDBGMOD、DDBGMODIN和DDBGMODOUT调试方式的设置。

所有数据的IN处理通过位DDBGMODIN控制的发送缓冲区(IX)来实现;所有数据的OUT处理那么通过位DDBGMODOUT控制的接收缓冲区来实现。而位CDBGMOD用于控制端点0的传输(IN、OUT和SETUP)。由USB总线上的事件(SOF、假SOF、挂起、重新开始、总线复位、Setup和高速状态)所产生的中断也能被分别控制。除位IEBRST(总线复位)控制的中断之外,总线复位信号可以将所有激活的中断禁止。总线复位时,IEBRST的值不变。中断使能存放器包含4个字节。(5)端点索引存放器:该存放器是一个字节的存放器,它为微控制器对存放器的访问提供了目标端点。其位分配如表8-4所示。索引存放器包括:端点MaxPacketsize、端点类型、缓冲区长度、数据端口、短包、控制功能。

例如,向端点索引存放器引入02H,即可通过数据端口存放器对端点1的OUT数据缓冲区进行访问。(6)端点类型存放器:该存放器用于设置索引端点的端点类型——同步、批量或中断。它还可以使能端点和设置双缓冲区,并可通过位NOEMPKT使一个长度为0的TX缓冲器空包自动禁止。该存放器包含2个字节,其位分配如表8-5所示。

4.USB总线与DSP通信电路设计图8-13

USB总线与DSP的通信电路示意图

8.3

Windows驱动程序设计

设备驱动程序是连接计算机应用程序、硬件以及操作系统的桥梁,是硬件设备连接到计算机系统的软件接口。在Windows环境下开发应用系统经常遇到对特定功能的硬件设备进行访问和控制的问题。Windows系统的CPU提供4种特权等级,通常称为Ring0、Ring1、Ring2、Ring3,其中Ring3特权级别最低,Ring0特权级别最高。操作系统和设备驱动程序运行在Ring0级别上,可以执行任何有效的CPU指令;普通应用程序(包DLL)运行在Ring3级别上,硬件I/O指令不能被执行,所以必须开发设备驱动程序,以使应用程序有效地控制计算机硬件设备。

驱动程序概述

驱动程序主要有两个作用:

(1)为应用程序提供一个软件接口,使其能够对设备进行翻开、关闭、读写等操作。

(2)实现与硬件之间的数据交换。1. WDM驱动程序层次

WDM(Win32DriverModel),即Win32驱动程序模型,支持即插即用(PnP)和电源管理,支持USB、IEEE1394、ACPI等硬件标准。WDM体系结构实行分层处理,即设备驱动被分成假设干层,如高层驱动程序、中间层驱动程序、底层驱动程序。每层驱动再把I/O请求划分成更简单的请求,以传给更下层的驱动执行。最底层的驱动程序在收到I/O请求后,通过硬件抽象层与硬件发生作用,从而完成I/O请求工作。如图8-14所示,WDM模型是建立在物理设备对象(PhysicalDeviceObject,PDO)和功能设备对象(FunctionalDeviceObject,FDO)的结构化分层根底上的。WDM模型为了适应即插即用系统,重新定义了驱动程序分层,它至少存在总线驱动程序和功能驱动程序,根据需要还可选择过滤器驱动程序。一个硬件只允许有一个PDO,但却可以拥有多个FDO,在驱动程序中不是直接操作硬件而是操作相应的PDO与FDO。在Ring3与Ring0通信方面,操作系统将每一个用户请求打包成一个IRP(I/ORequestPacket)结构,将其发送至驱动程序,并通过识别IRP中的PDO来识别是发送给哪一个设备的。另外,在驱动程序的加载方面,WDM是依靠一个128位的GUID(全球唯一标识)来识别驱动程序的。图8-14

WDM驱动程序的模型

2.驱动程序开发工具

常用的WDM驱动程序开发工具有WinDriver、DriverWorks和DDK等。

WinDriver是Jungo公司推出的驱动程序开发工具,适合于开发纯硬件驱动,能自动探测插在机器上的硬件参数。WinDriver在Windows系统下开发的驱动程序不需要做任何修改,就可以用于Windows9x、WindowsNT、Windows2000等系统。其优点是开发周期短;缺点是只能开发硬件相关的驱动程序,开发的驱动程序效率不高。

DriverWorks是Numage公司出品的DriverStudio套件中的一个开发工具,主要用来开发WindowsNT和Windows2000系统驱动程序。DriverWroks用于开发KMD和WDM驱动程序,并且对DDK函数进行了类的封装,从而为开发Windows9x、WindowsNT和Windows2000WDM设备驱动程序提供了一个自动化的方法。

DDK(DriverDevelopmentKit)是Microsoft提供的驱动程序开发工具。利用DDK开发驱动程序需要对整个体系结构有很好的理解,这种方法开发驱动程序的难度和工作量较大,但更加灵活并且驱动程序的效率更高。一般来说,驱动程序的开发可以采用如下方式:用WinDriver开发驱动程序的原型,用DriverWorks开发最终发行的驱动程序。如果驱动程序很复杂,那么直接使用DDK开发。上述开发方式都需要VC++作为辅助开发环境。前两种方式都需要DDK。在开发时间上,第一种方式最短,第三种方式最长,第二种方式可以认为是第一种和第三种方案的折衷。下面简要介绍利用DDK开发驱动程序的过程。

3.驱动程序设计步骤

在WDM驱动程序设计中首先写一个DriverEntry过程,这是每个设备驱动程序的入口,该程序启动时被系统自动调用。在DriverEntry中完成驱动程序的初始化工作。在一个WDM驱动程序中,初始化是唯一必不可少的。要使一个驱动程序能够实现对硬件设备的驱动,还应该有一些其他的回调例程和分发例程来处理各种IRP,如:DriverUnload

AddDevice

StartIo

MajorFunction[IRP_MJ_PnP]

MajorFunction[IRP_MJ_CREATE]

MajorFunction[IRP_MJ_CLOSE]

MajorFunction[IRP_MJ_READ]

MajorFunction[IRP_MJ_WRITE]

MajorFunction[IRP_MJ_DEVICE_CONTROL]

MajorFunction[IRP_MJ_POWER]

MajorFunction[IRP_MJ_SYSTEM_CONTROL]

在初始化过程中,所要做的工作就是设置各回调例程的入口指针,使这些回调例程能够响应相应的IRP。这些回调例程中包括以下几种比较常用的例程:

(1)DriverUnload:系统在卸载设备时调用DriverUnload。DriverUnload例程负责在驱动程序被停止前做一些必要的处理,如释放资源、记录最终状态等。

(2) AddDevice:系统在发现新的硬件设备时调用AddDevice。AddDevice例程主要完成创立设备对象;注册一个或多个设备接口,以便应用程序能够发现设备的存在,把新设备对象放到设备栈上。(3)StartIo:驱动程序的分发例程必须是可重入的,通常采用的方法是使用I/O管理器的效劳创立一个IRP设备队列,分发例程把IRP放在设备队列中,由I/O管理器调用StartI,一次处理一个IRP。在StartIo中,一般是处理具体的输入/输出请求。当StartIo例程完成一个IRP时,它应调用内核,保证对下一个可用的IRP可再次调用。

(4) MajorFunction[IRP_MJ_PnP]:当发生设备到达、硬件配置文件改变、设备被删除等情况时,PnP管理器发出PnPIRP,调用MajorFunction[IRP_MJ_PnP]例程,MajorFunction[IRP_MJ_PnP] 例程对这些PnPIRP进行处理。对于驱动程序分配的资源,如I/O端口、存储器地址、中断和DMA端口等,WDM驱动程序是在收到“启动设备〞PnPIRP时被告知这些设备资源的。

(5) MajorFunction[IRP_MJ_CREATE] 和MajorFunction[IRP_MJ_CLOSE]:这两个例程在用户调用CreateFile和CloseHandle时被调用,为即将到来的读写操作做准备或做一些读写完成后的必要处理。

(6) MajorFunction[IRP_MJ_READ] 和MajorFunction[IRP_MJ_WRITE]:当用户调用ReadFile从设备读取数据或WriteFile向设备写数据时,系统发出[IRP_MJ_READ]或[IRP_MJ_WRITE]IRP调用这两个例程之一。在这两个例程中,或者将IRP挂接在相应的IRP队列上供StartIo处理,或者将这些IRP变成对硬件实际的输入/输出直接访问I/O端口、存储器地址、启动中断、DMA等操作。

(7) MajorFunction[IRP_MJ_DEVICE_CONTROL]:对设备进行一些自定义的操作,如更改设置等,在用户调用DeviceIoControl时被调用。该例程通过IRP获得用户的请求号,以及一个指向用户缓冲区的指针与用户程序进行通信,完成一些特定的I/O操作,如设备的设置等。

(8) MajorFunction[IRP_MJ_POWER]:电源管理IRP,可以对设备进行电源管理。如果不需要对设备进行电源管理,只需把“电源管理〞IRP简单地传递给设备栈中下一层驱动程序即可。

(9) MajorFunction[IRP_MJ_SYSTEM_CONTROL]:驱动程序通过处理“系统控制〞IRP来支持WMI(Windows管理诊断扩展)生成系统诊断和性能信息。与电源管理一样,可以简单地把这个IRP沿设备栈向下传递。此外,还有以下几个回调例程:

(1) ISR:中断效劳例程,当与设备连接的中断产生时,调用此例程。

(2) DpcForIsr:由于中断处理过程运行于较高的优先级上,它们能屏蔽许多级别低于或等于它们的过程的执行,如果它们占用CPU时间过长,很容易使系统性能下降,因此,中断效劳例程应尽可能快地执行完。然而有的中断效劳例程需要完成很多任务,因而为不影响系统性能,除最紧迫的任务外,其他的局部放在一个被称为延迟过程调用(DPC)的例程中来完成。PCI设备的驱动程序设计中应注意以下一些问题:

对于PCI设备来说,PCI设备通常会占用一些硬件资源,如I/O端口、存储器地址、中断和DMA等。当驱动程序收到“启动设备〞PnPIRP时,告知这些设备资源。驱动程序必须在处理“启动设备〞PnPIRP时获得这些资源,供以后使用。一旦有了I/O端口或内存的地址,读写硬件存放器等工作就变得非常直接,对硬件存放器的读写就像访问普通内存一样容易。需要注意的是,对硬件存放器的访问,占用处理器的时间不要超过50 μs。另外,必须使用某种机制保证驱动程序的不同局部不同时地访问相同的硬件。在一个多处理器系统中,“写〞IRP处理程序可以同时在两个不同的处理器上运行。如果它们两个都试图访问相同的硬件,那么会出现不可预知的结果,即使是在单处理器系统中,也存在两个不同进程同时访问相同硬件的可能。有两个不同的机制可以排除这些冲突。第一

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论