DMA[精].pptVIP

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DMA[精]

3.6 S3C2410A的DMA控制器 3.6.1 DMA工作原理 DMA(Direct Memory Acess,直接存储器存取)方式是指存储器与外设在DMA控制器的控制下,直接传送数据而不通过CPU,传输速率主要取决于存储器存取速度。在DMA传输过程中,DMA控制器负责管理整个操作,并且无须CPU介入,从而大大提高了CPU的工作效率。DMA方式为高速I/O设备和存储器之间的批量数据交换提供了直接的传输通道。由于I/O设备直接同内存发生成块的数据交换,可以提高I/O效率。现在大部分计算机系统均采用DMA技术。许多输入/输出设备的控制器都支持DMA方式。 在进行DMA数据传送之前,DMA控制器会向CPU申请总线控制权,CPU如果允许,则将控制权交出。因此,在数据交换时,总线控制权由DMA控制器掌握,在传输结束后,DMA控制器将总线控制权交还给CPU。采用DMA方式进行数据传输的具体过程如下。 (1)外设向DMA控制器发出DMA请求。 (2)DMA控制器向CPU发出总线请求信号。 (3)CPU执行完现行的总线周期后,向DMA控制器发出响应请求的回答信号。 (4)CPU将控制总线、地址总线及数据总线让出,由DMA控制器进行控制。 (5)DMA控制器向外部设备发出DMA请求回答信号。 (6)进行DMA传送。 (7)数据传送完毕,DMA控制器通过中断请求线发出中断信号。CPU在接收到中断信号后,转人中断处理程序进行后续处理。 (8)中断处理结束后,CPU返回到被中断的程序继续执行。CPU重新获得总线控制权。 3.6.2 S3C2410A的DMA控制器 在系统总线和外围总线之间,S3C2410A有4个DMA控制器。每个DMA控制器可以处理以下4种情况: (1)源和目的都在系统总线上; (2)源在系统总线上,目的在外围总线上; (3)源在外围总线上,目的在系统总线上; (4)源和目的都在外围总线上。 如果DCON寄存器选择采用硬件(H/W)DMA请求模式,DMA控制器可以从对应通道的DMA请求源中选择一个。如果DCON寄存器选择采用软件(S/W)DMA请求模式,那么这些DMA请求源将没有任何意义。DMA请求源如表3.6.1所示。 DMA的操作过程可以用一个3种状态的FSM(Finite State Machine,有限状态机)来描述,具体步骤如下: (1)状态1 状态1为初始状态,DMA等待一个DMA请求。如果出现DMA请求,进入状态2。在这种状态下,DMA ACK和INT REQ为0。 (2)状态2 在状态2,DMA ACK变为1,并且从DCON[19:0]寄存器向计数器(CURR TC)加载计数值。注意,此时DMA ACK一直是1,直到被清零。 (3)状态3 在状态3,子FSM使DMA的微操作被初始化。子FSM从源地址读取数据,并将其写入目标地址。在这个操作过程中,需要考虑数据大小(尺寸)和传输大小(尺寸)。这一操作重复执行,直到在整体服务模式下的计数器 (CURR_TC)变为0;这一操作在单个服务模式下则只执行一次。子FSM每完成一次微操作,主FSM将CURR_TC进行一次向下计数。另外,当CURR_TC变为0时,主FSM将INT REQ信号置1,并将DCON寄存器的中断设置位[29]置1。除此以外,如果发生以下情况,则对DMA ACK清零。 在单个服务模式下,主FSM的3种状态执行完后就停止,并等待下一个DMA请求。如果又产生了新的DMA请求,则所有3个状态都将被重复。因此,对于每一个微传送操作,DMA ACK先后置1和清零。相反,在整体服务模式下,主FSM一直在状态3等待直到CURR TC变为0,因此DMA ACK在整个传送过程中都置1,当TC为时则清零。 S3C2410A每个DMA通道有9个控制寄存器,4个通道共有36个寄存器。每个DMA通道的9个控制寄存器中有6个用于控制DMA传输,另外3个用于监控DMA控制器的状态。要进行DMA操作,首先需要对这些寄存器进行正确配置。相关寄存器介绍如下: (1)DMA初始化源寄存器(DISRC) 如表3.6.2所示,DMA初始化源寄存器(DISRC)用于存放要传输的源数据的起始地址。 S3C2410A的DMA编程实例 本小节给出一个使用DMA方式实现从存储器发送数据到UART0的实例,以下是程序代码。 #include”config.h” #define S_DATA (*(volatile unsigned char *)0 #define S_ADDR ((volatile unsigned char *)0 //数据起始地址 void UART0_DMA(void){ volatile unsigned char*

文档评论(0)

dart002 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档