搜索
bottom↓
回复: 13

嵌入式操作系统进入临界区后,如果发生中断就丢失不管了?

[复制链接]

出0入0汤圆

发表于 2021-9-13 10:44:33 | 显示全部楼层 |阅读模式
嵌入式操作系统进入临界区后,如果发生中断就丢失不管了吗?比如51单片机运行某个操作系统。
这算是应用操作系统的代价吗?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2021-9-13 10:51:36 | 显示全部楼层
退出临界区,打开中断总开关后,之前因为屏蔽没被响应的中断会触发的,不会丢失中断

出200入2554汤圆

发表于 2021-9-13 10:51:39 来自手机 | 显示全部楼层
一般是挂起请求,待前一个临界区退出后再行中断。
当然如果中断太频繁,后续挂起的请求可能会覆盖掉之前的。

出0入17汤圆

发表于 2021-9-13 10:55:50 | 显示全部楼层
如果STM32 有中断优先级,高优先级的又会抢占低优先级,进入中断嵌套的状态。
中断嵌套的数量也是有限的

出30入54汤圆

发表于 2021-9-13 11:11:32 | 显示全部楼层
非电平中断发生后会维持一个中断标志位,在中断开关重新开启后,这个中断会被自动触发,并不会丢失。
电平中断在这种情况下会丢失。
如果是一个中断信号在此次关闭中断过程中多次发生,则只会记录发生一次中断,多余中断信号相当于丢失。不过对于这种情况,即使不关闭中断,如果CPU处理的速度慢于中断产生的速度,一样会丢失

出0入0汤圆

发表于 2021-9-13 11:56:58 | 显示全部楼层
这跟操作系统没啥关系吧

出280入168汤圆

发表于 2021-9-13 14:06:01 来自手机 | 显示全部楼层
和中断的模式相关,1. 边沿触发的中断会锁存住等待处理,2. 电平中断过去就过去了,你都不晓得它来过。

边沿触发虽然会锁存,但如果第二个中断来的时候,第一个中断还没处理则它就会被第二个覆盖了。

中断处理程序无法识别出当前响应的中断是第几个中断。

出30入25汤圆

发表于 2021-9-13 14:10:02 | 显示全部楼层
中断能排队的深度总是有限的,实际上不能排队也不过是退化到"排队深度=1"的特例。

出0入0汤圆

 楼主| 发表于 2021-9-13 14:12:15 | 显示全部楼层
https://blog.csdn.net/w942401053/article/details/100882419
比如51单片机,进临界区是EA=0,出临界区EA=1,应该能响应曾经发声的中断。

https://www.cnblogs.com/zpehome/p/3289296.html
有的说法是禁止中断后,再启用中断,中断就得不到响应。这个禁止中断是禁止单个的中断源中断吗?
#if 0
    Disable_Mac_EXT_Interrupts();//禁止按键中断
     delay_ms(10000);//定时器延时10S,在延时过程中按下按键
     Enable_Mac_EXT_Interrupts();//延时退出时,中断得不到响应
#else
    cpu_sr = CPU_SR_Save();//进入临界段
     for (i=0;i<200;i++){//延时一定时间,在延时过程中按下按键
        for (j=0;j<50000;j++);
    }
    CPU_SR_Restore(cpu_sr);//延时退出时,中断得到响应
#endif

出0入8汤圆

发表于 2021-9-13 14:20:00 | 显示全部楼层
想象一下你和女邻居在家,
然后进入了临界区,
这时候女邻居的老公来敲门,
你会退出临界区吗?

出0入8汤圆

发表于 2021-9-13 15:44:45 | 显示全部楼层
本帖最后由 security 于 2021-9-13 15:46 编辑
arm7tdmi 发表于 2021-9-13 14:12
https://blog.csdn.net/w942401053/article/details/100882419
比如51单片机,进临界区是EA=0,出临界区EA=1 ...


下面的 CPU_SR_Save();,跟 EA = 0 是类似的。
这些是总中断的开关,关了的话,就不会响应。

而中断发生时,一般来说,都是会被记住的,也就是会有 pending 标志(中断状态标志),这个标志不被清零的话,会一直向 CPU 内核触发中断的。
触发到 CPU 内核之间的路上,有一些开关,EA 之类的就是最终的总开关。

而你把按键中断关闭的话,按键中断的 pending 标志,就不会被置位,因此不会有中断触发。

出100入312汤圆

发表于 2021-9-13 16:08:32 | 显示全部楼层
重复触发几次时,还是会丢

出0入4汤圆

发表于 2021-9-13 16:55:17 | 显示全部楼层
操作系统进入临界区,可以只关闭某个优先级及以下中断,不归操作系统管理的高优先级中断还可以响应。而被屏蔽的优先级中断,可以在退出临界区后被响应。

出0入0汤圆

发表于 2021-9-13 19:07:19 | 显示全部楼层
uindex 发表于 2021-9-13 14:20
想象一下你和女邻居在家,
然后进入了临界区,
这时候女邻居的老公来敲门,

那个估计会产生hardfault
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-29 03:01

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表