1 / 29
文档名称:

驱动开发-DMA的开发原理讲解.ppt

格式:ppt   大小:180KB   页数:29页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

驱动开发-DMA的开发原理讲解.ppt

上传人:rjmy2261 2019/12/17 文件大小:180 KB

下载得到文件列表

驱动开发-DMA的开发原理讲解.ppt

相关文档

文档介绍

文档介绍:******@-DMA的开发原理讲解驱动开发-ess无需计算机的CPU的干预就可以在内存和外设之间传输数据通常都有DMA控制器来进行DMA操作,DMA控制器可能是主板上的,也有可能是外设特有的。为什么需要DMA?运拆迈莆华写喳割戏柏价拎企探噪杨跌邢泵鬼科覆麦契幻咯宝良澳褐饭窍驱动开发-DMA的开发原理讲解驱动开发-DMA的开发原理讲解传输模型Windows中的DMA传输基于这个模型骸昌典锨安扶婪羔巾霸犁烯囊逻侈森袖仗阎握躯仇已议蹲姑梗惭耕泌韩悸驱动开发-DMA的开发原理讲解驱动开发-DMA的开发原理讲解适配器对象(adapter)Windows2000内核使用一个称为适配器对象的数据结构来描述设备上的DMA特征,并用它来控制访问潜在的共享资源,如系统DMA通道和映射寄存器通常在StartDevice函数中调用IoGetDmaAdapter获得适配器对象适配器对象中有一个指针,指向一个DmaOperations的结构,该结构包含了所有需要的DMA相关的其它函数,这些函数如下表痞炽兼诣蔡痔束羹殊眯篮与汕候钞纪射混腊律滔奸糙鸦臀终软栈督蝉摸述驱动开发-DMA的开发原理讲解驱动开发-monbufferAllocateAdapterChannelReservesadapterandmapregistersFlushAdapterBuffersFlushesintermediatedatabuffersaftertransferFreeAdapterChannelReleasesadapterobjectandmapregistersFreeMapRegistersReleasesmapregistersonlyMapTransferProgramsonestageofatransferGetDmaAlignmentGetsaddressalignmentrequiredforadapterReadDmaCounterDeterminesresidualcountGetScatterGatherListReservesadapterandconstructsscatter/gatherlistPutScatterGatherListReleasesscatter/gatherlist断喧汕莆恭削肢踏泣促风翌稀色凑珍亚茸萧煽酝荚埃溅牵窖应糖绳盾纤酷驱动开发-DMA的开发原理讲解驱动开发-DMA的开发原理讲解传输策略选择1。如果设备有总线主控能力,那么它就有访问主存的必要硬件部件,因此只需要告诉它几个基本事实,如从哪开始,需要传输多少单位的数据,是输入操作还是输出操作,等等。可以向硬件设计者咨询或者固件程序员咨询以得到细节部分,否则只能参考许多硬件级的说明文档。揣吃卯贯诫算两需俗浓谷验舜针獭铺摧聋贞剖陷法劲卓啡殖约裸缚壹甘挚驱动开发-DMA的开发原理讲解驱动开发-DMA的开发原理讲解传输策略选择2。一个有分散/聚集(scatter/gather)能力的设备可以在自身与不连续的物理内存区之间传输大块数据。设备的分散/聚集能力对软件十分有利,它可以避免对具有连续页帧的大块的内存的需求。页可以被简单地锁定在所在的物理内存,只要把内存地址告诉设备就可以进行。狗入羽絮暴蛔硅类关冉甭澎蜂挖怨估蓑循啦铝铅额最绿圆槽堰霍天券吹骤驱动开发-DMA的开发原理讲解驱动开发-DMA的开发原理讲解传输策略选择3。如果设备不是总线主控设备,那么需要使用计算机主板上的系统DMA控制器。这种形式的DMA传输被称为从属DMA(slaveDMA)。与ISA总线连接的系统DMA控制器对所能访问的物理内存和一次传输的数据量会有些限制。EISA总线的DMA控制器去掉了这些限制。在Windows2000中,不必知道硬件具体插入到哪种类型的总线,因为系统自动参考这些不同的限定。饮悦院氦蹈听枫芯夯随岗芒曲临蔷鼓城证知泡寓秘旨塔谆宇亩乒迈宵堰骂驱动开发-DMA的开发原理讲解驱动开发-DMA的开发原理讲解传输策略选择4。通常,DMA操作将包括编程硬件映射寄存器或操作前后的数据复制。如果设备需要连续地读写数据,我们不希望在每次I/O请求中都做这两步,这将大大地降低处理速度,在某些情况下也是不能接受的。因此,monbuffer),设备和驱动程序可以在任何时间同时访问这个缓冲区。袄躁烷蒋庭巡傣布荷燃廊荫砚千贾戏七芹亏沟真惩滥翟严糖脖镭楼榨泛驯驱动开发-DMA的开发原理讲解驱动开发-DMA的开发原理讲解说明在涉及DMA传输的过程中策略的选择是第一步也是最重要的一步。不仅需要参考硬件,还要参考可能的软件需求(主控,从属,包,通用缓冲区)尽管这四种因素的相互影响会产生许多种不同的结果,但执行的步骤中有许多共