阅读:2214回复:4
DMA启动后能暂停吗?
最近有个疑问:
DMA启动后(Bterm Enabled, Burst Enabled),如果需要暂停它。 可不可以直接把LOCAL端的READY拉高,当需要再传输时把READY来低? 9054的时序图里没有这样的操作。请问各位大侠如果在DMA传输过程中READY置低后,ADS、BLAST会怎么变化? |
|
沙发#
发布于:2005-01-12 10:58
这个方法似乎不成,因为READY仅仅用于操作的时序配合,如果此信号一直不下来则机器将处于死机状态。
具体暂停方式可能与DMA的方式不同而不同,具体看一下9054的手册吧;应是使启动DMA的条件暂时不成立即可,如在Demand模式的DMA里,将DREQ信号暂时无效即可。其他模式我不熟悉,应该与此同理,但信号肯定不是上述信号了。 |
|
板凳#
发布于:2005-01-12 16:28
我就是在9054的资料上没看到这样的时序。
这样的设想也许是不对的吧,等有了逻辑分析仪可以试一试。 有一种方式可以实现: DMA PCI-to-Local with Local Bus Pause and Latency Timers 不过这个暂停时间是固定的。 |
|
地板#
发布于:2005-01-21 09:25
如qizhi所说,应控制DMAREQ信号,对于MASTER DMA方式一次猝发DMA传输完成后,9054会向CPU申请重新获得总线控制权(通过DMAREQ信号),如果用设备的READY信号或者一个人为的控制信号封住DMAREQ信号,则使9054处在一直等DMAACK的状态,DMA传输暂停。一直到这个控制信号有效,CPU才会收到这个DMAREQ,在CPU允许时即发出DMAACK通知9054,已获得总线控制权,可以进行下一个猝发传输。
|
|
|
地下室#
发布于:2005-01-25 15:49
好像有函数调用来着
|
|