PCI总线 DMA burst 基本概念

转载地址:http://blog.csdn.net/sunjiajiang/article/details/7945057

DMA和burst不是一个概念。

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

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

一般芯片的dma有基本功能。

1、普通的内存、外设间互传数据,一次性的。

PCI设备DMA控制器,设置好后DMA 控制器的寄存器,PCI设备就会通过PCI总线向其他设备发送信号。

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.

很好的一篇文章:基于FPGA的PCI接口DMA传输的设计与实现

http://www.docin.com/p-755091145.html

转载自:http://blog.csdn.net/qingfengtsing/article/details/24124661

时间: 2024-10-24 04:46:57

PCI总线 DMA burst 基本概念的相关文章

PCI 总线学习笔记

转载请注明出处:http://blog.csdn.net/lg2lh/article/details/8042008 PCI的基本协议这里就不介绍了,由于一般的芯片协议都是集成好的,我仅仅须要大体了解即可,不须要做芯片,我感觉就不须要太了解协议. 这里解说是基于PLX 的9054(9052)芯片为基础的,本人仅仅是入门,望批评指正. 一.地址映射与传输数据 上图中间部分是9054的内部结构图,9054实际上充当了一个"桥"的作用,即所谓的"桥片技术".9054的作用

《PCI EXPRESS体系结构导读》读书笔记之第 1 章 PCI总线的基本知识(3)

PCI总线的中断机制 中断信号与中断控制器的连接关系 中断信号与PCI总线的连接关系 PCI桥规范并没有要求桥片传递其下PCI设备的中断请求.事实上多数PCI桥也没有为下游PCI总线提供中断引脚INTx#,管理其下游的PCI设备. 而同时又说,在PCI EXPRESS中的中断机制,用的是MSI中断机制.所以这种外部中断引脚的中断机制我就暂时不看了. 版权声明:本文为博主原创文章,欢迎垂询 email: [email protected]

[转载]KVM虚拟机代码揭秘——QEMU的PCI总线与设备(上)

最近研究了一下QEMU的虚拟PCI设备,打算虚拟一个PCI-PCI桥和一个PCI设备,设备挂在桥上,桥挂在pci主桥上.并且给设备固定映射一个IO基地址,但是发现还是件头疼的事情,经过几天的辛苦,终于算是有点收获,和大家分享一下,有什么问题希望大家支持,一起讨论,共同提高. 申明:本文主要针对x86架构进行说明. 1. PCI 结构简介 为了大家更加容易的理解后文,先来回顾一下PCI总线的基本内存结构.每一个PCI设备都对应一段内存空间,里面按照地址位置放置PCI设备的信息,包括厂家信息,bar

[转载]KVM虚拟机代码揭秘——QEMU的PCI总线与设备(下)

在上文中,我们在QEMU中已经成功的虚拟了一个PCI桥和一个PCI设备,接下来我们就来给他们分配固定的IO基地址. 要给PCI设备分配固定的IO基地址,那么就需要先了解PCI设备是如何刷新和分配IO基地址的. 1. PCI设备的重置与刷新 PCI在需要的时候,如第一次启动,IO重叠等就需要重置PCI设备,并且清空PCI bar上面的地址信息.主要调用函数pci_device_reset void pci_device_reset(PCIDevice *dev){    int r; ... ..

linux驱动---用I/O命令访问PCI总线设备配置空间

PCI总线推出以来,以其独有的特性受到众多厂商的青睐,已经成为计算机扩展总线的主流.目前,国内的许多技术人员已经具备开发PCI总线接口设备的能 力.但是PCI总线的编程技术,也就是对PCI总线设备的操作技术,一直是一件让技术人员感到头疼的事情.PCI总线编程的核心技术是对相应板卡配置空间 的理解和访问.一般软件编程人员基于对硬件设备原理的生疏,很难理解并操作配置空间,希望硬件开发人员直接告诉他们怎样操作:而PCI总线硬件开发人员虽 深刻地理解了其意义,在没有太多编程经验地前提下,也难于轻易地操作

DMA的基本概念

DMA允许外围设备和主内存之间直接传输 I/O 数据, DMA 依赖于系统.每一种体系结构DMA传输不同,编程接口也不同. 数据传输可以以两种方式触发:一种软件请求数据,另一种由硬件异步传输. 在第一种情况下,调用的步骤可以概括如下(以read为例): (1)在进程调用 read 时,驱动程序的方法分配一个 DMA 缓冲区,随后指示硬件传送它的数据.进程进入睡眠. (2)硬件将数据写入 DMA 缓冲区并在完成时产生一个中断. (3)中断处理程序获得输入数据,应答中断,最后唤醒进程,该进程现在可以

网卡 pci总线和platform总线

原文地址:https://www.cnblogs.com/dream397/p/12530679.html

v3学院带您一起学习FPGA

本文为原创,转载请注明! 课程名称:双buffer乒乓操作项目概况:使用FPGA内部ram作为缓冲器,实现对外部数据流的缓存:为了提升数据的传输及处理速度,在此节课中将用到两个ram进行乒乓操作.结构框图: 效果描述:本实验做到了使用低速模块处理高速数据流,可以将缓冲的数据在没有停顿的情况下送入到数据流处理模块进行处理.应用案例:在我们做FPGA开发时,为了能更好的处理一下数据流,会经常进行一些数据的缓存,在此节课中让学员能够建立一些数据缓存的概念:乒乓操作是一种经常使用的数据流处理技巧,可以在

计算机原理学习(2)-- 存储器和I/O设备和总线

前言 前一篇文章介绍了冯诺依曼体系结构的计算机的基本工作原理,其中主要介绍了CPU的结构和工作原理.这一篇主要来介绍存储区,总线,以及IO设备等其他几大组件,来了解整个计算机是如何工作的. 这些东西都是看得见摸得着的硬件,平时我们买电脑时最关注的就是CPU的速度,内存的大小,主板芯片等等的参数. 1. 存储器 前面我们以一个简单通用的计算机模型来介绍了CPU的工作方式,CPU执行指令,而存储器为CPU提供指令和数据. 在这个简单的模型中,存储器是一个线性的字节数组.CPU可以在一个常数的时间内访