[uCOS/uCGUI] UCOS的中断嵌套

gordon_yjh   2012-6-28 17:39 楼主
刚刚学习UCOS,没有时间去阅读书籍,只好先在这里向大家请教了

在UCOS的IRQ中断处理过程中(ARM9平台),看到从IRQ模式切换到了SYS模式,并且禁止了IRQ中断,然后再去调用用户的设备中断服务程序。

我想请教大家,切换到SYS模式是为了中断嵌套吗?
如果我的方案中,不允许中断嵌套,是不是就可以不用SYS模式了。

回复评论 (3)

回复 楼主 gordon_yjh 的帖子

切换CPU的工作模式,有时也称特权等级主要的目的是为了保护系统的资源不被用户程序非法使用。所以。你说的进入SYS模式不是为了中断嵌套。只是为了系统要调用系统函数了,所以进入系统模式,防止在系统函数执行过程中用户模式下的硬实时中断破坏系统数据
点赞  2012-6-29 23:32

回复 沙发 wstrom 的帖子

明白版主的意思了。在这个问题上,我还有些不确定,在C中断处理程序中的操作步骤。
BL      $IRQ_Exception_Function         ; 调用c语言的中断处理程序
1。禁止中断优先级小于等于本中断优先级的中断产生,就是暂时屏蔽低级中断。否则,在这个时候产生了低优先级的IRQ中断,会先处理那个中断。

2。使能IRQ中断。这样当更高优先级的中断发生时,可以再次进入IRQ模式,处理更高优先级的中断。

3。其他的中断处理。

不知道我的理解是否正确,请版主指正。
点赞  2012-7-2 17:12
此外,我看到在zlg的UCOS移植中IRQ堆栈最多可以嵌套8层,这是和周立功的芯片和中断处理方法想关联的,有的方案中,芯片已经变了,可是还是使用8层嵌套,显然是不合理的。

还有在周立功的例子中,设备的中断处理程序中,始终没有打开ARM的IRQ中断,也就不存在嵌套的可能性。那么这种设计中切换ARM工作模式,允许中断嵌套,只是良好的设计初衷,并没有真正的实现其目标。

不知道我的理解是否正确,请版主指正。
点赞  2012-7-3 10:10
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复