|
还是觉得不如自己Debug来的实在,我是小菜也不懂,提供DMA的工作原理供参考:
直接存储存取方式(DMA)是在存储器与I/O设备间直接传送数据,是一种完全由硬件完成I/O操作的方式。
1、DMA控制器8237
1)DMA控制原理(工作过程)
(1)外设向DMA控制器发出DMA请求;
(2)DMA控制器向CPU发出总线请求信号;
(3)CPU执行完现行的总线周期后,向DMA控制器发出响应请求的回答信号;
(4)CPU将控制总线,地址总线及数据总线让出,由DMA控制器进行控制;
(5)DMA控制器向外部设备发出DMA请求回答信号;
(6)进行DMA传送;
(7)数据传送完毕,CPU重新控制总线。
2)可编程DMA控制器8237A
(1)8237A内部的基本结构
DMAC8237A主要由命令寄存器、状态寄存器、读/写逻辑、控制逻辑和4个结构完全相同的DMA通道组成。命令寄存器和状态寄存器,都是8问,四通道共用。当8237A在系统总线中处于从属状态时,读写逻辑用来接收由CPU输入的读写控制信号和端口地址等信息;当8237A处于主控状态时,则通过它发出读写控制信号和地址信息。控制逻辑主要用来向CPU发出总线请求(HRQ),得到CPU认可(HLDA)进入主控状态后,由它发出各种控制信号。四个通道的结构完全一样,通道内基本地址寄存器和当前地址寄存器合用一个端口,基本字节计数器合当前字节计数器合用一个端口地址,当CPU写入操作时,上述两组寄存器可同时得到相应的数值,但基本地址寄存器合基本字节计数器是不能被读出的。由于他们均为16位寄存器,因此高低字节的读写由先后触发器的状态决定。通道中的方式寄存器由编程写入,由方式控制字最低两位(D1、D2)状态决定所选通道。
(2)8237A的四种数据传送方式;
I、字节传送方式:每申请一次总线请求仅传送一个字节
II、块传送方式:8237A由DREQ启动后连续传送数据(内部进行地址修改及字节技术),直至全部数据传送结束或由EOP终止DMA。
II、请求传送方式:连续传送过程中有以下情况之一即终止传送:a)字节计数器为零;b)外界EOP信号产生;c)外设数据已传送完。
VI、级连方式:多片8237A组成主从式DMA时使用 |
|