DMA和burst不是一个概念

本文详细解释了DMA(直接内存访问)与Burst操作的区别。DMA允许设备绕过CPU直接与内存交换数据,提高效率;而Burst则是一种连续访问内存的方式,减少地址设置次数,适合连续地址访问。此外还介绍了DMA的常见功能及burst、burstsize、transfersize等概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DMA和burst不是一个概念。
  DMA传送不经过CPU的控制,假如硬盘的数据不能经过DMA控制器读到内存,那么每完成一次将硬盘的数据读出来,再存放到内存的操作,都要通过CPU运行几条读写指令来完成,这时CPU就做不了别的事了,如果有DMA控制器,则这个过程不需要CPU的参与,只需要占用总线就可以了。CPU还可以去完成别的运算。

Burst操作还是要通过CPU的参与的,与单独的一次读写操作相比,burst只需要提供一个其实地址就行了,以后的地址依次加1,而非burst操作每次都要给出地址,以及需要中间的一些应答、等待状态等等。如果是对地址连续的读取,burst效率高得多,但如果地址是跳跃的,则无法采用burst操作

一般芯片的dma有基本功能。
  1、普通的内存、外设间互传数据,一次性的。
  2、支持链表的,美其名曰“scatter”,内核有struct scatter可以参考。

dma有burst、burst size、transfer的概念:
burst:
  dma实际上是一次一次的申请总线,把要传的数据总量分成一个一个小的数据块。比如要传64个字节,那么dma内部可能分为2次,一次传64/2=32个字节,这个2(a)次呢,就叫做burst。这个burst是可以设置的。这32个字节又可以分为32位 8或者16位16来传输。

transfer size:
  就是数据宽度,比如8位、32位,一般跟外设的FIFO相同。

burst size:
  就是一次传几个 transfer size.

配置数据宽度为32位。一次传8个32位=32个字节。
  那么如果总长度为128字节,那么实际dma设置的长度为 128/32 = 4.
原文链接https://blog.csdn.net/sunjiajiang/article/details/7945057

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值