WINCE下s3c2410+cs8900 板子的网络问题解决

来源:互联网 发布:淘宝客服电话沟通技巧 编辑:程序博客网 时间:2024/06/08 02:52

WINCE下网络PING通一会就断,解决方法

根本原因在于中断处理服务中,把已经产生的中断标志给清除掉了!

这样就丢失一次中断。因为原驱动里配置中断为上升沿触发!一次中断丢失,就导致不会再产生中断信号跳变,因为,只有在中断服务中读取了cs8900 Interrupt status queue寄存器后,才会产生下一次中断!(cs8900 datasheet 14页中关于 INTRQ的解释!

关于为什么,原驱动会把已经产生的中断标志给清除掉了!你可以跟踪一下 cs8900驱动中断服务中开中断关中断的过程!解决cs8900+s3c2410+wince平台网络断线的问题!

解决办法:

找到E:\WINCE420\WINCE420\PLATFORM\SMDK2410\KERNEL\HAL\cfw.c

找到 BOOLOEMInterruptEnable()函数里 case SYSINTR_ETHER:

if(Inited == FALSE)

{

        s2410IOP->rEINTPEND = 0x200;

        s2410INT->rSRCPND = BIT_EINT8_23; // byshim

        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;

原创粉丝点击