PCI总线电机控制卡的WDM设备驱动程序设计
,一定要确定PCI设备不会产生中断请求,最好在PCI设备上电后,中断为屏蔽状态。在连接中断后,调用开启中断请求的函数需要同步处理,以防在函数的执行中,出现运行时间上的错误,而且在开启中断时,一定要在所有的硬件资源分配以后,否则如果有中断产生,系统就会立即调用中断处理例程,如果例程中使用了还没有分配的资源,就会出现意想不到的结果。
在中断服务例程中,相应的处理最好简洁快速,因为中断例程运行的级别很高,当有中断请求时,不但会打断应用程序的执行,而且会打断在硬件中断级以下的所有运行程序。在WDM中,提供了DPC(DeferredProcedureCall)例程,将在中断例程中耗时的但不需要立即处理的任务延时处理。比如,驱动程序接受应用程序的写PCI设备的数据,当写完后,硬件产生中断标志执行完毕,这时需要结束该IRP,就可以将结束IRP这个耗时的任务交给DPC完成。
在该实例中,由应用程序调用函数WriteFile,将数据传递给驱动程序,驱动程序的DispatchWrite例程负责处理该IRP,在该例程中,由于需要中断的配合,假定无法立即执行完毕,必须将IRP串行化,StartIo例程如果没有其他任务,就开始处理该IRP,处理完毕后立即返回,但不能结束IRP,当PCI设备完成操作后,就会产生中断,在中断服务例程中把IRP交给DPC,在DPC中处理完后结束该IRP。お
5驱动程序的安装与应用
Windows98和Windows2000是依靠INF文件来得到硬件设备驱动程序的安装信息的一个设备信息文件(INF)。只要将文件中双引号中的提示改为相应的内容即可生成我们自己的设备信息文件。
[Strings]
ProviderName=“yourcompanynamehere”//公司名称
MfgName=“NameofHWmanufacturerhere”//硬件制造商名称
DeviceDesc=“Descriptionofdevicehere”//设备描述
DeviceClassName=“Descriptionofdeviceclasshere”//设备类的描述
当系统加电时,WINDOWS操作系统会自动检测所有外设,当第一次检测到我们的设备时系统会提示用户指定新硬件的驱动程序。根据提示指定了我们修改过的INF文件,以及编译后生成的.sys系统文件系统就自动安装好了新硬件的驱动程序。或者可以用控制面板中的添加新硬件来搜索新硬件。
驱动程序安装好以后,在应用程序中就可以像打开其他驱动程序(如虚拟设备驱动程序VxD)一样用CreateFile打开设备。お
6基于PCI总线的电机运动控制卡
图2为该系统硬件组成框图,该控制卡采用PCI总线实现主计算机与控制卡之间的信息传递。控制卡上有2个伺服控制专用芯片LM628,分别用于控制伺服电机;来自2个伺服电机的增量式码盘输入信号(A相、B相和Z脉冲),经电平变换后分别送入LM628经四倍频和计数后作为反馈信号,由LM628根据主计算机给定的位置、速度、加速度生成梯形轨迹速度曲线作为给定值,实现伺服电机的反馈控制。主计算机对该控制器发送命令,伺服控制器即按给定的运动形式输出相应的数字信号,本卡中LM628工作于8位工作方式,产生输出到功率放大器件。
应用PCI总线目标接口芯片PCI9052完成控制卡的接口部分,专用运动控制处理芯片LM628完成对电机的控制,再加上相应的电路,即实现了基于PCI总线的精密电机运动控制卡的硬件设计。お
7结束语
WDM用一个相对独立的模块来处理设备数据的传输,驱动程序在这个模块中启动或停止设备,并实现中断或其他方式的输入输出操作。WDM使驱动程序的结构非常清晰、完整,也使中断I/O方式的设备驱动程序的设计和实现更加方便、快捷。应用WDM编制的设备驱动程序在本电机控制卡得到很好的应用。
设备驱动 程序设计 WDM 控制卡 总线 电机 PCI 相关文章:
- Linux操作系统网络驱动程序编写(04-11)
- Linux系统对ISA总线DMA的实现(06-19)
- 基于MPEG-4的嵌入式多媒体监控系统中压缩/解压卡的设计与实现(10-15)
- 基于Linux平台的FPGA驱动开发(08-03)
- 基于嵌入式的故障诊断专家系统驱动程序设计(11-29)
- XScale PXA270在Linux下的FPGA设备驱动(04-12)