您的位置:首页 > 其它

WinCE 6.0中断驱动程序分析

2009-05-26 23:35 288 查看
Windows Embedded CE 6.0的中断处理过程主要分为两部分:

中断服务例程(ISR):处于内核中的低级处理程序,中断发生时首先被调用。
中断服务线程(IST):处于驱动或者应用中的中断处理线程,由系统调度,完成大部分的中断处理工作。
ISR的实现在OAL(OEM适配层)中,它只处理最低级的中断响应,通常是获取IRQ和SYSINTR并设置MCU内部的中断控制寄存器。中断处理的主要部分在驱动或者应用的中断处理线程中。中断处理线程与其他普通线程一样,使用同一个线程优先级管理系统。ISR和IST之间通过事件对象进行同步。IST中创建一个事件对象,并使用函数WaitForSingleObject()等待该事件被触发。ISR中通知内核触发相应的事件对象。Windows Embedded CE 6.0的中断处理的过程如下图所示。

[align=center]DWORD
PBT_Init(DWORD dwContext)
static DWORD
PowerButtonIntrThread(PVOID pArg)
static DWORD
PowerButtonIntrThread(PVOID pArg)
BOOL
PBT_Deinit(DWORD dwContext)
//打开与中断关联的事件
gIntrEvent = CreateEvent(NULL, FALSE, FALSE, _T("PBTINTR"));
//设置该事件,模拟一个中断的触发
SetEvent(gIntrEvent);
IST中创建与中断关联的事件代码修改如下:
PwrButtonIntrEvent = CreateEvent(NULL, FALSE, FALSE, _T("PBTINTR"));
[/align]  总的来说,WinCE中断处理过程结构清晰,方便开发人员灵活设计IST。在使用驱动调试助手调试有关中断的驱动程序时,需要善始善终,否则会出现中断不能正常工作的情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: