基于PXI总线的数据采集卡的WDM驱动程序设计
发布时间:2008/6/3 0:00:00 访问次数:515
windows驱动程序模型(windows driver model,wdm)是microsoft公司力推的全新驱动程序模式,与以前的驱动程序模型比较,它支持即插即用(plug and play,pnp)、电源管理和windows管理诊断wmi等技术。在windows操作平台上,wdm已成为主流的驱动模型,但这也给wdm驱动程序的开发人员提出了许多新的挑战,即便是开发和测试最简单的设备驱动程序也变得比以前任何时候都复杂。driverworks由numega公司开发,主要为开发windows98、windows 2000和windows nt的wdm设备驱动程序提供了一个自动化的方法,使驱动程序的开发相对于使用microsoft公司提供的设备驱动程序开发包(device driverskit,ddk)工具更加容易;并且它可以集成到vc++6.0开发环境中(后面要介绍的功能实现都是在用vc++6.0集成环境生成的驱动程序框架中编写的),可以引导完成设备驱动程序开发的全过程,这样就可以像生成其他工程一样根据硬件种类自动生成设备驱动程序框架,省去了大量编写代码的时间。本文就是利用driverworks开发工具开发基于pxi总线的数据采集卡的wdm驱动程序。
1 pxi总线数据采集卡的硬件框图
该数据采集系统的硬件结构框图如图1所示,该系统包括数据采集模块、f先进先出数据缓存模块、接口电路模块和cpld系统控制器模块4个部分。待采样的模拟信号经由数据采集模块进行数据采集,采样后经过转换得到的数字信号先被送入先进先出存储器进行缓存,当缓存器所存储的数据达到半满/全满时,将发送一个半满/全满标志信号,触发中断,由系统控制器通过pxi总线读取数据。整个系统的工作逻辑时序控制由1片cpld控制芯片来编程实现,接口逻辑采用通用的pxi总线接口逻辑芯片pci9030来实现。
2 驱动程序设计
2.1 中断过程调用
当fifo数据缓存器读取的数据达到半满/全满时,其相应半满/全满信号线会走低,该信号线与pci9030芯片的外部触发中断输入管脚相连,从而触发中断,主模块通过pxi总线接口芯片读取fifo中的数据,其中断服务例程如下:
2.2 中断延迟过程调用
中断服务例程的处理时间应当尽可能短,并且由于中断服务例程在dirql级别上运行,很多函数不能调用,所以通常是在延迟过程调用例程中做大部分的中断处理工作。本系统延迟例程调用相关程序如下:
2.3 读取数据
对于数据的读取,主要是在serialread()例程中实现的,其主要程序语句如下:
2.4 serialwrite()例程
数据采集卡硬件系统的初始化和肩动工作主要在se-rialwrite例程中实现,其相关部分程序如下:
3 应用程序设计
编写驱动程序本身不是最终目的,最终目的是调用驱动程序管理资源,并为用户应用程序使用。这里采用的是console控制台应用程序,其基本框架也可以由driverstuio自动生成,只需在现有的框架里面插入相应的代码就可粤耍渲骱齧ain()的相应代码如下:
4 结束语
driverworks是一款功能强大、使用方便的驱动程序开发工具,利用它可以方便快捷地构造pci设备的驱动程序框架,大大加快了开发周期,提高了开发效率。控制台应用程序的优点是开发起来方便、快捷,但在数据的图形化显示方面却有所
windows驱动程序模型(windows driver model,wdm)是microsoft公司力推的全新驱动程序模式,与以前的驱动程序模型比较,它支持即插即用(plug and play,pnp)、电源管理和windows管理诊断wmi等技术。在windows操作平台上,wdm已成为主流的驱动模型,但这也给wdm驱动程序的开发人员提出了许多新的挑战,即便是开发和测试最简单的设备驱动程序也变得比以前任何时候都复杂。driverworks由numega公司开发,主要为开发windows98、windows 2000和windows nt的wdm设备驱动程序提供了一个自动化的方法,使驱动程序的开发相对于使用microsoft公司提供的设备驱动程序开发包(device driverskit,ddk)工具更加容易;并且它可以集成到vc++6.0开发环境中(后面要介绍的功能实现都是在用vc++6.0集成环境生成的驱动程序框架中编写的),可以引导完成设备驱动程序开发的全过程,这样就可以像生成其他工程一样根据硬件种类自动生成设备驱动程序框架,省去了大量编写代码的时间。本文就是利用driverworks开发工具开发基于i总线的数据采集卡的wdm驱动程序。
1 i总线数据采集卡的硬件框图
该数据采集系统的硬件结构框图如图1所示,该系统包括数据采集模块、f先进先出数据缓存模块、接口电路模块和cpld系统控制器模块4个部分。待采样的模拟信号经由数据采集模块进行数据采集,采样后经过转换得到的数字信号先被送入先进先出存储器进行缓存,当缓存器所存储的数据达到半满/全满时,将发送一个半满/全满标志信号,触发中断,由系统控制器通过i总线读取数据。整个系统的工作逻辑时序控制由1片cpld控制芯片来编程实现,接口逻辑采用通用的i总线接口逻辑芯片pci9030来实现。
2 驱动程序设计
2.1 中断过程调用
当fifo数据缓存器读取的数据达到半满/全满时,其相应半满/全满信号线会走低,该信号线与pci9030芯片的外部触发中断输入管脚相连,从而触发中断,主模块通过i总线接口芯片读取fifo中的数据,其中断服务例程如下:
2.2 中断延迟过程调用
中断服务例程的处理时间应当尽可能短,并且由于中断服务例程在dirql级别上运行,很多函数不能调用,所以通常是在延迟过程调用例程中做大部分的中断处理工作。本系统延迟例程调用相关程序如下:
2.3 读取数据
对于数据的读取,主要是在serialread()例程中实现的,其主要程序语句如下:
2.4 serialwrite()例程
数据采集卡硬件系统的初始化和肩动工作主要在se-rialwrite例程中实现,其相关部分程序如下:
3 应用程序设计
编写驱动程序本身不是最终目的,最终目的是调用驱动程序管理资源,并为用户应用程序使用。这里采用的是console控制台应用程序,其基本框架也可以由driverstuio自动生成,只需在现有的框架里面插入相应的代码就可粤耍渲骱齧ain()的相应代码如下:
4 结束语
driverworks是一款功能强大、使用方便的驱动程序开发工具,利用它可以方便快捷地构造pci设备的驱动程序框架,大大加快了开发周期,提高了开发效率。控制台应用程序的优点是开发起来方便、快捷,但在数据的图形化显示方面却有所
上一篇:USB接口的虚拟仪器设计与实现
上一篇:基于USB接口的VoIP手柄设计