Altera_Forum
Honored Contributor
15 years agowhy o why don't I get an interrupt when SGDMA engine completes a descriptor or chain
background:
I am using Quartus 9.1 SP2. On a Arria GX Dev Board (EP1AGX60DF780C6) I am writing a 32bit driver for Windows XP using WDF. I am using Legacy Interrupts and not MSI (because XP doesn't support MSI). I am programming the registers directly i.e. no HAL, from my Windows driver. I have been using the Simple DMA engine, and been able to get an interrupt generated when the DMA Transaction has completed sucessfully (i.e. Done). I had to hack one of the sopc generated .v files like this (as described in an application note) as follows: pcie_compiler_0_rx_interface_irq = dma_0_control_port_slave_irq; to get the interrupt to be generated properly. I was also setting the IRQ bit in the PCIe compiler configuration space (...the 0x50 offset). new requirements: NOW.....I want to use the SGDMA (Scatter Gather) engine, so I got rid of the simple engine, and put on the SGDMA with memory to memory, and the default settings. I hooked up to the DDR2 memory, and PCIE compiler, etc. I do a Transaction and see the DescriptorCompleted / ChainCompleted bits set in the Status Register, however, I don't get any interrupt generated/received by my ISR. I have set the control bits to say generate an Interrupt when a Chain or Descriptor is completed. I have also tried hacking the SOPC .v file in a similar way to what was needed on the Simple DMA (though the wires are different now): When using the default IRQ priority assignments given by SOPC. assign pcie_compiler_0_Rx_Interface_irq = sgdma_0_csr_irq_from_sa; IF I change the interrupt priority on the connection going from the csr_irq (Interrupt Sender) to the pcie compilers RxmIRQ (Interrupt Receiver) to 0 (the highest) then in the generated .v the name of the wire is called sgdma_0_csr_irq instead. So I then tried: assign pcie_compiler_0_Rx_Interface_irq = sgdma_0_csr_irq; In all cases I still don't get the interrupt generated.....so I am looking for some creative ideas :)