阅读:2073回复: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。 |
|