阅读:1644回复:4
中断注册函数的问题?(30分请教)
我在open()函数中注册我的中断,可是编译通过,执行是却总是死在了那里,我想原因可能是出在那几个参数上面吧,我赋值如下:
int irq--从配置空间读出的中断线。 void (*handler)(int,void *,struct pt_regs *)--p9054_interrupt(); flags--SA_INTERRUPT:表明是快速中断处理程序 *dev_name--p9054 *dev_id--自定义的设备结构 上面的赋值有问题吗?我感觉要有问题肯定是自己对irq和dev_id 的值上面,感觉应该是通过dev_id来建立设备中断类型的,可是还是不明白到底是怎么样的一个过程,当硬件中断来了,通过什么自动执行中断服务程序呢? 困扰了三天了,请高手指教一下,一定送分的! |
|
沙发#
发布于:2003-07-01 10:00
能否说明出现的什么错误?或者说怎么死的。
可否是因为中断产生太快引起的?加个delay试试。 |
|
板凳#
发布于:2003-07-01 12:10
多谢unix1998的回答了,错误原因出在我对dev_id的理解有错误,还有就是没有识别正确的中断源!
我的板卡和别的硬件公用0X11的中断线,我不知道给怎么识别那个中断是我的? 请多指教啊! |
|
地板#
发布于:2003-07-01 13:29
通过读9054的内部寄存器就可以判断这个中断是否是9054发出的!我记得是中断状态/控制寄存器。
|
|
|
地下室#
发布于:2003-07-01 22:21
这个我知道,现在也已经通过了,只是自己仍然不是很明白!
硬件工作真的神奇,软件也是如此! |
|