阅读:2053回复:0
已解决:wince 5 2440平台 dm9000的网卡驱动中HandleInterruptHandler没有被调用??
这个问题已经解决,是因为我没有明白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 |
|