设备中在windows下编写dma的方法

设备中在windows下编写dma的方法

ID:30447318

大小:74.04 KB

页数:6页

时间:2018-12-30

设备中在windows下编写dma的方法_第1页
设备中在windows下编写dma的方法_第2页
设备中在windows下编写dma的方法_第3页
设备中在windows下编写dma的方法_第4页
设备中在windows下编写dma的方法_第5页
资源描述:

《设备中在windows下编写dma的方法》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、PCI设备中在WINDOWS下编写DMA的方法作者:ppphaitaoamingpan  来源:驱动开发网  发布日期:2004-5-21  点击次数:261对于在PCI总线上进行高速数据传输,通常采用直接数据存储(DMA)技术。在DMA方式下数据能够达到PCI总线规范的最大数据传输速率,所以在设备驱动程序的开发过程中,实现DMA的工作方式成为驱动程序的设计的重点。而对于DMA工作方式的设备驱动程序的开发又是设备驱动程序的难点,并且国内介绍这类的书籍又相对很少,给设计者带来很大困难。内核(Kernel)模式的驱动程序可以应用于WINDOWSN

2、T和WINDOWS2000的操作系统中。它区别于WDM(Win32DriverModel)模型,主要不支持即插即用,但对于编程的思想二者基本上一致,对于本文所述的DMA编程的方法在WDM模式的驱动程序中一样适合。本文通过现有最常见的AMCC公司生产的AMCCS5933PCI控制芯片为例说明在WINDOWSNT平台下如何编写设备驱动程序以实现DMA传输方式。本文对基本的驱动程序设计技术不作详细的说明,重点介绍基于包的总线主控DMA方式的原理和对常见驱动程序例程的要求。并介绍这种模式下驱动程序的实现方法。文章从几个不同的方面进行全面的阐述。1、A

3、MCCS59333控制芯片PCI主控DMA功能概述AMCCS5933控制芯片,它具有实现完整的PCI主控模块和目标模块的接口功能。将复杂的PCI总线接口转换为相对简单的用户接口,用户只需要设计转换后的总线接口即可AMCCS5933有两个FIFO(先入先出)存储器,一个是PCI到ADD-ON(附加设备)的FIFO,另一个是从ADD-ON到PCI的FIFO。S5933通过它的FIFO接口在PCI总线上进行DMA传输(总线主控)。FIFO可以作为PCI的发起者也可以作为目标者。FIFO作为目标,PCI总线主控访问ADD-ON数据。FIFO作为发起者

4、可以向PCI发送数据。PCI发起的DMA传输:此时FIFO作为目标。PCI发起的DMA传输必须通过总线主控控制状态寄存器(MCSR)来使能,读写使能分别控制,在驱动程序适配器控制(AdapterControl)例程设定这个寄存器。另外在驱动程序的设计中必须设定AMCCS5933读写地址寄存器(MWAR/MRAR)以及读写传输数据计数器(MWTC/MRTC)的值。AMCCS5933的DMA中断有下列几种情况:读传输计数器计到0,写传输计数到0,或在DMA传输过程中PCI总线上发生错误。2、内核式驱动程序的基本结构和编程技术驱动程序与应用程序的最

5、大差别之一是驱动程序的控制结构,应用程序一直用main或WinMain函数控制运行。而驱动程序没有main或WinMain函数。它是由I/O(输入输出)管理器在下列情况下调用一个程序例程:1)驱动程序被装入时。2)驱动程序被卸出或系统被关闭时。3)用户程序发出I/O系统服务调用时。4)共享硬件资源对驱动程序可用时。5)设备操作过程中的任何时候。任何设备驱动程序都必须拥有一个DriverEntry例程为每个驱动程序的入口点。下面简要说明驱动程序的分类。1)驱动程序初始化和清理例程:在任何时候开始处理I/O请求之前,它必须执行一些初始化任务。Dr

6、iverEntry例程、Reinitialize例程、Unload例程、Shutdown例程和错误回调例程一般用来执行这些操作。2)I/O系统服务Dispatch(分发)例程:I/O管理器得到一个请求时,它使用请求的函数代码调用驱动程序中几个Dispatch例程中的一个。3)数据传输例程:根据设备的不同设备操作涉及到一些不同的例程,一般有StartI/O例程、中断服务(ISR)例程、延迟过程调用(DPC)例程4)资源同步回调:I/O管理器提供使用各种同步回调例程,使驱动程序更容易处理这些问题。当驱动程序需要访问某个共享资源时,它为该资源排队一

7、个请求。当资源变得可用时,I/O管理器激活与该请求关联的一个驱动程序例程。驱动程序可以调用3种同步回调例程:ControllerControl回调例程、AdapterControl例程、SynchCritSection例程。5)其他的驱动例程:驱动程序可以包括下面的一些例程。Timer例程,在设备操作过程中跟踪时间的例程。CancelI/O很长时间持有等待请求的任何驱动程序必须把一个CancelI/O例程挂到该请求。如果请求被取消,I/O管理器调用CancelI/O例程执行必要的清理操作。3基于包的总线控制器DMA方式对DriverEntry

8、例程的要求为了使设备能在WINDOWSNT操作系统下工作,我们必须编写设备驱动程序,在驱动程序中实现DMA的传输功能。我们采用基于包的总线控制器DMA方式进行数据传

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。