DMA实验报告.doc_第1页
DMA实验报告.doc_第2页
DMA实验报告.doc_第3页
DMA实验报告.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验七 dma实验一、 实验目的 1、 了解dma传送原理。2、 掌握s3c44b0 dma控制器的使用。3、 掌握dma软件编程方法。二、 实验内容 1、编写单字节方式、双字节方式和四字节方式常规内存拷贝及时间检测程序。2、编写dma方式内存拷贝及时间检测程序。3、比较dma方式内存拷贝及常规内存拷贝的效率。三、 实验设备1、 硬件s3c44b0教学实验箱pc机jtag仿真器串口线2、 软件 pc机操作系统arm developer suite v1.2multi-ice v2.2.5dnw(或者超级终端)四、 预备知识 1、 了解adt集成开发环境的基本功能。2、 了解dma的原理以及处理步骤。3、 熟悉s3c44b0 dma有关的寄存器。五、 基础知识1、 dma方式:当高速外设要与系统内存或者要在系统内存的不同区域之间,进行大量数据的快速传送时,查询方式和中断方式可能不能满足要求。直接存储器存取(dma)就是为解决这个问题提出的。采用dma方式,在一定时间段内,由dma控制器取代cpu,获得总线控制权,来实现内存与外设或者内存的不同区域之间大量数据的快速传送。2、 典型的dma控制电路3、 dma数据传送的工作过程3.1、dmac发出dma传送请求。3.2、dmac通过连接到cpu的hold信号向cpu提出dma请求。3.3、cpu在完成当前总线操作后会立即对dma请求做出响应,cpu的响应包括两个方面:cpu将控制总线、数据总线和地址总线浮空,即放弃对这些总线的控制权、cpu将有效的hlda信号加到dmac上,以通知dmac cpu已经放弃了总线的控制权。3.4、cpu将总线浮空,即放弃了总线控制权后,由dmac接管系统总线的控制权,并向外设送出dma的应答信号。3.5、dmac送出地址信号和控制信号,实现外设与内存或内存之间大量数据的快速传送。3.6、dmac将规定的数据字节传送完之后,通过向cpu发hold信号,撤消对cpu的dma请求。cpu收到此信号,一方面使hlda无效,另一方面又重新开始控制总线,实现正常取指令、分析指令、执行指令的操作。4、 dma传输方式4.1、i/o接口到存储器的传送:当进行由i/o接口到存储器的数据传送时,来自i/o接口的数据利用dmac送出的控制信号,将数据输送到系统数据总线d0d7上,同时,dmac送出存储器单元地址及控制信号,将存在于d0d7上的数据写入所选中的存储单元中。这样就完成了由i/o接口到存储器一个字节的传送。同时dmac修改内部地址及字节数寄存器的内容。 4.2、存储器到i/o接口:与前一种情况类似,在进行这种传送时,dmac送出存储器地址及控制信号,将选中的存储单元的内容读出放在数据总线d0d7上,接着,dmac送出控制信号,将数据写到规定的(预选中)端口中去,而后mdac自动修改内部的地址及字节数寄存器的内容。 4.3、存储器到存储器:存储器到存储器的dma数据传送采用数据块传送方式,首先送出内存源区域的地址和控制信号,将选中内存单元的的数据暂存,接着修改地址及字节数寄存器的值,然后输出内存目的区域的地址及控制信号,将暂存的数据,通过系统数据总线,写入到内存的目的区域中去,最后修改地址和字节数寄存器的内容,当字节计数器减到零或外部输入时可结束一次dma传输过程。 5、 dma控制器及寄存器5.1、s3c44b0集成了4个通道的dma控制器:两个zdma控制器zdma0/1:可以用于存储器到存储器、储存器到i/o设备、i/o设备之间的dma传送;两个bdma控制器bdma0/1:用于储存器与i/o设备之间的传输。5.2、zdma0/1控制寄存器、zdma0起始地址、目的地址寄存器、dma计数器寄存器。六、 实验说明1、本实验通过dma方式实现存储器到存储器间的数据传送,并将其与常规的内存拷贝操作进行比较 2、拷贝动作的计时处理 2.1、采用定时器进行计时处理,采用函数timer_start启动计时处理,参数divider 表示定时时间间隔。0: 16 us,1:32us,2:64us,3:128us。2.2、操作完成时调用timer_stop停止定时器计数,其返回值为计数值,该值乘以时间间隔(128us)即为计时时间。timer_start(3);/* 128 us */ time=timer_stop();/* 停止定时器 */ uart_printf(copy bytes :time=%fn,time*128e-6);3、常规内存拷贝3.1、字节拷贝:*(unsigned char*)(dstaddr) = *(unsigned char*)(srcaddr); 3.2、双字节拷贝:*(unsigned short*)(dstaddr) = *(unsigned short*)(srcaddr); 3.3、四字节拷贝:*(unsigned int*)(dstaddr) = *(unsigned int*)(srcaddr); 3.4、清除传输完毕标志:zdma0done=0;3.5、设置dma传输的起止地址和长度: rzdisrc0=srcaddr|(dw30)|(128);/* dw 为dma传输宽度 */rzdides0=dstaddr|( 230)|(128);rzdicnt0=length |( 228)|(126)|(322)|(120); 3.6、启动dma传输并开始计时:rzdcon0=0x1; timer_start(3); 3.7、等待传输完成,传输完成标记将在dma中断服务程序中置位:while(zdma0done=0); 3.8、返回当前定时计数器中的值:time=timer_stop();uart_printf(zdma0 :time=%fn,time*128e-6); 3.9、关中断:rintmsk=bit_global; 4、dma中断处理函数 void isr_dma0(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论