0 引言
目前,开放式数控系统正得到日益广泛的应用,其中控制工程网版权所有,基于Windows和PC机的开放式数控系统将成为数控技术发展的趋势。本文研究的数控系统采用NC嵌入PC的开放式结构,并以Windows 2000操作系统为平台。NC嵌入PC型数控系统是指将运动控制卡插入计算机的扩展槽中,由PC机完成非实时性处理任务,实时控制则由运动控制卡来承担。由于在Windows环境下,用户态的应用程序不能直接访问硬件,而要通过调用执行于核心态的设备驱动程序间接地访问硬件资源,因而,应用程序要对该数控系统中的运动控制卡进行访问,必须为其开发设备驱动程序。
本文以该数控系统中基于PCI总线的DSP运动控制卡为研究对象,主要讨论该运动控制卡在Windows 2000环境下的WDM驱动程序的设计。
1 WDM驱动程序的结构及开发工具简介
1.1 WDM驱动程序的结构
Windows Driver Model (WDM)驱动程序是一种PnP(即插即用)驱动程序,它同时还遵循电源管理协议,并能在Windows 98,Windows 2000和Windows XP间实现源代码级兼容。在WD
WDM驱动程序采用分层的结构模型www.cechina.cn,如图1所示[2]。图1中左边是一个设备对象堆栈,设备对象是操作系统为帮助软件管理硬件而创建的数据结构。处于堆栈最底层的设备对象称为物理设备对象,简称为PDO。在设备对象堆栈的中间有一个对象称为功能设备对象,简称为FDO。在FDO的上面和下面还会有一些过滤器设备对象,简称为FiDO。位于FDO上面的过滤器设备对象称为上层过滤器,位于FDO下面的过滤器设备对象称为下层过滤器。在单个硬件的驱动程序堆栈中CONTROL ENGINEERING China版权所有,总线驱动程序管理计算机与PDO所代表的设备的连接。功能驱动程序管理FDO所代表的设备。过滤器驱动程序用于监视和修改I/O请求包(IRP)流。
图1 WDM设备对象和驱动程序的层次结构
1.2 开发工具简介
开发驱动程序的软件很多,如NuMega公司的DriverStudio、Jungo公司的WinDriver和Microsoft公司的DDK等。在使用中,虽然利用DDK开发的驱动程序代码非常简洁,结构清晰,效率也高,但是开发难度较大[3]。利用DriverStudio、WinDriver等第三方开发工具则使用简单,开发速度较快。因此选用NuMega公司提供的DriverStudio作为开发工具。
NuMega公司的DriverStudio是一套用来简化微软Windows平台下设备驱动程序的开发、调试和测试的工具包。DriverStudio包括DriverWorks、DriverNetworks、SoftICE和VToolsD等工具模块。其中控制工程网版权所有,DriverWorks包含一个非常完善的源代码生成工具(DriverWizard)以及相应的类库和驱动程序样本,它提供了在C++下进行设备驱动程序开发的支持。
2 运动控制卡的硬件结构
所设计的运动控制卡采用TI公司的TMS320LF2407 DSP芯片为核心处理器。该运动控制卡的硬件系统包括PCI接口子模块、数字信号处理器(DSP)子模块和轴控制接口子模块。
该运动控制卡的PCI接口采用PLX公司的PCI9052接口芯片,这是PLX技术公司为扩展适配板卡推出的能提供一种混合高性能PCI总线目标模式的接口芯片。它可与多种局部总线相连,并具有异步操作、中断产生器、FIFO等特点。运动控制卡与上位PC机通过PCI总线进行连接www.cechina.cn,PCI接口子模块通过双端口存储器RAM器件IDT7026与DSP子模块连接。双端口存储器(RAM)是一个双向FIFO数据存储器,起数据缓冲的作用。轴控制接口子模块则通过CPLD(复杂可编程逻辑器件)与DSP子模块连接。运动控制卡硬件结构示意图如图2所示[4]。
图2 运动控制卡硬件结构示意图
3 运动控制卡驱动程序的设计
使用DriverWorks为该运动控制卡开发WDM驱动程序主要有三个步骤:创建WDM驱动程序框架;实现驱动程序的具体功能;生成WDM驱动程序。下面是借助DriverWorks设计运动控制卡WDM驱动程序的具体方法。
3.1 使用DriverWizard生成WDM驱动程序框架
DriverWizard是DriverWorks创建WDM框架程序的工具。在创建一个PCI设备的WDM驱动程序框架时,共有十一步,其中以下几点需特别注意: