|
我知道wince中中断分中断服务例程(ISR)和中断服务线程(IST),那我要写一个按键的中断,需要完成哪些工作?
下面是终端过程:
①当内核的异常处理代码接收到一个来自硬件的中断时,内核会侦测到一个异常情况发生,并会提交这个硬件中断。
②内核的中断支持处理器通知ISR去禁止该中断的重复提交,直到相关的中断处理全部完成后,才再度使能该中断。还会通知硬件屏蔽优先级别低的中断,直到必需的处理结束后,再重新打开被屏蔽的中断。在这个过程中,允许高优先级中断触发。
③异常处理器调用ISR来响应中断。
④内核接收ISR返回值,依据该返回值决定如何处理中断。
⑤内核触发中断支持管理器来唤醒中断服务线程(IST)并激活该线程。
⑥当中断服务线程(IST)被唤醒后,它开始处理相应的中断。
⑦如果需要,中断服务线程调用各种I/0例程访问硬件来完成工作。
⑧中断处理结束后调用InterruptDone函数通知内核。
⑨内核调用OEMInterruptDone完成整个中断处理过程,0AL通知底层硬件使能所有中断
哪些是wince已经提供的,哪些还需要修改和写代码?ISR用不用写写到什么地方?
|
|