踏实做事,认真做人
分类: 嵌入式
2014-01-02 09:27:15
dma数据传输有两种方式,一种是软件主动请求数据,一种是硬件异步传输
1)进程调用read,驱动程序分配一个dma buffer,随后指示硬件传输数据,进程进入睡眠
2)硬件将数据写入dma buffer,并在完成时产生一个中断
3)中断处理程序获得输入数据,应答中断,最后唤醒进程,该进程即可以读取数据
1)硬件发出中断来通知新的数据已经到达
2)中断处理程序分配一个dma buffer
3) 外围设备将数据写入缓冲区,然后在完成时发出另一个中断
4)处理程序利用dma分发新的数据,唤醒任何相关进程。
网卡传输也是如此,网卡有一个循环缓冲区(通常叫做 DMA 环形缓冲区)建立在与处理器共享的内存中。每一个输入数据包被放置在环形缓冲区中下一个可用缓冲区,并且发出中断。然后驱动程序将网络数据包传给内核的其它部分处理,并在环形缓冲区中放置一个新的 DMA 缓冲区。