搜索
bottom↓
回复: 12

在看《时间触发嵌入式系统设计模式》说中断事件会丢失.

[复制链接]

出0入0汤圆

发表于 2014-7-17 11:07:10 | 显示全部楼层 |阅读模式
本帖最后由 yxm433 于 2014-7-17 11:12 编辑

最近在看《时间触发嵌入式系统设计模式》这书,里面推荐用“基于时间触发”的设计模式,在谈到“基于事件触发”模式时,说当多个中断同时到来时,会出现漏掉处理中断的情况,

理解不了 ,会在当2个中断同时发生的时候,会漏掉处理一个中断吗?

此书是基于8051的。
原文大概是这样的:

为了理解为什么当两个中断同时产生时会出现问题,先看一下这种情况下8051体系结构的工作过程。与许多微控制器相似,最初的8051体系结构支持两种不同的中断优先级:低优先级和高优先级。如果两个中断(称做中断1和中断2)迅速地连续发生,系统将做如下处理:
1、如果中断1是一个低优先级,而中断2是高优先级
    低优先级中断激活的中断服务程序可以被高优先级中断打断。在这种情况下,为了让高优先级ISR执行,低优先级ISR将暂停。在大多数情况下,系统将正确运行。
2、如果中断1是一个低优先级,而中断2是低优先级
     由低优先级中断激活的ISR不能被另一个低优先级中断打断。于是,对第二个中断的响应将被延迟;在一些情况下将被完全忽略。
3、高、低
情况类似
4、高、高
情况类似

注意:当心,这意味着什么!嵌入式系统的开发人员普遍有一种错误观念,即中断事件绝不会被丢失。这完全不正确。如果多个中断源可能在“随机的”时间间隔产生中断,即中断响应可能被遗漏。实际上,在同时有几个有效的中断源的情况下,几乎不可能创建程序代码来正确地处理所有可能的中断组合。



大家有什么看法

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

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

出0入264汤圆

发表于 2014-7-17 11:17:30 | 显示全部楼层
这是一个系统设计的问题。
在构建你的系统时候,你就应该清楚,各个中断的重要性的程度。某些中断重要,不能丢掉。某些中断,漏了或者延迟处理,对系统不会致命。
所以,当你清楚了整个系统的工作流程。再来合理的选择MCU,然后再来合理的分配中断优先级。然后再合理的规划自己的程序结构。
这样的系统,跑起来才会稳定。

出0入0汤圆

发表于 2014-7-17 11:45:15 | 显示全部楼层
楼上 红金龙说得很有道理
其实项目的成功与否 关键还是取决于项目负责人,如果规划方向有问题,写出来的代码即使再规范也是白扯

出0入0汤圆

发表于 2014-7-17 12:04:58 | 显示全部楼层
在CM3下,在具有了NVIC这样一个专门处理中断的单元以后依然存在部分中断丢失的情况.
CM3具有中断挂起机制,当高优先级代码段运行时,低优先级中断到来时被挂起,仅仅是在NVIC中报个到,虽然NVIC会记录这个中断有来过,但是不会理会这个中断来了几次,也就是中断到来的时间信息其实是丢失了.换言之,这个中断的实时性就比较差了(当然现代CPU跑那么快,不是非常差的设计一般实时性也差不到哪里去).

其实一开始中断这个东西出现,就是为了改变程序执行流程,去处理一些事件,从这个角度上来说,只要能完成这两个任务那么中断功能就是OK的,这也意味着可以通过良好的设计来规避中断丢失,甚至保证在部分丢失以后可以正常工作这样就OK.
最后还是那句话,没有边界的结论是没有意义的,一个系统本身对实时性也好,安全性也好都是有指标的,满足这个指标就OK.
在越来越主流的中断触发事件系统架构和经典的前后台架构中,中断都起到非常重要的作用,在这种情况下,就需要好好设计中断系统,确保其稳定工作.

出0入0汤圆

发表于 2014-7-18 17:35:04 | 显示全部楼层
该书上讲怎么避免的?

出0入0汤圆

发表于 2014-7-20 02:00:38 | 显示全部楼层
LZ字体搞那么大是找封号的节奏么

出0入0汤圆

发表于 2014-7-20 20:05:55 | 显示全部楼层
中断没有队列,如果中断得不到响应,而这时同样中断发生多次,这时中断就会丢失。

出0入0汤圆

 楼主| 发表于 2014-7-20 23:02:30 | 显示全部楼层
本帖最后由 yxm433 于 2014-7-20 23:03 编辑
craigtao 发表于 2014-7-18 17:35
该书上讲怎么避免的?


书还没看完,到目前,看书推荐的用法是:“只用一个中断源,就是Timer的中断”,就用时间轮询,没有外部事件的中断

出0入0汤圆

 楼主| 发表于 2014-7-20 23:05:40 | 显示全部楼层
summarize 发表于 2014-7-20 02:00
LZ字体搞那么大是找封号的节奏么

我下次弄正常点

出0入0汤圆

发表于 2014-7-20 23:37:13 | 显示全部楼层
看优先级别来判断

出0入0汤圆

发表于 2014-7-21 08:15:02 | 显示全部楼层
yxm433 发表于 2014-7-20 23:02
书还没看完,到目前,看书推荐的用法是:“只用一个中断源,就是Timer的中断”,就用时间轮询,没有外部 ...

恩,这个方法挺好的,我也下载了这本书,但是还没时间来得及看,

出0入0汤圆

发表于 2016-2-29 17:25:09 | 显示全部楼层
rain73 发表于 2014-7-20 20:05
中断没有队列,如果中断得不到响应,而这时同样中断发生多次,这时中断就会丢失。 ...

同意这个观点,还有一种情况再一个中断里关掉了另外一个中断的中断允许。

出0入0汤圆

发表于 2016-2-29 17:44:59 | 显示全部楼层
N年前看过,基于中断的设计,思路跟通常的写法很不一样,很容易头晕。
看了前言,一说什么导弹,医疗的都会使用,觉得很牛逼,其实也只是若干嵌入式架构的一种,看情况使用就行。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-14 02:57

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

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