Nuleus PLUS中断处理
来源:互联网 发布:驱魔少年网络大电影 编辑:程序博客网 时间:2024/04/20 04:03
中断发生的时候,Nucleus挂起当前的任务,处理器的控制权转交给中断处理程序(ISR)。ISR要使用系统功能,就不可避免的要使用到公共资源,而这些资源是需要保护的,保护的办法之一就是在运行ISR的时候屏蔽其它中断,但对于实时系统来说,这显然不是一个好办法,为此,Nucleus通过把应用程序的ISR区分为低级和高级中断处理程序。
低级中断
低级中断服务子程序(LISR)和普通的ISR一样运行在当前的堆栈空间,LISR运行之前系统需要保护处理器现场,运行结束之后恢复现场,但是对于LISR,只有小部分的Nucleus PLUS服务可以被使用,要使用更多的系统服务,就需要使用高级中断服务子程序(HISR)。
高级中断
高级中断服务子程序(HISR)支持动态创建和删除,每个HISR有自己的堆栈空间和控制块,HISR必须在LISR激活之前被创建。
HISR有三个优先级,低优先级的HISR可以被高优先级的HISR抢获处理器。
======================================================================
LISR和HISR是针对OS中断处理不同层次需要而设计的,LISR在硬件中断时立即从Vector表产生,对其执行时间必须要求相当苛刻,所以一般是什么都事都不干,仅仅做一个中断触发标记(当然也有例外,对于有些时间要求更高的FIQ的ISR,必须使其放在LISR处理)。而HISR其实是一个独立于TASK之外而比TASK高级的服务例程,它进行真正的中断处理,因此,它会在LISR完的下一次OS线程调度时触发出来,但是,HISR对执行时间要求也很短。
--------------------------------------------
对于Linux,中断分为两个部分,上半部和下半部(bottom half),在上半部执行的时候,是关中断的,而在下半部执行的时候,是开中断的,即可以响应其它的中断。
在上半部中,处理的是很紧急的事情,而在下半部中则可以执行不那么紧急的。
比如对于网卡来说,在中断上半部中,将网卡中的数据拷贝到内存中来,而在下半部中,则将这些数据通过网络协议栈给传到上层去。
http://bliuqing.iteye.com/blog/1408432
- Nuleus PLUS中断处理
- Linux和Nuleus PLUS的中断处理 HISR LISR
- Nucleus PLUS的启动、运行线程和中断处理
- Nucleus PLUS的启动、运行线程和中断处理
- Nucleus PLUS的启动、运行线程和中断处理
- 中断和中断处理
- 中断处理--串口中断
- 中断及中断处理
- 中断和中断处理
- 中断和中断处理
- 中断处理
- 中断处理
- 中断处理
- 中断处理
- 中断处理
- 中断处理
- 中断处理
- 中断处理
- null在Java中的真实面目
- arm-linux head.s 分析 基于mini2440 uboot后的解压过程
- [AngularJS] 仿照Angular Bootstrap TimePicker创建一个分钟数-秒数的输入控件(minuteSecondPicker)
- 织梦DedeCMS终极安全解决方案
- 输入年份和月份,输出月份天数
- Nuleus PLUS中断处理
- 中国工业行业分类英文翻译
- Linux 重启,关闭命令
- VMWare虚拟机提供的桥接、nat和主机模式的区别
- 淘宝购物遇假货
- HGU启动日志
- 阅读,思想,编译器
- Dedecms系统环境需求及注意事项
- swift语言IOS8开发战记13 Review Controller