- 46
- 0
- 约5千字
- 约 29页
- 2017-10-02 发布于天津
- 举报
使用公用缓冲区的Slave模式DMA传输-Read
DMA sigang@mti.xidian.edu.cn DMA DMA即Direct Memory access 无需计算机的CPU的干预就可以在内存和外设之间传输数据 通常都有DMA控制器来进行DMA操作,DMA控制器可能是主板上的,也有可能是外设特有的。 为什么需要 DMA? 传输模型 Windows 中的DMA传输基于这个模型 适配器对象(adapter) Windows 2000内核使用一个称为适配器对象的数据结构来描述设备上的DMA特征,并用它来控制访问潜在的共享资源,如系统DMA通道和映射寄存器 通常在StartDevice函数中调用IoGetDmaAdapter获得适配器对象 适配器对象中有一个指针,指向一个DmaOperations的结构,该结构包含了所有需要的DMA相关的其它函数,这些函数如下表 传输策略选择 1。如果设备有总线主控能力,那么它就有访问主存的必要硬件部件,因此只需要告诉它几个基本事实,如从哪开始,需要传输多少单位的数据,是输入操作还是输出操作,等等。可以向硬件设计者咨询或者固件程序员咨询以得到细节部分,否则只能参考许多硬件级的说明文档。 传输策略选择 2。一个有分散/聚集(scatter/gather)能力的设备可以在自身与不连续的物理内存区之间传输大块数据。设备的分散/聚集能力对软件十分有利,它可以避免对具有连续页帧的大块的内存的需求。页可以被简单地锁定在所在的物理内存,只要把内存地址告诉设备就可以进行。 传输策略选择 3。如果设备不是总线主控设备,那么需要使用计算机主板上的系统DMA控制器。这种形式的DMA传输被称为从属DMA(slave DMA)。与ISA总线连接的系统DMA控制器对所能访问的物理内存和一次传输的数据量会有些限制。EISA总线的DMA控制器去掉了这些限制。在Windows 2000中,不必知道硬件具体插入到哪种类型的总线,因为系统自动参考这些不同的限定。 传输策略选择 4。通常,DMA操作将包括编程硬件映射寄存器或操作前后的数据复制。如果设备需要连续地读写数据,我们不希望在每次I/O请求中都做这两步,这将大大地降低处理速度,在某些情况下也是不能接受的。因此,应该分配一个公用缓冲区(common buffer),设备和驱动程序可以在任何时间同时访问这个缓冲区。 说明 在涉及DMA传输的过程中策略的选择是第一步也是最重要的一步。 不仅需要参考硬件,还要参考可能的软件需求(主控,从属,包,通用缓冲区) 尽管这四种因素的相互影响会产生许多种不同的结果,但执行的步骤中有许多共同的特征。如下图显示了一次传输过程: 执行DMA传输 基于包(packet-based)的DMA传输。在这种方式中,将使用IRP携带的数据缓冲区来传输一定量的数据。 为了简单,让我们假设面对当前最普通的情况:一个基于PCI的总线主控设备并且没有分散/聚集能力。 为什么简单? 下面按照程序编写的通常步骤来详细说明DMA的过程 缓冲方式 当创建设备对象时,通常指定使用Direct缓冲方式,即设置DO_DIRECT_IO标志。或者在定义CTL_CODE时指定direct input或者direct output方式。 因为调用的MapTransfer函数需要一个MDL作为参数 ,这种方式会在每一个IRP的MdlAddress保存描述用户缓冲区的MDL 创建和销毁适配器对象 在处理start device的pnp请求时,我们除了要取得IO,内存,中断资源外,还要创建一个适配器对象(adapter obiect)。 在处理stop device请求时,除了释放映射的IO,内存资源,断开中断的连接外,还要销毁适配器对象。 例如:DMA.doc 和其它资源区别 前面讲过的IO,内存,和中断资源,我们都回在一个CmResourceTypeXxx类型的case子句中获得,这里不需要CmResourceTypeDma类型的case子句,因为设备是总线主控方式,硬件本身包含有执行DMA传输所必须的所有电路逻辑,所以系统没必要赋予设备DMA资源。 获取DMA通道 为了初始化一个I/O操作,StartIo例程必须首先调用适配器对象的AllocateAdapterChannel例程以获取适配器对象。该函数的一个参数是AdapterControl例程的地址,I/O管理器将在获取操作完成后调用这个例程。 AllocateAdapterChannel函数的准备和调用过程:DMA.doc AllocateAdapterChannel何时完成 AllocateAdapterChannel做什么? 等待DMA控制器,和映射寄存器可用 主控,从属,支持映射寄否? 当DMA控制器,和映射寄存器都可用时, AllocateAdapter
您可能关注的文档
- 云林2014爱天使岁末团圆.PPT
- 云林2014爱天使岁末团圆-云林公诚国小.PPT
- 云计算中的并行计算技术分析-信息通信学术期刊网.PDF
- 云计算技术专利检索分析报告-国家信息存储工程技术研究中心.DOC
- 云计算技术在重庆有线政企业务应用.PDF
- 云渲染系统基于通用压缩算法的图像序列压缩四.PPT
- 云雀妈妈把森林比作大水库.PPT
- 云龙校区一期食堂改造采购招议标文件-湖南中医药高等专科学校.doc
- 互联网及其应用-上海建桥学院.DOC
- 互联网金融风险的特殊性及其监管策略研究-中央财经大学.PDF
- 小区绿化施工协议书.docx
- 墙面施工协议书.docx
- 1 古诗二首(课件)--2025-2026学年统编版语文二年级下册.pptx
- (2026春新版)部编版八年级道德与法治下册《3.1《公民基本权利》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《4.3《依法履行义务》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.2《按劳分配为主体、多种分配方式并存》PPT课件.pptx
- (2026春新版)部编版八年级道德与法治下册《6.1《公有制为主体、多种所有制经济共同发展》PPT课件.pptx
- 初三教学管理交流发言稿.docx
- 小学生课外阅读总结.docx
- 餐饮门店夜经济运营的社会责任报告(夜间贡献)撰写流程试题库及答案.doc
原创力文档

文档评论(0)