阅读:1503回复:10
急切求助,nt下中断无法捕获!!!
自己做的板卡,中断放在7上,边缘触发,isa类型,non-pnp
只有一个中断源,其他的都没有,每秒发出一个脉冲,持续1微秒作为中断源;硬件已经使用示波器看过了,的确有脉冲产生; 我修改了ddk下面的int例子,中断服务历程中设置event,可是怎么也无法收到;使用windriver的wizard,监听不到,在bios把中断7改成legacy isa也是没用;使用TvicHW也捕获不到;修改DS下的一个例子,还是收不到 请高手指点,问题可能出现在那个地方,谢了~~~ |
|
沙发#
发布于:2003-06-24 16:29
我和你在做一样的项目,我也是WIN2000下的ISA的NT试的驱动,我是用DS做的,中断号是3,边沿触发,中断的申请是成功的,由于硬件没做好,先用SOFTICE来模拟硬件产生中断:genint 33, 可是中断处理例程:ISR就是不执行,真的不知道什么原因!
期待中。。。。。。。。。。。 [编辑 - 6/24/03 by libin2309] |
|
|
板凳#
发布于:2003-06-24 20:21
你们机子上的中断号开了吗?有没有被占有?我以前遇到过。
|
|
地板#
发布于:2003-06-24 20:31
你们机子上的中断号开了吗?有没有被占有?我以前遇到过。 什么意思?我的中断不是共享的只给我的设备用,你说的开是什么意思? |
|
|
地下室#
发布于:2003-06-24 22:03
在nt诊断器上看,我所用的中断号7并没有被占用
驱动加载之后,也显示出7被我的驱动给用掉 “开”的含义我也不大明白~ 因为是non pnp的isa驱动,根本不存在开关中断(今天在论坛上查到的),论坛上有位老兄也提到了bios里面的设置,我也将中断7改成为legacy isa模式,也没有效果 刚才试试softice的模拟中断,结果也是一样。看来应该是环境的问题,因为windriver ,ds 和TVicHW的中断检测例子程序下,我都试过了,模拟出的中断并不能导致响应。 请多多发言,谢谢 |
|
5楼#
发布于:2003-06-24 22:07
在顶,实在是不知道什么原因,我感觉应该没问题,可是中断处理程序就是不执行,是不是我使用的SOFTICE的命令不对,我的硬件中断号是3,使用SOFTICE: genint 33,在WIN2000系统下是应该产生3号中断吧?
期待。。。。。。。。。。 |
|
|
6楼#
发布于:2003-06-25 14:58
不知道帖主的难题解决没有?解决了,告诉兄弟一声,我很着急,看了很多的资料,还是找不到我错在哪里。
我的资源申请是成功的。我用DriverMonitor加载好我的驱动后,在“开始”->“附件”―>“系统工具”―>“系统信息”里能看到我申请的IRQ号,正是3,这说明,我的资源申请是成功的。 用SOFTICE产生这个中断,因我的系统是WIN2000,所以:genint 33这个也没错,我查了很多的资料,都是这么说的,那么我的中断处理程序不执行无非就是两个原因: 1。SOFTICE没有真正产生这个中断,我觉得这种可能性很小,如果真的是,我怎么来验证? 2。我的中断处理程序有问题,我是用DS写的,在驱动初始化地方连接中断,中断到来应自动转入中断处理函数,可是怎么也进不去! 急!!!!!!! |
|
|
7楼#
发布于:2003-06-25 22:13
呵呵,我的中断问题解决了,捆饶了好几天的问题终于解决,回味起来,感觉有些 网友的回复不一定就是对的。
我是在WIN2000下的3号中断,以前好多资料都说用SOFTICE的话这样写:genint 33,我用这个命令死活就进入不了中断例程,后来我换成:genint 51就可以了,能产生中断,进入了中断处理例程。一切正常。51是我的3号中断对应的Vector, 我是用DS写的驱动,在KInterrupt的成员函数Vector()就能得到这个值,或者在SOFTICE中输入命令:irq也能看到该值。DDK我没用过,不知道是什么函数。 特此写出来让那些仍困惑的人早日走出困惑! 仅供参考 |
|
|
8楼#
发布于:2003-06-30 19:55
呵呵
我出差刚回来 换了一台机子,什么问题都没有~~~ 痛苦了半天,就是这么解决的~ 你的33应该是十六进制的吧~ |
|
9楼#
发布于:2003-06-30 21:04
不是十六进制的原因吧,我又用7号中断实验了一下,用GENINT 91可以产生7号中断。
|
|
|
10楼#
发布于:2003-07-01 11:39
好,总结!!!
|
|