| 
					阅读:2224回复:7
				 关于中断服务例程
					我的PCI卡的中断服务例程有几点疑问:
 1,对于PCI的中断,基本上都是共享的。但是我在中断服务例程中怎样判断这个中断是否属于本卡的? 2,如果我使用系统DMA通道,那么在数据传输完毕以后,是否有一个中断产生?如果有,则我能否在中断服务例程中截获?系统DMA控制器和我的板卡应该是属于不同的硬件吧,那么他们的中断都可以被同一个中断服务例程截获吗? | |
| 最新喜欢: fly_fl... 
 | 
| 沙发#发布于:2002-07-10 13:20 
					1.卡上都有中断状态寄存器的,当某个中断号的中断产生时,所有的中断服务例程都会被调用,所以在中断服务例程刚开始就要判断是不是自己的中断,如果不是马上返回false
 2。可以 | |
| 
 | 
| 板凳#发布于:2002-07-10 13:29 
					如果是系统DMA通道的DMA操作完成以后产生的中断,那么系统也会在板卡上面设置他的中断状态寄存器吗?我感觉好像他们是完全不同的硬件阿,他会自动设置吗?				 | |
| 
 | 
| 地板#发布于:2002-07-10 17:46 
					具体的也不清楚,反正zydcat说的没有错。 :D				 | |
| 地下室#发布于:2002-07-12 12:29 
					2.如果你的硬件使用系统dma传输的话,这个时候硬件是不会产生中断的,是dma控制器产生中断(如果你的硬件带有fifo的话,则另当别论),你的硬件只要不停地有数据产生,dma控制器就会自动把数据送到内存中去,dma在每次传输完成后都会发一个中断给系统知道,而不是在所有的数据都传输完成时才发中断(因为你的数据可能要分成很多次dma传输,在这种情况下,你就要在你的dmaisr里初始化下一次传输) [编辑 - 7/12/02 by SYaMa] | |
| 5楼#发布于:2002-07-13 09:06 
					 :D :DSYaMa,谢谢您的提示。
 但是我还是有一点疑惑:既然系统DMA控制器和我的板卡不是属于同一个硬件,那么系统DMA控制器在完成一次DMA传输以后调用的那个ISR在什么地方设置?我想应该不是在板卡的StartDevice的中断资源里面设置吧? 万分感谢!(虽然我不能给兄弟们一万分) | |
| 
 | 
| 6楼#发布于:2002-07-14 12:12 
					连接中断的时候连接不同的isr例程就可以				 | |
| 
 | 
| 7楼#发布于:2002-07-14 14:31 
					“pci标准没有从属dma这一概念,相反,本机pci函数要么是总线主控器完成dma,要么它们使用程控I/O。“
 ――引自《Windows 2000设备驱动程序设计指南》 如果你用isa卡,用从属dma,那就把你的板卡使用的中断和你的isr挂接上(IoConnectInterrupt),当dmac完成一次传输后发出中断,系统就会调用你挂接的isr。 | |
 
							 
				 
				 
				
