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。在使用驱动调试助手调试有关中断的驱动程序时,需要善始善终,否则会出现中断不能正常工作的情况。
中断服务例程(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。在使用驱动调试助手调试有关中断的驱动程序时,需要善始善终,否则会出现中断不能正常工作的情况。
相关文章推荐
- WinCE 6.0中断驱动程序分析
- S3C2410 && WinCE6.0的中断处理分析
- S3C2410 && WinCE6.0的中断处理分析
- S3C2410 && WinCE6.0的中断处理分析
- S3C2410 && WinCE6.0的中断处理分析 (转载自博客园牛人we-hjb)
- S3C2410 && WinCE6.0的中断处理分析(转载)
- S3C2410 && WinCE6.0的中断处理分析 (转载自博客园牛人we-hjb)
- S3C2410 && WinCE6.0的中断处理分析
- S3C2410 && WinCE6.0的中断处理分析
- 深入浅出分析Linux设备驱动程序中断
- WinCE 6.0中串口读数据函数代码分析
- WinCE中断结构分析
- Telechips 8902 & WinCE6.0 平台下 overlay 使用冲突现象的分析
- WinCE中断分析
- ARM中断分析之四:WinCE的OAL层的中断分析
- WinCE6.0学习之EBoot源码分析----startup.s(二)
- 转:WinCE6.0 串口驱动分析
- wince 6.0修改驱动程序、编译、更新内核简要过程
- wince6.0 +S3C6410 中断处理例子(按键控制LED灯)
- WinCE6.0 BootloaderMain源码分析之KernelRelocte