您的位置:首页 > 其它

WinCE中断处理过程

2006-10-04 21:33 225 查看
l 当一个中断发生后,发送到内核异常处理器(Exception Handler)
l 内核的中断支持处理器调用OAL函数OEMInterruptDisable屏蔽这个中断(../hal/Cfw.c)
l 内核调用ISR,OEMInterruptHandler(../hal/arm/Armint.c),ISR按如下方式查询中断号:
else if (IntPendVal == INTSRC_EINT1) // Keyboard interrupt is connected to EINT1.
// INTSRC_EINT1 在 ../inc/s2410.h 中定义
{
s2410INT->rINTMSK |= BIT_EINT1;
s2410INT->rSRCPND = BIT_EINT1;
if (s2410INT->rINTPND & BIT_EINT1) s2410INT->rINTPND = BIT_EINT1;
return(SYSINTR_KEYBOARD);
//在Oalintr.h中定义或I:/WINCE420/PUBLIC/COMMON/OAK/INC/nkintr.h
}
l ISR返回中断号(逻辑中断标识符)给内核,内核根据此中断号绑定(InterruptInitialize函数绑定中断号核事件)的事件(Event)唤醒事件的等待线程(IST),IST在用户态完成中断处理。
l IST调用InterruptDone来告诉操作系统中断处理完毕,操作系统再次调用OAL中的OEMInterruptDone函数完成中断的处理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: