微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > PCI设备Windows通用驱动轨范设计

PCI设备Windows通用驱动轨范设计

时间:06-23 来源:互联网 点击:

我们开发了一套通用的PCI设备驱动轨范,它可以完成一般PCI设备驱动所需的功能,可以作为其它PCI设备驱动开发的框架。

1 驱动轨范的模式和开发工具的选择

设备驱动轨范是指打点某个外围设备的一段代码。驱动轨范不会独登时存在,而是操作系统的一部门。经由过程设备驱动轨范,多个历程可以同时使用这些资本,从而可以实现多历程并走运行。不才文中,将挪用设备驱动轨范的PC机轨范称为用户轨范。

Windows 95和Windows NT采用的驱动轨范系统分歧,所以年夜年夜都情形下驱动轨范也不能通用。若是设备需要在Windows 9x/NT下使用,一般至少要设计Windows 9x和Windows NT两个驱动轨范版本。Windows 98 可以兼容Windows 95的驱动轨范,同时它又推出一个新的Win32 Drivers Mode(WDM)驱动类型。Windows 98中有些设备(如USB设备)的驱动轨范必需为WDM模式。这个新的类型现实是在Windows NT的驱动模子的基本上增添了即插即用等内容。WDM驱动也可以用在Windows 2000(先前叫Windows NT 5.0)中。从久远的角度看。此后开发人员只要开发WDM驱动就可以了,但从今朝的市场情形来看,Windows 95是无法抛却的,所以WDM在近一两年还无法替代其它类型的设备驱动。

Intel 80386以上的微措置器有4个优先级别:0级、1级、2级和3级,一般操作系统运行于优先级0级上,而用户轨范运行在3级上,在对硬件操作上有一些限制(具体的限制在分歧的操作系统中是分歧的)。Windows 95撑持的驱动类型良多,但针对一般硬件设备而言,主若是VxD和打印机驱动两类。VxD指的是Virtual Device Drivers。VxD运行在Intel系统的0级上,可以执行特权级指令,对任何I/O设备有全数访谒权,所以年夜年夜都硬件驱动轨范都是VxD。VxD驱动凡是以.vxd为扩展名,放在WindowsSystem目录下,可以在Windows 95启动时装入,也可以在轨范运行时按照需要动态地载入。动态加载有助于节约系统内存和资本。但打印机驱动轨范不是VxD,它运行在3级上。同Windows 95近似,Windows NT的驱动也有可以运行在0级的内核模式(Kernel Mode)和运行在3极的用户模式(User Mode)之分。因为Windows NT禁止用户模式的轨范访谒I/O端口(Windows 95/98则许可用户轨范直接访谒I/O端口),直接节制物理设备的驱动轨范都是内核模式的。而我们设计的PCI通用驱动轨范要求对各类硬件资本访谒,所以应该选择工作在0级的驱动轨范模式。

开发设备驱动采用的首要开发工具是微软为设备开发者供给的软件包Device Driver Kit(DDK)。这个软件包搜罗有关设备开发的文档、编译需要的头文件和库文件、调试工具和轨范典型。在DDK中还界说了一些设备驱动可以挪用的系统底层处事,象DMA处事、间断处事、内存打点处事、可安装文件系统处事等等。这些都是编写设备驱动所必需的。但Windows 95的DDK因为首要使用汇编说话描述。开倡议来斗劲坚苦。是以,我们在Windows 95操作系统中同时采用了Numega公司的产物VtoolsD。VtoolsD是基于C/C++的,撑持Borland C++和Visual C++,使用和维护都较Windows 95 DDK轻易。

2 PCI驱动轨范的特点

在设计驱动轨范之前,首先要对欲节制的硬件设备进行详尽地剖析,更需要具体体味硬件设备的特征。硬件设备的特征会对驱动轨范设计发生重年夜的影响。需要体味的最首要的硬件特征搜罗:

(1)设备的总线结构

设备采用什么总线结构很是关头,因为分歧的总线类型(如ISA和PCI)在良多硬件工作机制上是分歧的,所以驱动轨范设计也分歧。

(2)寄放器

要体味设置的节制寄放器、数据寄放器和状况寄放器,以及这些寄放器工作的特征。

(3)设备错误和状况

要体味若何判定设备的状况和错误旌旗灯号,这些旌旗灯号要经由过程驱动轨范返回给用户。

(4)间断行为

要体味设备发生间断的前提和使用间断的数目。

(5)数据传输机制

最常见的数据传输机制是经由过程I/O端口(port),也就是经由过程CPU的IN/OUT指令进行数据读写。PC的另一种主要的传输机制是DMA,但PCI规范不搜罗隶属DMA的声名。

(6)设备内存

良多设备自身带有内存,PCI设备年夜多是采用映射的体例映射到PC系统的物理内存。有的设备还要经由过程驱动轨范设置设备的接口寄放器。

有关驱动轨范的加载和响应用户请求的内容,在DDK文档中有划定,所以设计设备驱动轨范首要的面临问题是若何进行硬件操作,这是按照设备的分歧而分歧的。而硬件驱动轨范的功能虽然千差万别,但根基功能就是完成设备的初始化、对端口的读写操作、间断的设置、响应和挪用以及对内存的直接读写。如前面所说,Windows 9x和Windows NT的操作系统模子分歧,但驱动轨范

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top