DJ9-3 DMA 方式

目录

一、DMA 的基本概念

1. DMA 的定义

2. DMA 的特点

3. 典型的应用

4. DMA 的工作流程

二、DMA 控制器与接口功能

三、DMA 传送全过程


为什么采用 DMA 传送方式?

中断方式 消除了程序查询方式中 CPU 空闲等待的现象,并且在没有中断处理任务时,CPU 和外设可以并行工作。但在中断响应和执行中断服务程序时仍然需要依靠 CPU 来完成。为了解决高速设备与主存间的大数据量传输问题,因此采用 DMA 的传送方式。

一、DMA 的基本概念

1. DMA 的定义

DMA(Direct Memory Access)即直接存储器访问,直接依靠硬件系统来控制主存与外部设备之间进行数据传输,在传送期间不需要 CPU 执行程序来干预,在传送结束后通常用中断方式通知 CPU 。

因为数据传输是直接由硬件控制实现的,不依靠执行程序指令来实现,所以在 DMA 传送期间不需要 CPU 执行程序来控制干预。

  • 传送之前,CPU 需要向 DMA 送出有关的控制信息。
  • 传送之后,CPU 可能需要处理数据。

(考判断题)CPU 只是在传送期间不干预,但在传送之前和传送之后是要干预的。

DMA 传送过程:

主从设备

申请并掌握总线控制权的一方称为 “主设备”,另一方则被称为 “从设备”。

注意:区别主设备与从设备身份差异的基本依据在于谁申请并掌握总线控制权,并不在于谁发送数据、谁接收数据,主设备可以发送数据也可以接收数据。反之,从设备也一样。

2. DMA 的特点

  • 响应随机请求
  • 不影响 CPU 程序的执行:仅占用总线、无程序切换
  • 实现大批量数据的简单传送

不影响 CPU 程序的执行 —— 不存在访存冲突。

举例、前提:有指令在 Cache 中等着 CPU 去执行。若 Cache 中没有指令或者没有 Cache,CPU 肯定会需要利用系统总线去取指,那么 DMA 占用总线就会影响到 CPU 的工作。考试时忽略模型机没有 Cache 这一事实。

3. 典型的应用

  •  主存与高速 I/O 设备之间的简单数据传送
  • 大批量数据采集系统
  • 动态存储器(DRAM)的自动刷新 

DRAM 的刷新操作是对存储内容按行读出,可视为存储器内部的数据批量传输。因此,可以采用 DMA 方式实现。将每次刷新请求当成 DMA 请求,CPU 在刷新周期中让出系统总线。DMA 控制器掌控总线后,发行地址、发读信号。一个存储周期刷新一行,一行刷新完立马将总线还给 CPU。

4. DMA 的工作流程

(1)DMA 的初始化

在传送之前,CPU 需要事先向 DMA 控制器送出有关的控制信息。

  1. 向接口送出 I/O 设备的寻址信息。
  2. 向 DMA 控制器送出控制字。
  3. 向 DMA 控制器送出主存缓冲区首地址。
  4. 向 DMA 控制器送出交换量。

(2)DMA 的数据传送方式

CPU 响应 DMA 请求是在一个总线周期结束时。

在传送期间,CPU 停止访问主存,无法执行需要占用总线的指令。 

① 单字传送方式

DMA 请求获得批准后,CPU 让出一个总线周期用于字或字节的传送。结束后, DMA 控制器归还总线控制权,CPU 再重新判断下一个总线周期的总线控制权是 CPU 保留,还是继续响应一次新的 DMA 请求。这种方式称为单字传送方式,又称为周期挪用或周期窃取。

② 块传送方式/成组连续传送方式

DMA 请求获得批准后,DMA 控制器掌管总线控制权,连续占用若干个总线周期,进行成组连续的批量传送,直到批量传送结束,才将总线的控制权交还给 CPU。这种方式称为成组连续传送方式。

二、DMA 控制器与接口功能

多路型 DMA 控制器:

DMA 控制器的功能

① 接收 CPU 初始化信息(主存首址、传送方向、交换量)—— 初始化

② 接收外设的 DMA 请求,判优,向 CPU 申请总线 —— 传送前

③ 接管总线权,发总线地址、读/写命令,并向 I/O 接口发响应信号 —— 传送期间

④ 向 CPU 撤销请求,并向 I/O 接口发结束信号 —— 传送结束

DMA 控制器控制 DMA 传送的起始和终止:DMA 控制器内部有一个计数器,只有 DMA 控制器知道传送是否结束。

接口的功能

① 接收 CPU 初始化信息(I/O 设备的寻址信息)—— 初始化

② 向 DMA 控制器发请求 —— 传送前,外设准备完毕

③ 向总线传送数据 —— 传送期间

④ 向 CPU 发中断请求 —— 传送结束

有需要才向 CPU 发中断请求,没有就不发。

三、DMA 传送全过程

Q:DMA 包含哪四个阶段?各阶段分别完成哪些操作?

A:四个阶段如下:

  1. 程序准备:CPU 用程序对 DMA 控制器和 I/O 接口进行初始化。
  2. 传送请求:DRQ → HRQ → HLDA → DACK
  3. DMA 传送:依靠硬件实现主存与 I/O 设备之间的数据传输。
  4. 善后处理:CPU 执行中断处理程序。

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: gd32f405是一款具有DMA功能的微控制器,可以通过串口与外部设备进行数据通信。串口通信是一种常用的数据传输方式,它通过数据线来传输数据,并且具有较好的适应性和广泛的应用场景。 gd32f405支持使用DMA(直接内存访问)来处理串口数据传输。DMA是一种硬件模块,可以在不需要CPU干预的情况下,直接从内存读取数据并将其传输到外部设备,或将外部设备的数据传输到内存。这样可以减轻CPU的负担,提高数据传输效率。 使用DMA进行串口数据传输有以下几个步骤: 1. 配置DMA通道:首先需要配置DMA通道用于串口数据传输的接口。在gd32f405中,可以使用多个DMA通道进行不同功能的数据传输。 2. 配置串口:需要配置串口相关参数,包括波特率、数据位数、校验位等。gd32f405的串口模块具有多个发送和接收缓冲区,可以通过调用相应的函数对串口进行配置。 3. 配置DMA传输方向和长度:根据具体需求,需要设置DMA的传输方向,即是从内存到外设还是从外设到内存。同时需要设置数据传输的长度。 4. 启动DMA传输:配置完成后,通过调用相应的函数启动DMA传输。DMA将自动从内存读取数据并进行串口传输,或从串口接收数据并写入内存,无需CPU干预。 通过使用DMA进行串口数据传输,可大大提高数据传输效率,减少CPU的负担。gd32f405的DMA功能使得串口通信更加可靠和高效。 ### 回答2: gd32f405是一款单片机芯片,而串口和DMA是其提供的两种功能。 串口是一种用于数据传输的接口,通过串行通信的方式可以实现将数据从一个设备传输到另一个设备。gd32f405内置了多个串口通道,可以通过配置相关寄存器和使用相应的引脚来实现与其他设备的串口通信。 而DMA(Direct Memory Access)是一种直接内存访问的技术,可以在不经过CPU的情况下,直接将数据从外设读取到内存或从内存写入到外设。在gd32f405中,通过配置DMA通道的相关寄存器,可以实现串口数据的DMA传输。 具体实现串口-DMA的步骤如下: 1. 配置串口:包括波特率、数据位、停止位、校验位等参数。 2. 配置DMA通道:包括传输方向、数据宽度、传输大小等参数。 3. 配置内存地址和外设地址:分别指定DMA传输的起始地址和目标地址。 4. 使能串口的DMA模式和DMA通道。 5. 当需要进行数据传输时,触发DMA传输请求。 6. 当DMA传输完成后,通过相应的中断或标志位进行处理。 通过串口-DMA方式,可以实现高效的数据传输,减轻CPU负担。此外,gd32f405还支持多个DMA通道,可以同时进行多路数据传输,提高系统的数据处理效率。 总结来说,gd32f405芯片提供了串口和DMA功能,可以通过配置相关寄存器和引脚,实现串口数据的高效传输,并且支持多通道的DMA操作,提高系统的性能和效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值