阅读:1681回复:5
大虾请进:9054中断怎么回事?
用driverworks编写的9054驱动,当INTCSR[8]和INTCSR[11]同时置1时,装驱动的时候就死机,系统没响应。那么本地中断产生后,怎样才能进入中断服务程序。我的理解是将INTCSR[8]和INTCSR[11]同时置1,本地中断产生后触发pci中断,进入中断程序。但为什么死机呢?
|
|
沙发#
发布于:2004-09-25 17:17
帮帮忙,会高分奉送
|
|
板凳#
发布于:2004-09-27 21:35
凭你现在的叙述我很难判断原因所在。
由于PCI中断是共享的,你可以看一下你的9054中断响应程序是否正确,尤其开始时是否过滤了非9054中断。 |
|
地板#
发布于:2004-09-28 15:22
谢谢回复,附件里有我的程序:pciwdmdevice.cpp,我做的一个通讯卡,卡上有一个16c554,通过16c554触发本地中断。现在调试的结果是,INTCSR[8]和INTCSR[11]同时置1,会不断的触发中断,导致电脑死记,若只置INTCSR[11]为1,及使lint脚为高电平,INTCSR[15]就查询到为1。
|
|
|
地下室#
发布于:2004-09-29 09:13
果然如此,我猜想可能就是由于中断过于频繁导致死机。对于软件的事情我不清楚,不过你可以先用示波器看一下你的中断信号是否正常。在硬件中断信号正常之后再查软件的问题,记住,一定要将问题隔离开,这样才能查找问题并解决问题。
我想提醒一点(也许你已注意到),PCI中断是电平方式,你必须在中断响应程序中让LOCAL_INT和PCI_INT(INTA#)变成高电平。 希望我的回答能对你有所帮助,不过解决问题最终要靠你自己的反复摸索。 |
|
5楼#
发布于:2004-09-29 21:56
怎么给分哪?
最简单化,让lint一直为高(示波器测量了),使能pci和lint中断后马上进入到中断服务程序,inta中断波形是对的,有低电平的过程。 清本地中断怎么清,向intcsr[15]写1吗,还是读intcsr一次就可以 |
|