阅读:1170回复:3
5933求助
pci控制器是5933。系统加电后,pci设备的中断寄存器需要自己初始化吗?不初始的话,是不是开始就为0?
我是通过5933收到中断,然后置事件来通知用户程序读(用的是deviceiocontrl),在驱动程序里面是系统排队的。用户程序用deviceiocontrl来向设备写数据。假如中断来的很快,不停的叫我读,而我这时又在写数据。这样会死机吗?怎样才能够合理的安排一下?大家给点意见吧。 |
|
|
沙发#
发布于:2002-09-29 17:33
由BIOS进行配置。
通常不会死机,但最好加上临界段例程 |
|
板凳#
发布于:2002-09-29 20:28
在nt下面,我查看了,读5933的中断寄存器(没有初始化的时候)是0。
老大,我发现经常引起机器蓝屏的原因可能是中断处理。所以我在读数据的时候屏蔽掉中断。pci设备是电平触发的,假如我不马上响应它,电平应当保持吧。我想应当也不会丢数据。 送点分你!老大你得好好干啊。 |
|
|
地板#
发布于:2002-09-30 08:38
在nt下面,5933的pci配置寄存器的中断线(为1,INTA#),中断号通常为(9,10, 11,15等,其它不是给pci用的, 你在bios下也可看到一部分保留给isa用的,pci就用不了了),你说的5933的中断寄存器是否指PCI操作寄存器(0x38),如果中断来了,在该寄存器的bit24(可能是这个位吧)会是1,中断来了INTA#一直保持为低电平,你可以不理睬它,但是一旦驱程有ISR,就需要立即响应,清中断(释放INTA#),然后将任务交给DPC,返回true,否则死机是要发生的。写数据时,可能中断来了,那么就会中断写操作,等读操作完成后在继续写动作,而如果写采用临界段例程,中断来了,如果你正在写,中断ISR不会响应(一旦响应就得处理中断),这样就可以写操作完成后,接着响应中断。你以为如何?
|
|