Chinaunix首页 | 论坛 | 博客
  • 博客访问: 423597
  • 博文数量: 115
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 393
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-26 12:10
个人简介

踏实做事,认真做人

文章分类

全部博文(115)

文章存档

2017年(1)

2016年(2)

2015年(14)

2014年(63)

2013年(35)

DMA

分类: 嵌入式

2014-01-02 09:27:15

dma数据传输有两种方式,一种是软件主动请求数据,一种是硬件异步传输

1)进程调用read,驱动程序分配一个dma buffer,随后指示硬件传输数据,进程进入睡眠
2)硬件将数据写入dma buffer,并在完成时产生一个中断
3)中断处理程序获得输入数据,应答中断,最后唤醒进程,该进程即可以读取数据

1)硬件发出中断来通知新的数据已经到达
2)中断处理程序分配一个dma buffer
3)  外围设备将数据写入缓冲区,然后在完成时发出另一个中断
4)处理程序利用dma分发新的数据,唤醒任何相关进程。

 

网卡传输也是如此,网卡有一个循环缓冲区(通常叫做 DMA 环形缓冲区)建立在与处理器共享的内存中。每一个输入数据包被放置在环形缓冲区中下一个可用缓冲区,并且发出中断。然后驱动程序将网络数据包传给内核的其它部分处理,并在环形缓冲区中放置一个新的 DMA 缓冲区。

阅读(693) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~