sdssly
驱动牛犊
驱动牛犊
  • 注册日期2003-03-04
  • 最后登录2016-01-09
  • 粉丝2
  • 关注0
  • 积分344分
  • 威望47点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
阅读:2053回复:0

已解决:wince 5 2440平台 dm9000的网卡驱动中HandleInterruptHandler没有被调用??

楼主#
更多 发布于:2007-01-10 16:36
这个问题已经解决,是因为我没有明白cpu的中断编号和wince的中断编号的关系。

外部中断在cpu中编号是35,但是需要映射为sysintr,这个可以通过函数OALIntrStaticTranslate来建立映射。网卡驱动中注册的irq号应该是system的中断编号。

再深入的细节,我也不明白了



  正在移植dm9000的网卡驱动到wince 5,发现网卡中断产生了,但是HandleInterruptHandler没有被调用?? 是怎么回事?

dm9000采用的中断为35,调试信息如下:

dm9000注册中断:
[dm9:Call EDeviceRegisterInterrupt irq=35
+OALIntrEnableIrqs irq=-1 count=1 EINTMASK=00ffff70
-OALIntrEnableIrqs irq=-1 EINTPEND=00000200 EINTMSK=00ffff70 INTMASK=f7ffbfef
[dm9:After EDeviceRegisterInterrupt irq=35 status=0

上面中,有一个奇怪的问题,我调用EDeviceRegisterInterrupt函数使用的irq为35,为什么OALIntrEnableIrqs 中的irq变为-1? 是不是有问题?

dm9000中断到来后,interrupt handler已经得到这个中断35 而且我测量dm9000的int pin 为高电平,但是没有调用dm9000中的中断处理函数:
+OEMInterruptHandler irq=4 GPFCON=95aa GPFDAT=89
EXTINT0=12222222 EINTMASK=00ffff70 EINTPEND=00000280
SRCPND=2004010
INTMOD=0
INTMASK=f3ffbfef
INTPND=10
INTOFFSET=4
SUBSRCPND=97
INTSUBMSK=7fff
irq2=35
INTMASK=f3ffbfef
INTPND=4000
irq=4 EINTMASK=00fffff0 EINTPEND=00000280
游客

返回顶部