阅读:1210回复:4
再问9054 block DMA
要发起DMA传输应该首先设置好寄存器对吧,象PCI Addess,Local Address,Transfer Size,Descripter pointer是吧,我看资料说了它们的值应设成多少。可是我不知道如何才能设置这些寄存器。
9054 DataSheet 上说PCI bus和local bus可以访问寄存器,还给出了一个相关的CCS片选信号,难道要用总线访问内部寄存器来设置这些寄存器么,(如果是的话,要访问哪个寄存器,该寄存器的地址是如何给出的呢) 还是在写驱动的时候设置这些寄存器? |
|
|
沙发#
发布于:2004-07-07 16:01
直接读写就可以了啊~~PCI端可以映射成Memory或I/O,后直接操作偏移地址
Local端我还不太懂~~ |
|
|
板凳#
发布于:2004-07-07 16:07
你是说直接用PCI总线读写内部寄存器是的吧
|
|
|
地板#
发布于:2004-07-07 16:16
发起DMA时,要设置START位,和相关的寄存器,这相关的寄存器是通过什么方式设置的
|
|
|
地下室#
发布于:2004-07-08 08:20
#define DMAMODE0 0x80
#define DMAPADR0 0x84 #define DMALADR0 0x88 #define DMASIZ0 0x8C #define DMADPR0 0x90 #define DMACSR0 0xA8 //下面几条语句设置DMA通道0寄存器,启动块传输方式 m_IoPortRange0.outd(DMAMODE0,0x20C00); //DMA Channel0 PCI Address m_IoPortRange0.outd(DMAPADR0,PAddress); //DMA Channel0 Local Address,自己设计 m_IoPortRange0.outd(DMALADR0,0x8); //DMA Channel0 Transfer Size(Bytes) m_IoPortRange0.outd(DMASIZ0,NBytes); //from the Local Bus to the PCI Bus m_IoPortRange0.outd(DMADPR0,0x8); //Channel0 Enable,Start m_IoPortRange0.outb(DMACSR0,0x3); |
|
|