阅读:2311回复:0
PCI 9054 中断的问题
我目前在做一个pci 9054的windows驱动程序。我的PCI卡外设没有用FIFO(芯片比较贵),但是要求上位机及时取走数据,不丢数据。
我的想法是cpld每次有数据,用LINT中断通知驱动程序,驱动程序的中断dpc例程里面,发起dma,取走外设的数据。 目前用KeQueryPerformanceCounter这个函数计时,DDK里面讲 Use this routine as infrequently as possible. Depending on the platform, KeQueryPerformanceCounter can disable system-wide interrupts for a minimal interval. Consequently, calling this routine frequently, as in an iteration, defeats its purpose of returning very fine-grained, running time-stamp information. Calling this routine too frequently can degrade I/O performance for the calling driver and for the system as a whole. 我实际使用也发现用了这个函数,会导致有的中断我不能接收,从而丢数据。 另外,即使我不用这个函数,我发现amd双核的平台上,有个amd的节电程序频繁使用KeQueryPerformanceCounter这个函数(我用softice看到的),从而导致我的pci卡会丢数据。 是不是我这种方式有问题,必须加上FIFO来解决丢数据的问题? |
|