dma控制器

DMA原理

半腔热情 提交于 2020-01-07 08:44:07
1.DMA请求 CPU对DMA控制器初始化,并向 I/O接口 发出操作命令,I/O接口提出DMA请求。 2.DMA响应   DMA控制器对DMA请求判别优先级及屏蔽,向总线裁决逻辑提出总线请求。当CPU执行完当前总线周期即可释放总线控制权。此时,总线裁决逻辑输出总线应答,表示DMA已经响应,通过DMA控制器通知I/O接口开始DMA传输。 3.DMA传输   DMA控制器获得总线控制权后,CPU即刻挂起或只执行内部操作,由DMA控制器输出读写命令,直接控制RAM与I/O接口进行DMA传输。   在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过中不需要中央处理器的参与。开始时需提供要传送的数据的起始位置和数据长度。 4.DMA结束   当完成规定的成批数据传送后,DMA控制器即释放总线控制权,并向I/O接口发出结束信号。当I/O接口收到结束信号后,一方面停 止I/O设备的工作,另一方面向CPU提出中断请求,使CPU从不介入的状态解脱,并执行一段检查本次DMA传输操作正确性的代码。最后,带着本次操作结果及状态继续执行原来的程序。   由此可见,DMA传输方式无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM与I/O设备开辟一条直接传送数据的通路,使CPU的效率大为提高。    DMA(Direct Memory Access

EDMA - DMA QDMA 完美总结

本秂侑毒 提交于 2020-01-05 09:03:35
EDMA - DMA QDMA -------------------------------- 做个参考,和6487/8 的EDMA3的user guide有点区别. ------------------------------------ EDMA概要 ①EDMA数据传输有两种发起方式: ü CPU发起的EMDA数据传输(非同步方式):需要传输时,CPU设置ESR寄存器的相应位为1,从而触发一个EDMA事件的产生,事件对应的通道参数被送往地址硬件并且完成相应的处理,这种非同步方式的实时数据传输无需设定EER寄存器; ü 事件触发方式EDMA数据传输(同步方式):ER寄存器保存外设发送过来的事件,一旦CPU设置EER寄存器的相应位为1后,ER中的事件才会提交给事件编码器(Event Encoder),并且进一步引起相关的传输参数的发送给地址产生硬件;如果EER中对应于某事件的位没有置1,则ER寄存器中的事件将保留,一旦置1则触发EDMA的传输,这种特性可以应用到EDMA Chain传输,需要EER和CCER结合使用; ②EDMA每个通道是和特定的系统事件绑定的,如下表所示: ③EDMA Chain Transfer:一个通道传完继续传另一个通道; ④EDMA Link Tansfer:设定参数后,通道的数据传输传完,再载入这个通道的其他参数设定,再进行数据传输; (2

STM32F407之DMA-笔记

放肆的年华 提交于 2020-01-05 09:02:49
学习要点记录,并不全面,祥参 参考手册RM0090 简介: DMA用于外设-内存,内存-内存之间数据的快速传输 DMA控制器由双AHB 主总线架构和独立的FIFO组成,以此来优化系统带宽 两个DMA控制器一共含有16个数据流,每个控制器含有8个数据流;每个数据流有8个通道,每个数据流有一个优先级仲裁器。 主要特征: 双AHB总线架构,一个负责内存访问,另一个负责外设访问 AHB从机编程接口只支持32位访问 每个数据流拥有4个独立的32位FIFO,直接模式和FIFO模式都可以使用 --FIFO模式下,可以通过软件设置FIFO阈值为1/4,1/2,3/4 --直接模式下,每个DMA请求立即触发一次数据传输。当处于直接模式,从内存向外设传输数据时,DMA只从内存预装载一个数据到FIFO --每个数据流可以通过软件配置为: -------常规通道,支持 外设-内存 ;内存-外设 ;内存-内存 。 -------双缓冲通道,支持内存双缓冲 --数据流之间的优先级可以通过软件设置为:非常高 ;高 ;中等 ;低 ;如果优先级相等,那么数据流编号越小,优先级越高 --只有DMA2的每个数据流支持软件触发的数据传输,而且只有传输方向为: 内存-内存 --每个数据流请求是8个通道中的一个。选择可以通过软件设置,而且允许一些外设来触发DMA请求 --传输的数据量可以通过DMA控制器管理,或者通过外设管理

STM32F10XX DMA学习

耗尽温柔 提交于 2019-12-31 17:56:30
DMA(Direct Memory Access)是计算机科学中的一种内存访问技术。它允许某些电脑内部的硬件子系统(电脑外设),可以独立地直接读写系统存储器,而不需绕道 CPU。 DMA 用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。传输过程中, CPU 是闲置的,数据的高速传输不需要用到 CPU,节省了 CPU 的资源来做其他的操作。 在硬件系统中,主要由 CPU(内核)、外设、内存(SRAM)、总线等结构组成,数据经常要在存储器与外设直接转移,或是从外设 A 转移到外设 B。在不使用DMA 情况下, 内核通过 DCode 经过总线矩阵协调,使用 AHB 把外设 ADC 采集的数据读取到内核,然后内核 Dcode 再通过总线矩阵协调,把数据存放到内存 SRAM中 。而 DMA 就可以取代这样的工作, 由 DMA 控制器的 DMA 总线与总线矩阵协调,使用 AHB 把外设 ADC 的数据经由 DMA 通道存放到内存 SRAM。 使用 DMA为多通道采集、采样频率高、连续输出数据的 AD 采集提供了更高效的方法。 这里的外设一般是指外设的数据寄存器,比如 ADC、 SPI、 I2C 等外设的数据 寄存器。 仲裁器, 一个 DMA 控制器对应 8 个数据流,数据流包含要传输数据的源地址、目标地址、数据等信息。如果我们需要同时使用同一个 DMA 控制器多个外设请求时

vxworks下gmac调试的总结

こ雲淡風輕ζ 提交于 2019-12-25 05:28:21
1:3280芯片手册详解过程: MAC 控制器支持 DMA 接收和发送,内部在接收和发送方向各有一个 2048 字节的 FIFO作为缓存。由于 FIFO 深度所限,MAC 控制器不支持硬件自动流控机制。 模式和带宽的切换 1:在做 MII 和 RMII 之间的切换前,应该先掉电 2:上电后软件重新配置芯片系统控制模块中MAC 的工作接口模式寄存器,之后再启动 MAC 控制器 3:需要注意的是,在收发功能开启的状态下不能对双工模式或速率进行改变(先关掉Mac收发,这样可以避免出现大量的错包的情况) 1:所有的发送中断和接收中断触发的条件都是dma操作完成(dma完成数据搬运的操作); 2:较早发送和接收中断说明数据帧较大不是一个buffer发送; 芯片的寄存器空间: MAC 模块支持以太网 PHY 的 MII 接口和 RMII 接口。 CSR(Control & Status 寄存器)共占有 8KB 地址空间,分为两段:DMA CSR 和 MAC CSR。 AHB Master 接口为 DMA 模块与系统主机的接口。 APB 接口即 CSR 接口,用于读写访问 DMA CSR 和 MAC CSR。 DMA 模块有独立的发送和接收引擎,进行系统内存与 MAC 间的数据搬运,将 CPU 的 干预最小化,只在帧发送或接收结束以及其他一些条件(如发生错误)下中断 CPU。 DMA

PCI总线 DMA burst 基本概念

拥有回忆 提交于 2019-12-24 06:39:35
转载地址: http://blog.csdn.net/sunjiajiang/article/details/7945057 DMA和burst不是一个概念。 DMA传送不经过CPU的控制,假如硬盘的数据不能经过DMA控制器读到内存,那么每完成一次将硬盘的数据读出来,再存放到内存的操作,都要通过CPU运行几条读写指令来完成,这时CPU就做不了别的事了,如果有DMA控制器,则这个过程不需要CPU的参与,只需要占用总线就可以了。CPU还可以去完成别的运算。 Burst操作还是要通过CPU的参与的,与单独的一次读写操作相比,burst只需要提供一个其实地址就行了,以后的地址依次加1,而非burst操作每次都要给出地址,以及需要中间的一些应答、等待状态等等。如果是对地址连续的读取,burst效率高得多,但如果地址是跳跃的,则无法采用burst操作 一般芯片的dma有基本功能。 1、普通的内存、外设间互传数据,一次性的。 PCI设备DMA控制器,设置好后DMA 控制器的寄存器,PCI设备就会通过PCI总线向其他设备发送信号。 2、支持链表的,美其名曰“scatter”,内核有struct scatter可以参考。 说一下注意点: dma有burst、burst size、transfer的概念: burst: dma实际上是一次一次的申请总线,把要传的数据总量分成一个一个小的数据块

ARM数据/地址总线架构简析

霸气de小男生 提交于 2019-12-21 20:01:20
ARM架构简析 1,ARM概述 现在大家讲的ARM的概念实际上是很模糊的,他可能指的是一类芯片,或者指的是ARM公司,亦或者是精简指令集,还是千万人手中的饭碗。下面引用一段关于百度百科关于ARM的准确描述 ARM架构,曾称进阶精简指令集机器(Advanced RISC Machine)更早称作Acorn RISC Machine,是一个32位精简指令集(RISC)处理器架构。还有基于ARM设计的派生产品,重要产品包括Marvell的XScale架构和德州仪器的OMAP系列。 ARM家族占比所有32位嵌入式处理器的75%,成为占全世界最多数的32位架构。 在1980年代晚期,苹果电脑开始与Acorn合作开发新版的ARM核心,由于这专案非常重要,Acorn甚至于1990年将设计团队另组成一间名为安谋国际科技(Advanced RISC Machines Ltd.)的新公司。也基于这原因,使得ARM有时候反而称作Advanced RISC Machine而不是Acorn RISC Machine。由于其母公司ARM Holdings plc于1998年的伦敦交易市场和NASDAQ挂牌上市[1],使得Advanced RISC Machines成了ARM Ltd旗下拥有的产品。 这个专案到后来进入了ARM6,首版的式样在1991年释出,然后苹果电脑使用ARM6架构的ARM

DMA控制器

拜拜、爱过 提交于 2019-12-20 08:58:33
DMA控制器依赖于平台硬件,这里只对i386的8237 DMA控制器做简单的说明,它有两个控制器,8个通道,具体说明如下: 控制器1: 通道0-3,字节操作, 端口为 00-1F 控制器2: 通道 4-7, 字操作, 端口咪 C0-DF - 所有寄存器是8 bit,与传输大小无关。 - 通道 4 被用来将控制器1与控制器2级联起来。 - 通道 0-3 是字节操作,地址/计数都是字节的。 - 通道 5-7 是字操作,地址/计数都是以字为单位的。 - 传输器对于(0-3通道)必须不超过64K的物理边界,对于5-7必须不超过128K边界。 - 对于5-7通道page registers 不用数据 bit 0, 代表128K页 - 对于0-3通道page registers 使用 bit 0, 表示 64K页 DMA 传输器限制在低于16M物理内存里。装入寄存器的地址必须是物理地址,而不是逻辑地址。 对于0-3通道来说地址对寄存器的映射如下: A23 ... A16 A15 ... A8 A7 ... A0 (物理地址) | ... | | ... | | ... | | ... | | ... | | ... | | ... | | ... | | ... | P7 ... P0 A7 ... A0 A7 ... A0 | Page | Addr MSB | Addr LSB |

STM32 DMA传输笔记(HAL库版)

拟墨画扇 提交于 2019-12-19 07:26:56
DMA,全称为:Direct Memory Access,即直接存储器访问。 DMA传输方式无需CPU 直接控制传输 ,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为RAM 与I/O设备开辟一条直接传送数据的通路,能使CPU 的效率大为提高。 一、DMA请求映像   STM32F10x有两个DMA控制器,使用DMA控制器可使数据从存储器到存储器、存储器到外设、外设到存储器。每个控制器有若干通道,参考《STM32参考手册》,各通道请求一览如下图: 二、DMA初始化    1、使能DMA时钟 __HAL_RCC_DMA1_CLK_ENABLE(); //DMA1时钟使能    2、关联DMA与UART1 DMA_HandleTypeDef UART1TxDMA_Handler; //DMA句柄 __HAL_LINKDMA(&UART1_Handler,hdmatx,UART1TxDMA_Handler); //将DMA与USART1联系起来(发送DMA)    3、配置DMA句柄 //Tx DMA配置 UART1TxDMA_Handler.Instance=chx; //通道选择 通道4指的是UART1Tx UART1TxDMA_Handler.Init.Direction=DMA_MEMORY_TO_PERIPH; //存储器到外设 /*由于是从存储器读数据给外设

【计算机组成原理】 输入/输出系统

依然范特西╮ 提交于 2019-12-18 02:35:31
I/O 系统基本概念 I/O 系统中的几个基本概念如下: 外部设备。包括输入/输出设备及通过输入。输出接口才能访问的外存储结构。 接口。在各个外设与主机之间传输数据时进行各种协调工作的逻辑部件。协调包括传输过程中速度的匹配、电平和格式转换等。 输入设备,用于向计算机系统输入命令和文本、数据等信息的部件。键盘和鼠标是最基本的输入设备。 输出设备。用于将计算机系统中的信息输出到计算机外部进行显示、交换等的部件。显示器和打印机是最基本的输出设备。 外存设备。指除计算机内存及 CPU 缓存等外的存储器。硬磁盘、光盘等是最基本的外存设备。 一般来说,I/O 系统由 I/O 软件和 I/O 硬件两部分构成: I/O 软件。包括驱动程序、用户程序、管理程序、升级补丁等。通常采用 I/O 指令和通道指令实现 CPU 与 I/O 设备的信息交换。 I/O 硬件。包括外部设备、设备控制器和接口、I/O 总线等。通过设备控制器来控制 I/O 设备的具体动作:通过 I/O 接口与主机(总线)相连。 在输入/输出系统中,经常需要进行大量的数据传输,而传输过程中有各种不同的 I/O 控制方式,基本的控制方式有以下 4 种: 程序查询方式。由 CPU 通过程序不断查询 I/O 设备是否已经做好准备,从而控制 I/O 设备与主机交换信息。 程序中断方式。只在 I/O 设备准备就绪并向 CPU