wince中断

在wince6.0中,各种外设是通过中断和wince的核心进行通信的。其过程为:

1 . 硬件设备产生硬件中断

2 . OAL完成硬件中断到逻辑中断(SYSINTR)的转换

3 . 系统识别逻辑中断,同时进行相应的处理。

 

 

其中。OAL层的中断处理包括以下一些功能:

1. 中断初始化;有函数BOOL BSPIntrInit(void)完成。实现的功能有为相关的寄存器分配虚拟地址,相关中断的初始化,将逻辑中断与硬件中断相关联。

2.  中断使能;有UINT32 BSPIntrEnableIrq(UINT32 irq)完成。完成中断使能的功能、用户添加的中断需要在此添加中断使能的处理。

3. 中断禁止;偶UNIT32 BSPIntrDisableIrq(UINT32 irq)完成。完成中断的禁止的功能,用户添加的中断需要在此添加中断禁止的功能。

4. 中断完成;UINT32 BSPIntrDoneIrq(UINT32 irq) 完成。在中断处理完后调用,完成打开中断的作用,用户添加的中断需要在此添加相应的处理。

5. 中断激活;在中断产生后被调用,完成分配系统中断号的功能,用户添加的中断需要在此添加相应的处理。

 

 最后,当系统发现中断以后,将分为两部分进行处理。为中断服务例程(ISR)和中断服务线程(IST)

 

 

中断服务例程(ISR)只负责最简单的功能,即响应设备并返回一个中断标识给操作系统的核心。而对中断的实际处理则不在ISR中实现,对中断的处理被放在了中断服务线程(IST)中。

 

ISR的主要作用:

1. 如果数据可能丢失或被下一个中断改写,则ISR将数据从设备读取到缓冲区。

2. ISR清除该设备上的中断条件

3. ISR向内核返回一个SYSINTR。

4. 内核设置供IST等待的中断事件

5. 调度程序调度等待的IST以执行后续的中断服务操纵。

 

IST是运行在用户空间的中断服务线程,它负责接到系统逻辑中断号之后的中断服务处理. IST在运行时首先要注册自己,然后再与一个系统事件关联。用InterruptInitialize注册自己,然后用WaitForSingleObject来等待终端请求事件。

IST实现过程为:

1. 创建一个事件

2. 得到系统 的中断号

3. 创建一个挂起的中断服务线程

4. 设置中断服务线程的优先级别

5. 调用函数InterruptInitialize同时系统注册中断

6. 回复终端服务线程,IST 开始工作。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值