pci驱动DMA传输问题

jlizheng   2010-2-26 21:11 楼主
,现在一公司从事软件开发,要写win 驱动,看了一个plx9054例子有几个问题不太明白,希望大虾们帮忙解答一下,小弟先谢啦。plx 9054:程序一部分:
#define INTCSR    0x68
#define DMAMODE0  0x80
#define DMAPADR0  0x84
#define DMALADR0  0x88
#define DMASIZ0   0x8C
#define DMADPR0   0x90
#define DMACSR0   0xA8
#define CNTRL          0x6C
上面几个寄存器的偏移地址为什么是这几个值?数据手册上没发现啊?

VOID PCI9054Device::StartDMARead(ULONG PAddress,ULONG NBytes)
{
       
        //Channel0 interrupt to the PCI Bus interrupt,Done Interrupt Enable,FIFO
        m_IoPortRange0.outd(DMAMODE0,0x20409);                //Local bus is 16 bits width
        //m_IoPortRange0.outd(DMAMODE0,0x205C3);
        //DMA Channel0 PCI Address
        m_IoPortRange0.outd(DMAPADR0,PAddress);
        //DMA Channel0 Local Address
        m_IoPortRange0.outd(DMALADR0,m_LocalBase);
//        m_LocalBase += NBytes;
        //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);
}
还有DMA传输时控制字为什么这样写?手册上没有介绍这些寄存器的结构啊,所以控制字不好写啊

回复评论 (6)

MARK, 学习下,

帮顶下。
点赞  2010-2-27 02:09
没有人会吗?大虾们出来救命啊,小弟跪谢
点赞  2010-2-27 17:41
难道就没有人会吗?
小弟等着救命啊!!!高手们出来啊!
点赞  2010-3-1 14:48
没用这个片子,不过这些东西都是数据手册必须给出的。楼主仔细找找,或者重新找下数据手册。
点赞  2010-3-2 10:31
这些都是PLX 9054的寄存器,不是主机上的。你去找数据手册看看,0x68 INTCSR在runtime registers里,其他的在DMA registers里,都有详细的定义.
点赞  2010-3-3 04:17
谢谢大家,我已经解决了
点赞  2010-3-8 15:19
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复