Windows平台下PCI9054驱动程序研究.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows平台下PCI9054驱动程序研究.doc

Windows平台下PCI9054的驱动程序的研究 摘要:研究了使用DriverStudio在windowsXP平台下pci9054芯片的驱动开发,从几个关键方面入手,从而编写驱动程序。 关键字:驱动程序;PCI总线;DriverStudio;DMA;配置空间; 引言 PCI的含义为外设部件互联,它支持64位数据传送,多总线主控和线性突发方式,其数据传输率最大可大528Mb/s. 在PCI设备插入PCI插槽上电后,总线配置机构自动根据PCI设备的要求实现配置。在WindowXP系统中,为了保证系统运行的安全性和可移植性,对应用程序在硬件上的操作做了限制。不支持直接对系统硬件资源的操作。 DriverStudio是用于Windows设备驱动程序的开发和应用程序开发的软件,它包括DriverAgent,VtoolsD,Driverworks等功能强大的模块。DriverAgent用于快速生成硬件测试的驱动程序。VtoolsD提供了VxD编程全线C++类库支持;DriverWorks能自动生成设备驱动程序源框架。总之,DriverStudio的强大性能使得驱动程序的编写不再困难。 驱动开发环境 驱动开发环境的安装顺序:先安装VC++,再安装DDK,最后安装DriverStudio在Windows下开发驱动程序需要安装DDK(Driver Development Kit)。DriverStudio集成开发环境对DDK提供的函数进行封装,以类的形式提供方便的接口,同时提供方便编程的程序生成向导,提高开发效率,因此,该集成开发环境被广泛应用。 DMA传输 使用DMA的目的是最小化CPU介入数据传输操作,要做到这一点,DMA设备使用了一个辅助处理器,叫做DMA控制器,用来在内存和外围设备之间传输数据。这样就允许CPU在进行I/0操作的同时继续做其他有益的工作。 DriverWorks为我们提供了三个类:KDmaAdapter、KDmaTransfer和KCommonDmaBuffer,用于实现DMA操作。KdmaAdapter类用于建立一个DMA适配器,它标明一个DMA通道的特性和提供串行化访问的服务。KdmaTransfer类用于控制DMA的传输,启动一个DMA传输、DMA传输数据缓冲区物理地址和传输字节数、以及DMA传输结束后数据由公用缓冲区拷贝到应用程序数据缓冲区,这些工作都是由KdmaTransfer类实现的。KCommonDmaBuffer类用于申请系统提供的公用缓冲区,对于DMA操作,系统提供了一个特殊的内存,即物理上连续的内存,称为公用缓冲区。对于支持分散,聚集DMA的设备,因其并不要求在物理上连续的内存,可以不使用公用缓冲区。 在PnP启动例程中,类KDmaAdapter和KcommonDmaBuffer的实例会被初始化。对于KdmaAdapter的实例,初始化时要定义一个设备描述结构以决定DMA适配对象的一些属性。而类KeommortDmaBuffer的实例的初始化比较简单,只须指明相关的适配器对象和要求的缓冲区字节长度即可。对于KdmaTransfer类的实例,即DMA传输对象,有几种产生方法,可以作为设备类的一个成员数据以全局对象的方式产生传输对象;当然也可以使用堆栈结构,在需要时分配传输对象。 中断管理 PCI设备的中断是可以共享的,电瓶触发,在指定中断引脚寄存器指定INTA#给PCI板卡,即给INTPIN赋值为1.中断线寄存器INTLN是PCI板卡用来向主机系统声明自己希望申请的系统终端资源IRQ号。Plx9054_IntEnable(hPlx9054,AddressOfPlx9054_IntHandlerRoutine)是实现中断的关键库函数,在Plx9054_IntEnable中封装了InterruptThreadEnable中断使能函数,Plx9054_IntHandlerRoutine是中断处理例程,在中断服务程序中完成充电和逆变控制。 访问PCI配置空间 遵循PCI标准的设备为其配置信息提供了一个独立的地址空间,每个PCI卡都有1到8个函数,并且每个函数都有自己配置信息的存储空间,空间为256个字节,其中前64个字节是头信息。PCI协议定义了多种头信息格式,通常头信息是通过结构体PCI_CONFIG_HEADER_0来定义的。 驱动程序通过类KPciConfiguration可以访问一个PCI设备配置信息。在使用这个类之前,首先要了解PCI设备的信息,如VenderID等。按照下列步骤可以建立访问PCI设备的配置信息的驱动程序: (1)声明一个类KPciConfiguration型对象,这个对象通常在构造体中接受参数VenderID和DeviceID。如:#define VEND

文档评论(0)

feiyang66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档