位置:51电子网 » 技术资料 » 接口电路

PCI总线数据输出板驱动程序的开发(图)

发布时间:2008/8/20 0:00:00 访问次数:541

  摘要:pci(perip heral component interconnect )是一种先进的高性能32/64位局部总线,支持线性突发传输,数据最大传输率可达132mb/s。同时,pci总线存取延误小,采用总线主控和同步操作,不受处理器限制,具有自动配置功能,非常适合于高速外设。所以,它正迅速取代原先的isa总线成为微型计算机系统的主流总线。

  随着工业控制pci设备的增多,需要开发大量专用wdm驱动程序。鉴于直接用ddk开发驱动程序难度大,周期长,本文介绍了用driverstudio套件开发wdm驱动程序的方法以及基于9052总线控制器的d/a数据输出板卡的硬件结构。

  

  

  图1 d/a数据输出板卡硬件结构

  d/a数据输出板卡硬件结构如图1所示。硬件电路由pci总线控制器9052,数据锁存器ls373,d/a转换芯片,eeprom组成。板卡上电时,读取eeprom内容初始化9052配置空间,据此为板卡分配合适的内存空间和i/o空间,对空间进行读写操作。首先,上位机通过writefile()调用设备驱动程序,发送两个12位数字量,驱动程序相应函数将两个数字量分别写入两路锁存器,送入d/a转换芯片,最后输出模拟量。

  9052空间配置

  pci9052芯片的配置寄存器分为pci配置寄存器和局部配置寄存器,二者都可以由pci总线和串行eeprom访问。在pci配置寄存器中的设备id、制造商id、版本号、首区类代码、类别代码、指令寄存器和状态寄存器等寄存器在所有的pci设备中都必须实现,具体设置可参考相关资料。pci配置寄存器提供有6个基地址寄存器(base0~base5)这些基地址都是系统中的物理地址,其中base0和base1是用来访问局部配置寄存器的基地址,base0是映射到内存的基地址,base1是映射到i/o的基地址,可用于通过内存和i/o来访问局部配置寄存器。这两个基地址可固定用于pci9052芯片的寄存器操作。通过base2~base5四个空间最多可以访问局部端所接的4个芯片,实现4个局部地址空间(局部空间0~3)的pci总线访问。

  本设计选取las0(local address space 0)来访问局部端的锁存器,该寻址空间大小为4kb,与其有关的寄存器有四个:las0范围寄存器、las0局部基址寄存器、las0局部总线区域描述符和片选0基址寄存器。las0范围寄存器规定了地址空间的大小。

  由于需要4kb的地址空间,所以las0范围寄存器的值为0xfffff000;基地址必须是地址空间的整数倍,末尾为局部空间使能为,所以局部基址寄存器设为0x00000001;las0局部总线区域描述符设为0x00000102;片选0基址寄存器设为0x00000081。

  驱动程序框架的建立

  1 开发环境的选择

  驱动程序开发选用numega公司的driverstudio,它包含vtoolsd、softice和driverworks等开发工具,driverworks用于开发kmd和wdm驱动程序,它适用于windows 98/me/nt/2000/xp操作系统。driverworks,需要相应ddk的支持,把ddk用类的形式进行封装,使用起来非常方便。

  开发环境的建立

  首先要安装软件。必须按照下面的顺序安装:

  安装microsoft visual studio c++ 6.0。在安装过程中,必须选中“注册环境变量”选项。

  安装操作系统对应的ddk(2000系统安装2000ddk,xp系统安装xpddk)。

  安装drivestudio3.1(若为xp系统,必须安装3.2以上的版本)。

  接下来,编译库文件。用vc打开库文件program files\compuware\ driverstudio\driverworks\source\ vdw libs.dsw,选择build|batch build(编译|批构件),从中选择需要编译的配置(32位机选“select all i386”)。若编译无错误,就可以进行驱动程序的开发了。

  3 生成驱动程序框架

  从开始菜单启动driver wizards,选择driverworks project,开始创建一个驱动程序框架。

  ● 填写驱动程序名称,单击next;

  ● 选择驱动程序类型,这里选择wdm driver驱动程序,单击next;

  ● 选择wdm function driver,单击next;

  ● 选择总线类型,这里选择pci总线。填写pci vendor id和pci device id,一般可以从硬件的使用说明书中看到,没有的话可以用pciview软件得到。后两项pci subsystem id和pci revision id可以不填。单击next;

  ● 选择设备类的名称和文件类名称,默认即可,单击next;

  ● 选择需要的功能函数,本设计需要i/o读写,必须添加i/o通信函数。添加读函数pci_da_ioctl_read()和写函数pci_da_ioctl_write(),单击next;

  ● 选择队列方式,数据量大时选择排队,点击next;

  ● 添加资源。资源分为i/o资源和内存资源。添加资源时必须对应硬件相应得基

  摘要:pci(perip heral component interconnect )是一种先进的高性能32/64位局部总线,支持线性突发传输,数据最大传输率可达132mb/s。同时,pci总线存取延误小,采用总线主控和同步操作,不受处理器限制,具有自动配置功能,非常适合于高速外设。所以,它正迅速取代原先的isa总线成为微型计算机系统的主流总线。

  随着工业控制pci设备的增多,需要开发大量专用wdm驱动程序。鉴于直接用ddk开发驱动程序难度大,周期长,本文介绍了用driverstudio套件开发wdm驱动程序的方法以及基于9052总线控制器的d/a数据输出板卡的硬件结构。

  

  

  图1 d/a数据输出板卡硬件结构

  d/a数据输出板卡硬件结构如图1所示。硬件电路由pci总线控制器9052,数据锁存器ls373,d/a转换芯片,eeprom组成。板卡上电时,读取eeprom内容初始化9052配置空间,据此为板卡分配合适的内存空间和i/o空间,对空间进行读写操作。首先,上位机通过writefile()调用设备驱动程序,发送两个12位数字量,驱动程序相应函数将两个数字量分别写入两路锁存器,送入d/a转换芯片,最后输出模拟量。

  9052空间配置

  pci9052芯片的配置寄存器分为pci配置寄存器和局部配置寄存器,二者都可以由pci总线和串行eeprom访问。在pci配置寄存器中的设备id、制造商id、版本号、首区类代码、类别代码、指令寄存器和状态寄存器等寄存器在所有的pci设备中都必须实现,具体设置可参考相关资料。pci配置寄存器提供有6个基地址寄存器(base0~base5)这些基地址都是系统中的物理地址,其中base0和base1是用来访问局部配置寄存器的基地址,base0是映射到内存的基地址,base1是映射到i/o的基地址,可用于通过内存和i/o来访问局部配置寄存器。这两个基地址可固定用于pci9052芯片的寄存器操作。通过base2~base5四个空间最多可以访问局部端所接的4个芯片,实现4个局部地址空间(局部空间0~3)的pci总线访问。

  本设计选取las0(local address space 0)来访问局部端的锁存器,该寻址空间大小为4kb,与其有关的寄存器有四个:las0范围寄存器、las0局部基址寄存器、las0局部总线区域描述符和片选0基址寄存器。las0范围寄存器规定了地址空间的大小。

  由于需要4kb的地址空间,所以las0范围寄存器的值为0xfffff000;基地址必须是地址空间的整数倍,末尾为局部空间使能为,所以局部基址寄存器设为0x00000001;las0局部总线区域描述符设为0x00000102;片选0基址寄存器设为0x00000081。

  驱动程序框架的建立

  1 开发环境的选择

  驱动程序开发选用numega公司的driverstudio,它包含vtoolsd、softice和driverworks等开发工具,driverworks用于开发kmd和wdm驱动程序,它适用于windows 98/me/nt/2000/xp操作系统。driverworks,需要相应ddk的支持,把ddk用类的形式进行封装,使用起来非常方便。

  开发环境的建立

  首先要安装软件。必须按照下面的顺序安装:

  安装microsoft visual studio c++ 6.0。在安装过程中,必须选中“注册环境变量”选项。

  安装操作系统对应的ddk(2000系统安装2000ddk,xp系统安装xpddk)。

  安装drivestudio3.1(若为xp系统,必须安装3.2以上的版本)。

  接下来,编译库文件。用vc打开库文件program files\compuware\ driverstudio\driverworks\source\ vdw libs.dsw,选择build|batch build(编译|批构件),从中选择需要编译的配置(32位机选“select all i386”)。若编译无错误,就可以进行驱动程序的开发了。

  3 生成驱动程序框架

  从开始菜单启动driver wizards,选择driverworks project,开始创建一个驱动程序框架。

  ● 填写驱动程序名称,单击next;

  ● 选择驱动程序类型,这里选择wdm driver驱动程序,单击next;

  ● 选择wdm function driver,单击next;

  ● 选择总线类型,这里选择pci总线。填写pci vendor id和pci device id,一般可以从硬件的使用说明书中看到,没有的话可以用pciview软件得到。后两项pci subsystem id和pci revision id可以不填。单击next;

  ● 选择设备类的名称和文件类名称,默认即可,单击next;

  ● 选择需要的功能函数,本设计需要i/o读写,必须添加i/o通信函数。添加读函数pci_da_ioctl_read()和写函数pci_da_ioctl_write(),单击next;

  ● 选择队列方式,数据量大时选择排队,点击next;

  ● 添加资源。资源分为i/o资源和内存资源。添加资源时必须对应硬件相应得基

相关IC型号

热门点击

 

推荐技术资料

耳机放大器
    为了在听音乐时不影响家人,我萌生了做一台耳机放大器的想... [详细]
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!