【接口】【SPI】Polling Interrupt DMA

三種將資料在I/O間傳送的方法有

1. Polling
2. Interrupt-driven I/O
3. DMA(Direct Memory Access)

Polling:最簡單的方式讓I/O device與CPU溝通。I/O device只要將information放進status register,CPU會周期性的檢查並取得information來得知需要服務的device。

Interrupt-driven I/O:利用interrupt的機制,當一個I/O device需要服務時,會發出interrupt來通知CPU。一個I/O interrupt對於指令的執行是asynchronous,Control unit需要在執行一個新指令時檢查是否有pending I/O interrupt。I/O interrupt也會傳達更多訊息,如哪個device發出的interrupt和它的priority。

DMA(Direct Memory Access):提供一個device controller,讓I/O device能夠直接在記憶體做資料的傳輸,不需要CPU的參與。

DMA transfer的三個步驟
1. CPU要初始化DMA controller,包括提供I/O device的名稱、執行何種運算、記憶體位置以及所要傳送的bytes數。
2. DMA開始運作。如果request需要多於一次的transfer在bus上,DMA unit會產生下一個memory address和初始下一次的transfer。
3. 一旦DMA transfer完成,DMA controller發出一個interrupt給CPU。

優缺點比較
   Polling  Interrupt-driven I/O DMA 
優點 簡單容易執行,可利用軟體來更改CPU polling的順序 不用浪費許多時間在polling上面
適用於高速裝置

不用浪費許多時間在polling上面

缺點
因為CPU速度遠快於I/O device,會浪費許多時間在polling上

不適合high-bandwidth devices


需要有interrupt signals和interrupt service routine存在

不適合high-bandwidth devices

需要有DMA contro
时间: 2024-10-07 15:36:18

【接口】【SPI】Polling Interrupt DMA的相关文章

Arduino 串行外设接口(SPI)

时间有限有其他项目工作在忙,感觉作者写的不错,就先记录下来了. 这几天用SPI——Arduino 在供应商的电子原件上游离游走,重要的是可以读写了, 下面是在查资料看到的一篇不错的文章关于用Arduino 自带的SPI方式通信的,(虽然没用这种方法但感觉不错有时间可以学学.... 这几天我都是用什么SPI最底层的编程bit移位,什么汇编语言似的,惨! 所以说在学校的时候一定要好好学啊,别像我现学现用....新项目又来了,继续奋斗....) 参考:https://www.w3cschool.cn/

SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)

SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 第二,区别在电气信号线上: SPI总线由三条信号线组成:串行时钟(SCLK).串行数据输出(SDO).串行数据输入(SDI).SPI总线可以实现多个SPI设备互相连接.提供SPI串行时钟的SPI

驱动移植过程中DMA内存相关接口替换

1. 相关概念介绍及移植简介 1.1 物理地址与总线地址         1)物理地址是与CPU相关的.在CPU的地址信号线上产生的就是物理地址,在程序指令中的的虚拟地址经过段映射和页面映射后,就生成了物理地址,这个物理地址被放到CPU的地址线上.         2)总线地址,顾名思义,是与总线相关的,外设使用的就是总线地址.         在x86平台下,外设的I/O地址是独立的,即有专门的指令访问外设I/O,I/O地址就是所谓的"总线地址".而"物理地址"就

linux DMA接口

1.两种DMA映射类型 1.1. 一致性DMA映射(Consistent DMA mappings ) 主要用于映射长时间使用的区域. CPU和DMA controller不需要考虑cache的影响. 这里的consistent实际上是coherent的概念,不能保证consistent,也就是说需要memory barrier来保证memory order. 1.2 流式DMA映射(streaming DMA mapping) 主要用于一次性DMA传输,传输完成后就会释放. 2.指定DMA设备

【转】SPI总线协议

SPI总线协议 By Xiaomin | April 17, 2016| 技术 概述 SPI(Serial Peripheral Interface)总线是主要应用于嵌入式系统内部通信的串行同步传输总线协议.通常为四线制的SPI总线支持全双工通信.SPI最初由Motorola在2000年提出,Motorola所定义的SPI标准为业界广泛引用,但不同半导体公司的实施细节可能有所不同,这些区别体现在寄存器设置.信号定义.数据格式等.业界没有统一的SPI标准,具体应用需要参考特定器件手册. SPI协议

Dynamic DMA mapping Guide

一.前言 这是一篇指导驱动工程师如何使用DMA API的文档,为了方便理解,文档中给出了伪代码的例程.另外一篇文档dma-api.txt给出了相关API的简明描述,有兴趣也可以看看那一篇,这两份文档在DMA API的描述方面是一致的. 二.从CPU角度看到的地址和从DMA控制器看到的地址有什么不同? 在DMA API中涉及好几个地址的概念(物理地址.虚拟地址和总线地址),正确的理解这些地址是非常重要的. 内核通常使用的地址是虚拟地址.我们调用kmalloc().vmalloc()或者类似的接口返

SPI协议详解

 原文链接:https://blog.csdn.net/qq_38410730/article/details/80318821 SPI的基本介绍 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口,是Motorola首先在其MC68HCXX系列处理器上定义的. SPI接口主要应用在EEPROM.FLASH.实时时钟.AD转换器,还有数字信号处理器和数字信号解码器之间.SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线

SPI总线

一.SPI总线简介 串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口.SPI 用 于CPU与各种外围器件进行全双工.同步串行通讯.它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK).主机输入/从 机输出数据线(MISO).主机输出/从机输入数据线(MOSI).低电平有效从机选择线CS.当SPI工作时,在移位寄存器中的数据逐位从输出引脚 (MOSI)输出(高位在前),同时从输入引脚(

基于LSP的网络数据包截获(一) SPI

SPI是Service Provider Interface,WinSock2的服务提供者接口. WinSock2允许开发者编写自己的服务提供者接口SPI程序,自己编写的SPI程序安装到系统后,所有的WinSock请求会先发送到这个程序并由他完成网络调用. WinSock2 SPI允许开发两类服务提供者: 1.传输服务提供者(transport service provider) 能够提供建立通信.传输数据.日常数据流控制和错误控制等功能的服务. 以DLL形式存在,对外只有一个入口函数,即WSP