DMA控制器

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 |   (DMA 地址寄存器)

对于5-7通道来说地址对寄存器的映射如下:

A23 ... A17 A16 A15 ... A9 A8 A7 ... A1 A0    (物理地址)

|  ...  |   \   \   ... \  \  \  ... \  \
    |  ...  |    \   \   ... \  \  \  ... \  (没用)
    |  ...  |     \   \   ... \  \  \  ... \
   P7  ...  P1 (0) A7 A6  ... A0 A7 A6 ... A0

|      Page      |  Addr MSB   |  Addr LSB  |   (DMA 地址寄存器)

通道 5-7 传输以字为单位, 地址和计数都必须是以字对齐的。

在include/asm/dma.h中有i386平台的8237 DMA控制器的各处寄存器的地址及寄存器的定义,这里只对控制寄存器加以说明:

DMA Channel Control/Status Register (DCSRX)

第31位 表明是否开始

第30位选定Descriptor和Non-Descriptor模式

第29位 判断有无中断

第8位 请求处理 (Request Pending)

第3位 Channel是否运行

第2位 当前数据交换是否完成

第1位是否由Descriptor产生中断

第0位 是否由总线错误引起中断

DMA控制器

时间: 2024-11-03 22:41:13

DMA控制器的相关文章

STM32学习笔记8(DMA控制器)

DMA简介(1) DMA,全称为:Direct Memory Access,即直接存储器访问,DMA 用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输.当 CPU 初始化这个传输动作,传输动作本身是由DMA 控制器 来实行和完成.DMA 传输对于高效能嵌入式系统算法和网络是很重要的.DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路,能使 CPU 的效率大为提高.STM32 最多

Zynq PS DMA控制器应用笔记

Zynq PS DMA应用笔记 Hello,Panda Zynq-7000系列器件PS端的DMA控制器采用ARM的IP核DMA-330(PL-330)实现.有关DMA控制器的硬件细节及相关指令集.编程实例内容参考ARM官方文档: DDI0424D:dma330_r1p2_trm.pdf DAI0239A:dma330_example_programs.pdf 本文开发环境为Xilinx SDK2015.2,DMA库版本为dmaps_v2_1. 1 结构特点 DMA控制器具有以下的特点: n   

基本的DMA控制器

DMA的基本概念 直接内存访问(DMA)是一种完全由硬件执行I/O交换的工作方式.在这种方式中,DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,而直接在内存和I/O设备之间进行 .DMA方式一般用于高速传送成组数据.DMA控制器将向内存发出地址和控制信号,修改地址,对传送的字的个数计数,并且以中断方式向CPU报告传送操作的结束. DMA方式的主要优点是速度快.由于CPU根本不参加传送操作,因此就省去了CPU取指令.取数.送数等操作.在数据传送过程中,没有保存现场.恢复现场之类的

DMA控制器从外设请求的映射表

NIOS2随笔——DMA(1)

1. NIOS2 DMA控制器结构框图 与其它IP外设一样,DMA控制器也是通过AVALON MM总线,实现寄存器配置,数据读写功能. 2. NIOS2 DMA三种传输方式 3. NIOS2 DMA API函数 NIOS2 DMA的API函数原型都定义在alt_dma.h头文件中,常用的API函数如下: alt_dma_txchan alt_dma_txchan_open (const char* name); static ALT_INLINE int alt_dma_txchan_send 

ok6410的DMA裸机总结

1.为何使用DMA:为了提高CPU的工作效率,避免多余的等待时间 2.关于DMA控制器:(1)通道数:2440有4个通道,6410有4个DMA控制器(初始化的时候要选择),32个通道.210有两种DMA一种是内存与内存之间,另外则是普通的内存与外设之间.(2)请求源:(3)基本时序 nXDREQ请求生效并经过2CLK周期同步后,nXDACK响应并开始生效,但至少还要经过3CLK的周期延迟,DMA控制器才可获得总线的控制权,并开始数据传输(4)工作模式:•Demond模式:如果DMA完成一次请求后

多功能PCIE交换机之五: 基于NTB的DMA

如果说PCIE多功能桥中的NTB为跨节点的数据传输铺好路.架好桥的话,那么PCIE多功能桥中的DMA就是多个节点之间的高铁和航班.没有NTB打通数据通道,DMA也不可能跨越节点.但没有DMA的话,NTB还是可以依赖CPU来在多个节点之间搬运数据.因此DMA对NTB而言是如虎添翼.锦上添花. 和NTB的单NT和双NTB配置相比,DMA可配置的选项比较多,但不管是中断模式.查询模式,也无论描述符是在DMA控制器片上还是片外,亦或配置成单个还是多个DMA channel,都有现成的代码可供参考或寄存器

DMA过程分析

1.1 当我们在应用程序中编写write系统调用,向磁盘中写入数据时,写入请求会先调用底层写函数,将请求先写入内存中的页快速缓存(page cache)中,写入成功则立马返回,真正的写入磁盘操作会延迟运行.Page cache是硬盘在内存中的一个缓存,是linux内核所使用的主要磁盘快速缓存,在绝大多数情况下,内核在读写磁盘时都引用page cache(极少数应用会绕过页快速缓存,如数据库软件). 当把page cache中的一页数据写到块设备之前,内核首先检查相应的页是否已经在快速缓存中,假设

cortex_m3_stm32嵌入式学习笔记(十九):DMA实验(高速传输)

DMA,全称为: Direct Memory Access,即直接存储器访问. DMA 传输方式无需 CPU 直接控制传输,也没有中断处理方式那样保留现场和恢复现场的过程,通过硬件为 RAM 与 I/O 设备开辟一条直接传送数据的通路, 能使 CPU 的效率大为提高. 即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU. 一个完整的DMA传输过程必须经过下面的4个步骤. 1.DMA请求 CPU对DMA控制器初始化,并向I/O接