网站大量收购独家精品文档,联系QQ:2885784924

[理学]MFID微机接口技术实验下.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]MFID微机接口技术实验下

从8/16位到32位微机接口技术 变化与对策(下) 华中科技大学计算机学院 武汉豪申光电新技术有限公司 2006.7 内容提要 PCI9054中的中断处理 PCI9054中的DMA处理 驱动程序设计 实验内容安排 中断程序实验 DMA传输实验 驱动程序设计实验 PCI9054的中断处理机制 中断是微机接口技术中的一个重要内容。随着系统结构的变化,微机接口的设计也发生了很大的变化。但这些变化都只是形式上的,其技术本身并无太大改变。 由于中断控制器与CPU紧密相关,因此,很少有需要用户直接对中断电路进行设计的。除非是直接利用CPU开发系统,这在一些单板机/单片机的开发中经常涉及到。对于微机系统,不可能也没有必要进行这方面的设计,因为主板厂商已为我们做好了,我们只要了解系统的中断资源及其工作原理即可。 在8位/16位系统环境中,用户是直接面向中断控制器进行编程的,而且用户开发的板卡上的中断请求线也是直接或间接通过硬件连线与中断控制器的引脚相连。例如,以前的ISA总线就提供了两个中断线请求线IRQ2和IRQ10作为外部中断源请求中断的手段。但在PCI系统结构下这种请求方式发生了很大变化,下面来看看PCI中如何对中断进行处理。 从PCI9054的功能上看,它仅仅是提供了PCI总线到LOCAL总线的一个接口。那么它本身并不能像中断控制器一样进行中断的处理。事实上,任何系统都不能通过总线对中断控制器进行扩展。因此,PCI9054在处理中断时,只是进行中断的共享和中断路由。它实现的是如何将本地总线上的中断请求信号传递给系统中断控制器。而传递后的工作与以前的中断机制工作原理是一致的。 中断共享 简单来讲中断共享就是将不同的中断源连接到同一个中断线上,共享一个中断资源,但彼此间又没有冲突。 中断路由 中断路由的功能是为多功能设备提供了一个将本地中断请求线动态连线到系统的中断线的机制。在多功能设备中为了避免多个功能设备同时申请中断造成的冲突,可以对中断路由器进行编程以决定哪个功能通过哪个中断引脚与系统中断线相连 PCI9054内部的中断源 与中断相关的寄存器 PCI侧:中断引脚和中断线寄存器,分别用于指明中断引脚号和连接到系统中断控制器的中断线号如,本实验卡为单功能设备,其引脚号指定为INTA#,而中断线是系统根据实际资源使用情况动态分配 LOCAL侧:中断命令/状态寄存器,此寄存器用来设置中断屏蔽位和获取设备中断状态。如要允许PCI中断,则将INTCS[8]设置为1。若要判断中断是否是来自本地总线,则判断INTCS[15]位是否为1。 9054的DMA处理机制 此处所讲的DMA属于设备级的DMA,与以前微机接口中讲的系统级DMA有很大差别。这也是在新的系统结构下出现的新问题。下面主要讨论PCI9054中DMA的处理机制。 在9054中,DMA传输主要用于PCI总线与LOCAL总线间的数据传输,此时PCI9054接管两总线的控制权,可进行两个方向的数据传输。 和DMA操作相关的寄存器 DMA模式寄存器(DMAMODE):用于设置DMA的工作方式,如总线宽度、传输完后是否中断等 PCI基地址寄存器(DMAPADR):设置传输的PCI侧基地址 LOCAL基地址寄存器(DMALADR):设置传输的LOCAL侧基地址 传输大小寄存器(DMASIZ):设置传输字节数 描述符指针寄存器(DMADPR):设置DMA传输通道的描述信息 通过对以上的寄存器的操作,就可以实现PCI到LOCAL或LOCAL到PCI的DMA数据传输。但是这只是硬件上实现,但是要在Windows操作系统上进行操作,还必须有相应驱动程序支持。此部分内容将在驱动程序设计中介绍。 驱动程序设计 获取PCI接口卡配置空间的配置信息; 实现IO端口操作; 对扩展物理内存的访问; 驱动程序与应用程序的通信; 实现中断方式数据传输; 实现DMA方式数据传输; 获取PCI接口卡配置空间的配置信息 DriverWorks的KpciConfiguration类封装了访问PCI设备配置空间的所有操作,首先创建并初始化一个类实例: KpciConfiguration PciConfig; PciConfig.Initialize(m_Lower.DeviceObject()); 初始化完成后就可以利用该类的成员函数ReadBaseAddress/WriteBaseAddress读写基地址寄存器,利用ReadCommandRegister/WriteCommandRegister读写命令寄存器,利用ReadInterrupt/ WriteInterrupt

文档评论(0)

ipbohn97 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档