4084|4

420

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

中断线程化的设计实现 [复制链接]

本帖最后由 jorya_txj 于 2014-11-29 13:07 编辑

目前几乎所有的rtos中断都是在中断上下文中处理的。即使raw-os提供了中断下半部的机制,中断上半部也是在中断环境中处理的。目前问题是,有的任务可能比有一些中断的优先级还要高,并不是所有的中断优先级都是很高的。比如某个任务执行当中不允许被中断打断,将如何去实现?还有一个问题是有一些用户的中断代码由于一些历史原因的设计导致中断内执行的代码实在太多,严重影响了整个系统的实时性,如何花最小的代价去改善这一块的实时性?

以上提出的两个问题可以采用中断线程化的思想去解决。解决方案大致如下:

1 内核开启几组高优先级的任务,安排给不同优先级的中断。比如开启一个优先级为 10 的任务处理一般优先级的中断。开启一个9优先级的任务处理高优先级的中断。

2 中断服务程序内只发送一个消息,唤醒外面的任务来处理中断服务程序。这样整个中断上下文的环境时间是固定的,而且非常迅速,消耗只有一个内核api队列的发送函数而已。

通过以上的措施可以迅速的改进一些历史遗留驱动中中断时间太长的缺点。通过把中断的整个处理过程搬到外面去处理,也保证了一些更高优先级任务不被无关中断打断,从而实现了系统更高的实时性。

总结,以上的介绍更侧重在整个应用系统的设计思想,具体的实施方案可以灵活实现。






最新回复

过来看看~~~~~~~~~~~~~~~~  详情 回复 发表于 2014-11-29 15:53
点赞 关注

回复
举报

38

帖子

1

TA的资源

一粒金砂(中级)

沙发
 
点赞
 
 

回复

60

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
此贴必须要顶,貌似大神的这个观点不错,值得一试~

点评

实践中采用raw-os的raw_work_queue.c 即可实现。  详情 回复 发表于 2014-11-29 19:55
 
 
 

回复

1119

帖子

0

TA的资源

一粒金砂(中级)

4
 
过来看看~~~~~~~~~~~~~~~~
 
 
 

回复

420

帖子

0

TA的资源

纯净的硅(初级)

5
 
xingjling 发表于 2014-11-29 13:18
此贴必须要顶,貌似大神的这个观点不错,值得一试~
实践中采用raw-os的raw_work_queue.c 即可实现。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表