Nucleus中断处理过程!!!!

Nucleus的中断分为管理的和非管理的中断。

管理中断:需要向操作系统注册该中断向量,中断产生后通过该中断向量注册的低级中断服务程序(LISR)来激活高级的中断服务程序(HISR)。

非管理中断:不需要通过操作系统进行管理,直接将中断服务程序挂到中断向量表上,上下文的保存与恢复都要用户自己来做,该中断自己不能嵌套,最好不要被管理的中断再次中断否则会引起堆栈出错,而且非管理的中断不能使用绝大多数的Nucleus系统调用,因为它可能会破坏操作系统某些保护的数据结构(当有线程在运行时)。

非管理的中断适用于那些比较频繁的中断,如果通过操作系统来管理这些中断的话,其上下文保存与恢复的时间就比较长,中断的实时性就不能满足要求。


Nucleus PLUS 通过把应用程序的 ISRs 区分为低级到高级组件来处理保护问题。


低级中断:低级中断服务子程序(LISR)和正常的 ISR 一样运行,包括使用当前堆栈。Nucleus PLUS 在调用 LISR 之前保存上下文,在 LISR 返回之后恢复上下文(上下文的保持都是由操作系统来完成的)。Nucleus PLUS 支持多个 LISRs 的嵌套。

LISR主要完成硬件中断的处理,及激活HISR



高级中断:

1、高级中断支持动态创建和删除。每个 HISR 由它自己的堆栈空间和控制块。每个的内存由应用程序提供。高级中断一般都是由低级中断激活。

2、高级中断不允许自挂起。

3、高级中断分成3个优先级:0, 1, 2.。 

4、高级中断直接是可以互相抢占的(在一个低优先级的 HISR 处理期间,如果一个更高优先等级的 HISR 被激活,低优先级的 HISR 以与任务抢先方式相同的方式抢先。)。

5、高级中断如果被同时触发多次,一个激活的计数器维护着每个 HISR。这个计数器用于确保每个 HISR 为每次激活运行一次。注意:一个已经激活的 HISR 的每次附加触发都通过连续调用 HISR 来处理。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值