DMA的引入
来源:互联网 发布:java金融项目开发代码 编辑:程序博客网 时间:2024/05/16 19:05
假设我们的开发板,举个例子就是s5pv210外面接有内存,
如上图,假设我们要把内存中某一段的数据作为源,拷贝到这个内存中的另一段中去
我们写出程序来,比如说我们这么写
char *src=某个地址
char *dst=某个地址
int i;
for(i=0;i<size;i++)
{
dst[i]=src[i];
}
谁来运行这个程序,CPU
这个S5PV210里面有个CPU,CPU执行数据的拷贝工作
那么显然,CPU在执行过程中,CPU同一时间只能做一件事情,假设我们数据很大的话,我们CPU就不能做其他事情了,那怎么办呢,我们就引入了另外一个东西叫DMA
这个s5pv210除了CPU之外还有个DMA,DMA的意思是direct memory access 内存的直接访问。我们数据的拷贝按照以前的做法是写出一段程序,让CPU来执行,我现在想把CPU给解放出来,由谁来做,由这个DMA来做,我只需要把源告诉DMA,把目的告诉DMA,把这个长度告诉DMA,然后启动。DMA就会自动的把数据拷贝从源拷贝到目的。
拷贝过程中跟CPU没什么关系。拷贝完之后中断,CPU就知道你这数据拷完了。在拷贝过程中你的CPU可以去忙其他的事情uq,这就是DMA的概念。 其实在启动DMA之前,还需要设置DMA的一些参数,比如说对我们的例子是从源把数据拷贝到目的,假设我们源在低地址,目的是高地址,那么考的时候 我们源地址是加,目的地址也是往上涨,那么你可以设置比如说,地址是递增也可以是递减,每拷完一个数据地址增加或者减小,或者不变,我们启动DMA也分为手工启动,设置某个寄存器。还有外部启动,我们s5pv210里面除了DMA之外还有其他芯片,比如说I2S,当我们麦克风数据进来之后,数据会存到fifo里面,你可以去设置他,当里面有数据的时候去触发DMA,这个DMA就会把FIFO里面的数据拷贝到内存里面去,可以这么做
- DMA控制器的引入
- DMA的引入
- cpu解读8:DMA控制器的引入
- SG DMA与普通DMA(block DMA)的区别
- 开始DMA的实验
- S3C2440的DMA控制
- s3c2440的DMA应用
- 44b0的DMA
- DMA通道的使用
- pcie dma的玩法
- sata DMA 的建立
- SPI的驱动 dma
- DMA的控制方式
- DMA控制器的学习
- s3c2440的DMA应用
- 基本的DMA控制器
- DMA的控制方式
- S3C2440的DMA
- 【转载】MongoDB基本用法(增删改高级查询、mapreduce)
- mysql导入.sql文件
- json-lib使用,JSONObject和JSONArray .
- json-lib使用,JSONObject和JSONArray .
- 使用Java操作Mongodb
- DMA的引入
- 使用Java操作Mongodb
- maven构建项目(多模块项目) .
- maven构建项目(多模块项目) .
- zookeeper中的基本概念
- 上传第三方jar包到nexus
- 上传第三方jar包到nexus
- mapreduce 中文版 中文翻译
- Maven常用插件