Hi
i have a PCIe card that captures data with DMA that is implemented in its hardware (FPGA).
i develop a driver for this card based on portio in DDK samples. to start a DMA transfer i should provide a contigous space in memory [with MmAllocateContigousMemory function]. then i write the 32bit physical address of this memory in the 0x10 address of BAR0, the length of this memory in the address 0x18 of BAR0. after this i write 0x4 as start_DMA command in the address 0x1c of BAR0.
i receive data correctly and after completing the memory space, i receive an interrupt and transfer it to the application layer by an event.
for continous transfer, after receiving an interrupt, i should reinitialize DMA by writing again "physical address, length and START_DMA command".
my problem: system works well and i receive interrupts from the card, but after 3 or 4 hours of working (this time is very random range from 5 minutes to 5-6 days) i can't access (Read/Write) BAR0, and system stops getting data. any configuration space is out of my access too. in this condition any reinstallation of device is insufficient and i must restart the system.
where is the problem? is there any problem in the driver?
thanks for your notice.