WINCE下网络PING通一会就断,解决方法
根本原因 在于 中断处理服务中,把已经产生的 中断 标志 给 清除掉了!
这样就丢失一次中断。因为原驱动里配置中断为上升沿触发!一次中断丢失,就导致不会再产生中断信号跳变,因为,只有在中断服务中读取了cs8900的 Interrupt status queue寄存器后,才会产生下一次中断!(见cs8900 datasheet 的 14页 中关于 INTRQ的解释!
关于为什么 , 原驱动 会 把已经产生的 中断 标志 给 清除掉了!
你可以跟踪一下 cs8900驱动 中断服务中 开中断 关中断的过程!
解决cs8900+s3c2410+wince平台网络断线的问题!
解决办法:
找到 E:\WINCE420\WINCE420\PLATFORM\SMDK2410\KERNEL\HAL\cfw.c
找到 BOOL OEMInterruptEnable() 函数 里 case SYSINTR_ETHER:
if(Inited == FALSE)
{
s2410IOP->rEINTPEND = 0x200;
s2410INT->rSRCPND = BIT_EINT8_23; // by shim
if (s2410INT->rINTPND & BIT_EINT8_23)
s2410INT->rINTPND = BIT_EINT8_23;
Inited = TRUE;
}
s2410IOP->rEINTMASK &= ~0x200;
s2410INT->rINTMSK &= ~BIT_EINT8_23;
break;
在 全局 定义: BOOL Inited = FALSE;
这样改过后! 可能需要 全部重新编译, clean 后 再重新 build !!
再测试网络!就没有问题了!
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=3083045
|
- 评论人:zhengguo23
2007-05-26 18:09:15
|
|||
看到大家都在应用我的解决办法! 真高兴!
|
||||
|
- 评论人:anonymous
2006-07-15 16:39:36
|
|||
非常感謝 |
||||
|
- 评论人:anonymous
2006-07-15 16:38:40
|
|||
非常感謝 |
||||
|
- 评论人:蜡笔小新
2006-05-15 21:11:56
|
|||
大哥:
|
||||