精华内容
下载资源
问答
  • DMA与普通中断方式的区别

    万次阅读 2016-06-30 22:46:04
    普通中断方式是在数据缓冲...总结:DMA方式不需CPU干预传送操作,仅仅是开始结尾借用CPU一点时间,其余不占用CPU任何资源,中断方式是程序切换,每次操作需要保护恢复现场 中断控制方式虽然在某种程度上解决了上述
    普通中断方式是在数据缓冲寄存器满后,发中断请求,CPU进行中断处理
    DMA方式则是以数据块为单位传输的,在所要求传送的数据块全部传送结束时要求CPU进行中断处理,大大减少了CPU进行中断处理的次数

    总结:DMA方式不需CPU干预传送操作,仅仅是开始和结尾借用CPU一点时间,其余不占用CPU任何资源,中断方式是程序切换,每次操作需要保护和恢复现场

    中断控制方式虽然在某种程度上解决了上述问题,但由于中断次数多,因而CPU仍需要花较多的时间处理中断,而且能够并行操作的设备台数也受到中断处理时间的限制,中断次数增多导致数据丢失。

    DMA方式和通道方式较好地解决了上述问题。这两种方式采用了外设和内存直接交换数据的方式。只有在一段数据传送结束时,这两种方式才发出中断信号要求CPU做善后处理,从而大大减少了CPU的工作负担。中断控制方式虽然在某种程度上解决了上述问题,但由于中断次数多,因而CPU仍需要花较多的时间处理中断,而且能够并行操作的设备台数也受到中断处理时间的限制,中断次数增多导致数据丢失。DMA方式和通道方式较好地解决了上述问题。这两种方式采用了外设和内存直接交换数据的方式。只有在一段数据传送结束时,这两种方式才发出中断信号要求CPU做善后处理,从而大大减少了CPU的工作负担。

    展开全文
  • STM32 DMA方式和中断方式查询的区别

    千次阅读 2018-10-24 16:38:59
    要把外设数据读入内存或把内存数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU利用率。  2: 中断传送 是由CPU通过中断服务程序来传送,每次要...

    1:
    DMA(DIRECT MEMORY ACCESS)
    即直接存储器存取,是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。 


    要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU的利用率。 


    2:
    中断传送
    是由CPU通过中断服务程序来传送,每次要保护断点,保护现场需要多条指令,每条指令要有取指和执行时间。为了充分利用CPU的高速性能和实时操作的要求,一般中断服务程序要求是尽量的简短,所以当要实现大量数据交换的情况,如从磁盘调入程序或图形数据,如果采用中断传送方式,必然会引起频繁中断的情况,需要执行很多与数据传送无关的中断指令,所以会大大降低系统的执行效率,无法提高数据传送速率。对于一个高速I/O设备,以及批量交换数据的情况,只能采用DMA方式,才能解决效率和速度问题。DMA在外设与内存间直接进行数据交换,而不通过CPU,这样数据传送的速度就取决于存储器和外设的工作速度。


    3:查询方式:主要用于CPU不太忙且传送速度不高的情况下。无条件传送方式作为查询方式的一个特例,主要用于对简单I/O设备的控制或CPU明确知道外设所处状态的情况下。 
    (2) 中断方式:主要用于CPU的任务比较忙的情况下,尤其适合实时控制和紧急事件的处理 
    (3) DMA方式(直接存储器存取方式):主要用于高速外设进行大批量数据传送的场合。




    ◆中断方式是在数据缓冲寄存区满后,发中断请求,CPU进行中断处理
    ◆DMA方式则是以数据块为单位传输的,在所要求传送的数据块全部传送结束时要求CPU进行中断处理,大大减少了CPU进行中断处理的次数
    ◆中断方式的数据传送是由设备到CPU再到内存,或者相反。
    ◆DMA方式的数据传送则是将所传输的数据由设备直接送入内存,或是由内存直接送到设备。

    展开全文
  • 单片机I/O设备控制方式主要有三种:程序循环检测、中断驱动直接内存访问。

    目录

    1、程序循环检测方式

    2、中断驱动方式

    3、直接内存访问方式


    单片机I/O设备的控制方式主要有三种:程序循环检测、中断驱动和直接内存访问。

    1、程序循环检测方式

    程序循环检测方式的基本思路是:在程序(一般是设备驱动程序)当中,通过不断地检测I/O设备的当前状态,来控制一个I/O操作的完成。具体来说,在进行I/O操作之前,要循环地去检测该设备是否已经就绪。如果是,就向控制器发出一条命令,启动这一次的I/O操作。然后,在这个操作的进行过程中,也要循环地去检测设备的当前状态,看它是否已经完成。总之,在I/O操作的整个过程中,控制I/O设备的所有工作都是由CPU来完成的。这种方式也称为是繁忙等待方式或轮询方式。它的缺点主要是:在进行一个I/O操作的时候,要一直占用着CPU,这样就会浪费CPU的时间。

    下图所示是循环检测方式的一个例子。假设I/O地址采用的是内存映像编址方式,现在需要在打印机上打印一个字符串“ABCDEFGH”。对于操作系统来说,要完成这个任务,其实很简单,只要把这八个字符一个接一个地送到打印机设备的I/O端口地址就可以了。如图(a)所示,这八个字符被保存在系统内核的一个缓冲区当中,并用指针p来指向它们。status_ reg 这个内存单元对应于打印机控制器里面的状态寄存器, data register这个内存单元对应于它的数据寄存器,现在要做的事情,就是把这八个字符一个接一个地放到数据寄存器当中。

    图(b) 所示是相应的程序。它的基本思路是:逐个去打印每一个字符。在打印一个字符之前,首先用一个while语句来检测打印机的当前状态,看它是否已经就绪,如果还没有就绪,就在这里循环等待;如果已经就绪,就把当前的字符送入到打印机的数据寄存器当中。在本例中,由于采用了内存映像的编址方式,因此,在程序员眼中,状态寄存器和数据寄存器都被看成是普通的内存单元,对它们的访问也是普通的赋值操作,不需要专门的I/O指令。但是这个赋值操作的功能与普通的赋值操作不同,它相当于是给打印机发出了一个命令,让它去打印一个字符。另外,每次打印完-一个字符后,都要重新判断设备是否就绪,因为相对于CPU来说,打印机是一个慢速设备,它在执行打印命令时,不可能像CPU那么快,而是需要一定的时间来完成。因此,当CPU把一个字符交给它之后,必须循环等待一段时间, 才能去处理下一一个字符。

    2、中断驱动方式

    循环检测的控制方式,需要占用大量的CPU时间。假设打印机的打印速度为100字符/秒,在循环检测方式下,当一个字符被写入到打印机的数据寄存器后,CPU要等待10ms才能把下一个字符写进去,而这10ms的时间,就在循环等待中被白白浪费掉了。为了解决这个问题,一种办法就是让CPU在这10ms的时间内,先去运行其他的任务,然后等打印机处理完上一个字符后,CPU再接着处理下一个字符。这种方法被称为是中断驱动的控制方式。它的基本思路是:当一个用户任务需要进行I/O操作时,会去调用相应的系统函数,由这个函数来发起I/O操作,并将当前任务阻塞起来,然后调度其他的任务去使用CPU。当所需的I/O操作完成时,相应的设备就会向CPU发出一个中断,系统在中断处理程序当中,如果发现还有数据需要处理,就再次启动I/O 操作。在中断驱动的控制方式下,数据的每一次读写还是通过CPU来完成,只不过当I/O设备在进行数据处理时,CPU不必在那里等待,而是可以去执行其他任务。

    仍以打印字符的问题为例。如下图所示,在中断驱动方式下,对于用户程序来说,它所做的事情可能是:把需要打印的字符串放到一个缓冲区buffer中,然后调用一个系统调用函数print。在print 系统调用中,首先把用户缓冲区中的字符串复制到系统内核的字符数组p当中,然后打开中断。接下来是一个循环检测语句,判断打印机的当前状态是否就绪,当打印机就绪后,就把第一个字符放到数据寄存器里面去打印。接下来,未等该字符打印完,就去调用系统的调度器,选择另一个就绪任务去运行,而当前的这个任务,就会被阻塞起来。

    当打印机完成一个字符后,将向CPU发出一个中断。在中断处理程序当中,首先判断一下,如果所有的字符都已打印完,那么就去阻塞队列中,把用户任务唤醒,使它处于就绪状态;如果还有字符需要打印,就直接把下一个字符复制到打印机的数据寄存器当中,启动打印操作,而不需要再去循环地判断打印机是否就绪。接下来是一些后继处理,先向中断控制器发出一个确认信号,然后结束中断处理程序,返回到被中断的那个任务。

    3、直接内存访问方式

    在中断驱动的控制方式下,每一次数据读写还是通过CPU来完成,而且每一次处理的数据量很少,如1个字节,所以中断出现的频率就很高。而中断处理需要额外的系统开销,所以也会浪费一些CPU时间。因此人们又提出了一种新的解决办法,也就是直接内存访问(Direct Memory Access, DMA)的控制方式。它的基本思路是:让DMA控制器来代替CPU,完成I/O设备与内存之间的数据传送,从而空出更多的CPU时间,去运行其他的任务。

    仍以打印字符的问题为例。如下图所示,在DMA控制方式下,用户程序所做的事情是完全相同的,即把字符串复制到一个缓冲区buffer 当中,然后调用系统函数print。在print函数当中,首先也是把buffer 当中的字符串复制到系统内核的缓冲区p当中,然后对DMA控制器进行编程,设置它的各个寄存器的内容,包括内存起始地址、需要打印的字符个数、数据传输的方向等。之后,print 函数就完成了任务,所以就调用系统的调度程序,

    选择另一个就绪任务去运行,而当前的这个任务就会被阻塞起来。接下来,当CPU正在执行这个新任务的同时,DMA控制器会与设备控制器进行交互,把需要打印的字符,一个接一个地送到打印机控制器当中。在所有的字符都打印完之后,就向CPU发出一个中断,表明这一次的I/O操作已经全部完成了。因此,在中断处理程序里面,已经没有什么实质性的工作,先是向中断控制器发出一个确认信号,然后唤醒刚才被阻塞的任务。

    采用DMA控制方式,最大的优点是减少了中断的次数。原本每打印一个字符,都要产生一次中断,而现在当所有的字符都打印完后,才会产生一个中断,这样就减少了中断处理的开销。

    展开全文
  • 中断DMA的区别

    千次阅读 2019-03-02 13:41:49
    DMA:是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制,使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的... 所以中断和DMA的区别就是DMA不需CPU参与而中断...

    DMA:是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制,使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高系统的吞吐率.

    中断:是指CPU在执行程序的过程中,出现了某些突发事件时CPU必须暂停执行当前的程序,转去处理突发事件,处理完毕后CPU又返回源程序被中断的位置并继续执行。

         所以中断和DMA的区别就是DMA不需CPU参与而中断是需要CPU参与的。

    展开全文
  • DMA 中断和查询三者的区别

    千次阅读 2017-03-14 10:21:45
    要把外设数据读入内存或把内存数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU利用率。  2: 中断传送 是由CPU通过中断服务程序来传送,...
  • DMA传送方式的优先级高于程序中断,两者的区别主要表现在对CPU的干扰程度不同。 程序中断请求不但使CPU停下来,而且要CPU执行中断服务程序为中断请求服务,这个请求包括了对断点现场的处理以及CPU与外设的传送,...
  • 【建议收藏】 计算机组成原理—DMA中断控制、I/O之间联系与区别 本篇文章主要是记录我对于计算机组成原理中所遇到一些疑问疑惑记录-----主要用于考研记录 本章一共有几个知识点比较懵: ​ 1.为什么要...
  • DMA:是一种无须CPU的参与就可以让外设与系统内存之间进行双向数据传输的硬件机制,使用DMA可以使系统CPU从实际的I/O数据传输过程中摆脱出来,从而大大提高...所以中断和DMA的区别就是DMA不需CPU参与而中断是需要CPU
  • 目录 IO结构功能: 查询、中断DMA方式。...对于裸机中断和OS中断区别: 在裸机中中断,在某一时刻中断发生,执行中断服务程序中断服务程序执行完成后,返回中断发生处继续执行其它程序。(保护现场)。
  • DMA copyCPU copy

    2020-05-14 23:02:15
    DMA(Direct Memory Access) ...当DMA结束后,DMAC通过中断通知CPU数据传输已经结束,由CPU执行相应的中断服务程序进行后续处理。 与CPU copy的区别程序或者操作者对CPU发出指令,这些指令..
  • 当应用程序事先不知道要接收字节大小时,使用UART和DMA接收数据 使用UART和DMA传输数据以避免CPU停顿并将CPU用于其他目的 目录 缩略语 DMA:STM32中直接内存访问控制器 UART:通用异步接收器发送器 USART:通用...
  • dma.c

    2016-11-08 23:50:00
    /* 重复了一下以前的代码,对于理解是比较有价值的 ,由于自己电脑联网的原因没有在板子上跑,... * 对比普通的copy dma功能的区别. * 提示: * 一次dma传输完成之后让进程休眠,然后在中断服务程序中唤醒. ...
  • 我们来比较一下STM32F4与MAX32630在ADC方面的区别:STM32F4:(1)12位ADC(2)支持DMA(3)每个ADC通道自带数据寄存器(4)最大转换速率2.4MHzMAX32630:(1)10位ADC(2)不支持DMA(3)每个ADC通道共用一个数据...
  • linux 设备驱动程序

    2009-05-10 16:57:23
    第12章“加载块设备驱动程序”介绍了如何实现块设备驱动程序,强调字符设备驱动程序的区别。接下来,第13章“Mmap和DMA”讲解了我们原先在内存管理中留下来的问题:mmap和DMA。到此为止,关于字符设备块设备驱动...
  • 8.4.1 标准广域网微端口驱动程序与局域网微端口驱动程序的区别 115 8.4.2 CoNDIS广域网微端口驱动程序的附加特性 115 8.4.3 广域网微端口驱动程序提供的服务 116 8.4.3.1 注册为广域网微端口驱动程序 116 8.4.3.2 ...
  • 网络驱动程序设计(NDIS)

    热门讨论 2009-11-22 21:24:00
    8.4.1 标准广域网微端口驱动程序与局域网微端口驱动程序的区别 115 8.4.2 CoNDIS广域网微端口驱动程序的附加特性 115 8.4.3 广域网微端口驱动程序提供的服务 116 8.4.3.1 注册为广域网微端口驱动程序 116 8.4.3.2 ...
  • NIC驱动程序 109 8.1 RAS 体系结构 109 8.2 NDISWAN 概述 111 8.3 网络卡、绑定、连接 113 8.4 广域网微端口驱动程序的实现 114 8.4.1 标准广域网微端口驱动程序与局域网微端口驱动程序的区别 115...
  • io控制方式有四种:程序查询方式、程序中断方式、dma方式、通道方式 寻找扇区用旋转一半的时间,另外传输延时也要注意 外部设备 i/o接口 主要是独立编制统一编制的区别 i/o方式 程序查询: cpu执行初始
  • 2.简述同步控制方式异步控制方式的定义、特点、优缺点应用场合,并说明两者最核心的区别是什么? 3.什么是主设备,什么是从设备? 4.什么是总线周期? 5.控制器的分类 6.主机外设的连接方式 7.直接程序...
  • 软硬中断的区别,应用场景 中断由什么组成,系统怎么处理的 中断的上下步 DMA 是什么,应用场景 进程通信方式有哪些 哪些方式可以跨主机通信 哪个通信方式最快 cas 信号量 的区别 进程有哪些...
  • 文章目录I/O系统概述I/O系统组成I/O 设备分类常见IO设备输入设备输出设备外存储器(辅助存储器)I/O接口设备控制...程序中断和调用子程序有何区别?系统调用函数调用进程切换有什么区别?(宏观上分析)一点探究I/O
  • 考研面试复习题

    2019-07-16 19:32:14
    1. 通道技术,DMA, 两者的区别是什么?这两个技术哪个先提出来的?哪个性能更强? DMA (Direct memory access)直接内存访问,数据交换不经过CPU,直接在内存I/O 设备之间进行。 常用的设备CPU之间数据传送控制...
  • Linux驱动整理1

    2020-12-04 14:26:02
    FIQ与IRQ的区别 Kernel Panic常见原因 linux中内核空间、用户空间 **字符设备与块设备 字符设备:字符设备是个能够像字节流(类似文件)一样被访问的设备,由字符设备驱动程序来实现这种特性。 字符设备驱动程序...
  • 2.单重中断多重中断的中断服务程序的主要区别在于_____________。 3.DMA 的传送过程为_____________、_____________、_____________。 4.在机器码中“0”有唯一表示的码制是_____________、____________。 5....
  • 理解I/O设备主机交换信息的控制方式(程序查询方式、程序中断方式、DMA方式、通道方式、I/O处理机方式)以及各自的特点(包括他们之间的区别、联系以及对CPU工作效率的影响等)。程序查询方式过程特点优...
  • 2.3.3 NorFlashNandFlash的区别和使用 2.3.4 烧写Flash 2.3.5 程序的运行 2.4 ARMC语言程序的基本规则系统初始化程序 2.4.1 ARM使用C语言编程基本规则 2.4.2 初始化程序和开发环境设置 2.5 习题与练习 第3章 ...
  • 输入输出(IO)

    2020-12-13 15:15:53
    文章目录输入输出(IO)I/O控制器I/O控制器程序直接控制方式(轮询)中断驱动方式DMA方式通道控制方式I/O软件层次结构用户层软件设备独立性软件设备驱动程序中断处理程序I/O核心子系统假脱机技术设备分配回收...

空空如也

空空如也

1 2
收藏数 40
精华内容 16
关键字:

dma和程序中断的区别