阅读:1344回复:1
关于9054 DMA 的问题
目的:基于COMMONBUFFER 的 DMA ,使用9054的 block DMA
方法:当卡上的数据准备好时,产生LINT 中断 在驱动的ISR中: IF(intcsr==lint ) { // 1.diable Lint interrupt // 2.enble DAM interrupt. //3.set dmamode m_MemoryRange0.outd(DMAMODE0,DmaMode0); //4.set pci starting address _MemoryRange0.outd(DMADPR0,(ULONG)PaCommonBuffer.LowPart); //5. set local starting address m_MemoryRange0.outd(DMALADR0,LOCAL_ADDRESS); //6. set transfer size m_MemoryRange0.outd(DMASIZ0,4*K); //7. set direction of transfer DMADPR0 m_MemoryRange0.outd(DMADPR0,0x08); //8. initiat dma transfer m_MemoryRange0.outd(DMACSR0,0x03); } 问题 : dma 传输完成后,INTCSR=0X244180。其中不正常的是: 1. INTCSR[7]=1:pci9054 detected a local data parity check error. 2. INTCSR[14]=1: PCI abort interrput active 3. INTCSR[24]=0: indicate DMA initiator was the bus master during a master or target abort. 请教各位大侠: 问题是如何产生的? 如何解决? 多谢! |
|
沙发#
发布于:2005-06-06 19:32
是不是要读的数据的字节数不够,数据不存在
|
|
|