190 likes | 341 Views
JXARM9-2410 实验系统教案 5.3 DMA 实验. 2014/8/25. 提纲. 实验目的. 1. 实验内容. 2. 预备知识. 3. 4. 实验设备. 5. 基础知识. 6. 实验过程. 7. 实验报告要求. 一 实验目的. 实验目的. 了解 DMA 传送原理 掌握 S3C2410 DMA 控制器的使用 掌握 DMA 软件编程方法. 二 实验内容. 实验内容. 编写单字节方式、双字节方式和四字节方式常规内存拷贝及时间检测程序 编写 DMA 方式内存拷贝及时间检测程序 比较 DMA 方式内存拷贝及常规内存拷贝的效率.
E N D
JXARM9-2410实验系统教案5.3 DMA实验 2014/8/25
提纲 实验目的 1 实验内容 2 预备知识 3 4 实验设备 5 基础知识 6 实验过程 7 实验报告要求
一 实验目的 实验目的 • 了解DMA传送原理 • 掌握S3C2410 DMA控制器的使用 • 掌握DMA软件编程方法
二 实验内容 实验内容 • 编写单字节方式、双字节方式和四字节方式常规内存拷贝及时间检测程序 • 编写DMA方式内存拷贝及时间检测程序 • 比较DMA方式内存拷贝及常规内存拷贝的效率
三 预备知识 预备知识 • 了解ADT集成开发环境的基本功能 • 了解DMA的原理以及处理步骤
四 实验设备 实验设备 • JXARM9-2410教学实验箱 • ADT1000仿真器和ADT IDE集成开发环境 • 串口连接线
五 基础知识 直接数据存储 - DMA • DMA方式 • 当高速外设要与系统内存或者要在系统内存的不同区域之间,进行大量数据的快速传送时,查询方式和中断方式可能不能满足要求 • 直接存储器存取(DMA)就是为解决这个问题提出的 • 采用DMA方式,在一定时间段内,由DMA控制器取代CPU,获得总线控制权,来实现内存与外设或者内存的不同区域之间大量数据的快速传送
五 基础知识 典型的DMA控制器(以下简称DMAC)的工作电路
五 基础知识 DMA数据传送的工作过程 • 1) DMAC发出DMA传送请求 • 2) DMAC通过连接到CPU的HOLD信号向CPU提出DMA请求 • 3) CPU在完成当前总线操作后会立即对DMA请求做出响应,CPU的响应包括两个方面: • CPU将控制总线、数据总线和地址总线浮空,即放弃对这些总线的控制权 • CPU将有效的HLDA信号加到DMAC上,以通知DMAC CPU已经放弃了总线的控制权
五 基础知识 DMA数据传送的工作过程 • 4) CPU将总线浮空,即放弃了总线控制权后,由DMAC接管系统总线的控制权,并向外设送出DMA的应答信号 • 5) DMAC送出地址信号和控制信号,实现外设与内存或内存之间大量数据的快速传送 • 6) DMAC将规定的数据字节传送完之后,通过向CPU发HOLD信号,撤消对CPU的DMA请求。CPU收到此信号,一方面使HLDA无效,另一方面又重新开始控制总线,实现正常取指令、分析指令、执行指令的操作。
五 基础知识 DMA传送方式 • I/O接口到存储器 • 存储器到I/O接口 • 存储器到存储器
五 基础知识 I/O接口到存储器的传送 • 当进行由I/O接口到存储器的数据传送时,来自I/O接口的数据利用DMAC送出的控制信号,将数据输送到系统数据总线D0~D7上,同时,DMAC送出存储器单元地址及控制信号,将存在于D0~D7上的数据写入所选中的存储单元中。这样就完成了由I/O接口到存储器一个字节的传送。同时DMAC修改内部地址及字节数寄存器的内容。
五 基础知识 存储器到I/O接口 • 与前一种情况类似,在进行这种传送时,DMAC送出存储器地址及控制信号,将选中的存储单元的内容读出放在数据总线D0~D7上,接着,DMAC送出控制信号,将数据写到规定的(预选中)端口中去,而后MDAC自动修改内部的地址及字节数寄存器的内容
五 基础知识 存储器到存储器 • 存储器到存储器的DMA数据传送采用数据块传送方式,首先送出内存源区域的地址和控制信号,将选中内存单元的的数据暂存,接着修改地址及字节数寄存器的值,然后输出内存目的区域的地址及控制信号,将暂存的数据,通过系统数据总线,写入到内存的目的区域中去,最后修改地址和字节数寄存器的内容,当字节计数器减到零或外部输入时可结束一次DMA传输过程
五 基础知识 S3C2410的DMA控制器 • S3C2410集成了4个通道的DMA控制器: • 源和目的都在系统总线上; • 源在系统总线而目的在外设总线上; • 源在外设总线而目的在系统总线上; • 源和目的都在外设总线上。
五 基础知识 实验说明 • 本实验通过DMA方式实现存储器到存储器间的数据传送,并将其与常规的内存拷贝操作进行比较
五 基础知识 拷贝动作的计时处理 • 采用定时器进行计时处理,采用函数Timer_Start启动计时处理,参数divider 表示定时时间间隔, • 0 : 16 us • 1 : 32 us • 2 : 64 us • 3 : 128 us • 操作完成时调用Timer_Stop停止定时器计数,其返回值为计数值,该值乘以时间间隔(128us)即为计时时间 Timer_Start(3); /* 128 us */ time=Timer_Stop(); /* 停止定时器 */
五 基础知识 常规的内存拷贝操作 • 字节拷贝 *(unsigned char*)(dstAddr) = *(unsigned char*)(srcAddr); • 双字节拷贝 *(unsigned short*)(dstAddr) = *(unsigned short*)(srcAddr); • 四字节拷贝 *(unsigned int*)(dstAddr) = *(unsigned int*)(srcAddr);
六 实验报告要求 实验报告要求 • 什么叫DMA传送方式?试说明DMA方式传送数据的主要步骤。 • 试比较DMA传输、查询式传输及中断方式传输之间的优缺点和适用场合?