单片机信息网:深圳市今科电子有限公司
网站地图 RSS订阅
高级搜索 收藏本站
会员中心 欢迎投稿
首页 | 业界动态 | 解决方案 | 技术文献 | 下载中心 | 单片机学习 | 单片机原理 | 单片机编程 | 单片机设计 | 单片机开发 | 技术专题 | 单片机论坛 |单片机博客| 联系我们
单片机新闻 | 单片机学习 | 单片机编程 | 单片机设计 | 单片机开发 | 单片机原理 | 单片机解密 | 芯片解密 | IC解密 | 单片机方案 | 51单片机 | AVR单片机 | PIC单片机
单片机程序实例大全 | 潜入式系统 | PCB设计 | 单片机资料下载 | 工具/软件下载 | 技术经验分享 | 单片机技术人生 | IC资料下载 | 数字电路 | 模拟电路 | 单片机空间
当前位置:主页>嵌入式系统>文章内容
μC/OS-II中缩短中断关闭时间的方法
来源:单片机信息网 作者:匿名 发布时间:2007-10-18 阅读次数: 【大 中 小】【收藏本文】 【打印

μC/OS-II中缩短中断关闭时间的方法


引 言

  在实时操作系统中,由于是多任务的并发运行,所以在进入一些临界区时为了保证多任务的正常运行要关中断。而最大关中断时间是衡量一个实时操作系统性能的重要指标,因为外部的输入一般都是通过中断方式来通知系统的,系统如果关中断时间长,必然不能及时接收中断,对中断的及时处理就更谈不上。

  更重要的是,有些应用场合对关中断的时间有非常严格的要求。例如,在电力系统微机继电保护装置中,对电流A/D采样时,为了保障对采样值的正确处理,定时中断的每一个周期时间都必须及时采样。试想,如果定时器设置的周期时间到,定时器中断产生,但恰恰这时系统处于关中断时间,系统就不能及时进行采样;而当关中断时间过长,超过一定的值时,系统再来进行采样,依据此采样值的计算结果就会出错。所以,在这样的场合中,一种实时操作系统的最大关中断时间就成为该种实时操作系统能否成功运用的最关键的因素。

  笔者将以μC/OS-II实时内核为例,通过对μC/OS-II的改进,向读者描述一种缩短实时操作系统中断关闭时间的方法。之所以选择μC/OS-II,一是因为读者容易获得相关代码,国内很多读者也对μC/OS-II有一定程度

  的了解;二是因为其自身结构简单,适合运用于低档嵌入式处理器,关中断时间的问题更加突出。低档嵌入式处理器的处理速度慢,在关中断时间里处理相同的软件代码,花费的时间更长,相对地延长了关中断时间,这时尽量从软件着手解决关中断时间的问题。

  1 系统状态标志法概述

  μC/OS-II中在进入临界区之前为什么要关闭中断?通过相关资料[1]的介绍和对μC/OS-II源代码的理解,我们知道在μC/OS- II中一旦不关中断就进入临界区。当某一任务进入临界区时,若恰好发生中断,那么这时有可能引起两种对临界区操作的冲突:①在中断服务程序中要操作同一临界区;②因为中断的产生而引起任务的转换,在新的任务中要操作同一临界区。所以μC/OS-II中在进入临界区前要关闭中断。

  针对μC/OS-II关中断机制的分析,考虑用一种系统状态标志法来解决这样的临界冲突。在μC/OS-II增加一个全局布尔变量来表示系统的状态,称为"系统状态标志"。

  对于μC/OS-II中所有可以在中断中出现又要对临界区操作的函数,可以在进入临界区之前先查询系统状态标志。如果目前系统没有进入临界操作状态,则首先将该标志置位,表示系统进入临界操作状态,然后该函数就可以操作临界区;而如果发现系统已进入临界操作状态,则将该函数对临界区操作的部分单独形成一个函数,放到一个系统循环函数数组里,等待系统任务调度时执行。

  对于μC/OS-II中所有不可能在中断程序中出现而又要对临界区操作的函数,因为函数不在中断中出现,所以函数开始时系统状态标志肯定不会在临界操作状态,因此可在函数操作临界区时直接将系统状态标志置位,表示系统进入临界操作状态,然后即可进行临界区的操作。

  系统状态标志的复位在任务调度函数中执行。当然对系统状态标志的设置是要在关中断的条件下执行的,这应该算是系统新的一个临界区。

  2 该方法的具体实现

  下面以对μC/OS-II v2.61代码的改进为例,具体讲解该方法的具体实现。

  2.1 任务调度函数OS_Sched的修改

  修改后的任务调度函数OS_Sched的伪代码如下:

  

程序

  

程序

  

程序

  因为在任务调度函数OS_Sched中要执行循环函数数组里的函数,同时还要对系统状态标志复位,退出系统临界操作状态,所以修改过的函数在遇到以下3种情况--该函数是在中断里调用时、在任务调度锁定时、当前任务就是最高优先级任务时,都将执行系统循环函数数组里的函数,并将系统状态标志复位,而原任务调度函数在遇到以上3种情况时是直接返回的。

  2.2 增加任务重调度函数OS_Resched

  任务重调度函数OS_Resched的伪代码如下:

  

程序

  任务重调度函数在以下两处执行:

  (1) 当μC/OS-II将当前任务控制块压栈,而还没有将最高优先级任务的控制块弹出栈时执行,因为这时在系统循环函数数组里有可能还有未执行的函数,这些函数的执行有可能导致另外一个更高优先级任务的就绪。

  (2) 在中断服务函数的末尾执行。如果μC/OS-II中断返回函数返回的是一个真值,则表示需要执行重调度函数,这时就要执行重调度函数。

  2.3 中断返回函数OSIntExit的修改

  中断返回函数OSIntExit的伪代码如下:

  

程序

  原函数的返回是void,而改动后的函数返回一个布尔量,用来表示下一步是要正常中断返回(返回布尔假值时),还是要调用任务重调度函数(返回布尔真值时);同时,改动后还增加对系统状态标志的查询,如果发现系统在临界操作状态,则直接返回布尔假值。所以在中断服务程序的最后不是象原来那样简单的调用,而是调用后根据返回值作相应的处理。

  2.4 信号量发送函数OSSemPost的修改

  这里将以信号量发送函数OSSemPost为例来描述对可在中断中调用而又会对临界区操作的函数的改进。对于μC/OS-II中的其他函数,改进的方法大致相同。

  信号量发送函数OSSemPost的伪代码如下:

  

程序

  在这里,改动后的函数将先判断系统状态标志,如果系统在临界区操作状态,则将临界操作作为另一个函数放入全局函数循环数组,等待在任务调度时执行,如果不在临界区操作状态,则关中断后将系统状态标志置位,然后开中断进行原函数的那些临界操作和任务调度。

  2.5 信号量等待函数OSSemPend的修改

  同理,这里以信号量等待函数OSSemPend为例来描述对不能在中断中调用而又会对临界区操作的函数的改进。

  信号量等待函数OSSemPend的伪代码如下:

  

程序

  在这里,改动后的函数先将系统状态标志置位,然后进行原来函数的临界区操作。需要说明的是,对于函数因为等待信号量时间到、还未获取信号量而返回的情况的处理机制,改动后的函

  数与原函数不同,改动后的函数将OS_EventTO函数放到时间节拍函数OSTimeTick中执行,并将OS_EventTO函数的输入参数由原来的事件pevent指针,改为任务控制块指针ptcb,因为在函数OSTimeTick中是按照任务控制块指针操作的。

  结语

  上述方法已经在笔者的一个电力微机继电保护项目中成功运用,该方面的实现,提高了μC/OS-II的性能,扩大了μC/OS-II的应用范围,使得单边及工程师能更好的利用μC/OS-II提高嵌入式软件编程水平。特别要说明的是,虽然笔者是以μC/OS-II为例来介绍的,但该方法的原理可以运用到其他实时操作系统上,笔者正在将该方法在实时操作系统RTEMS上实现。从这个意义上讲,该方法的提出也对那些致力于编写自己的实时操作系统的嵌入式软件工程师具有借鉴意义。



上一篇:用ST16C2552实现DSP高速串行通讯扩展   下一篇:基于IXP2400的RPR综合业务接入系统设计

标签:嵌入式系统 单片机 μC/OS-II 中断关闭 点此搜索本站更多相关信息...搜索更多相关内容..

您可能还感兴趣的内容: 深圳今科电子单片机解密、IC解密服务 今科电子单解机、IC解密业务是怎样的流程?

此页的访问者还关注了下面这些相关资讯


·基于IXP2400的RPR综合业务接入系统设计
·TMS320C61416 EMIF总线下双FPGA加载设计
·用FPGA实现数据远距离的高精度传输
·混合仿真下DDS的改进研究与实现
·8位机嵌入式TCP通信速度的研究
·分析技术:让世界变得更安全、更清洁、更美好
·基于模型和产品代码生成的汽车嵌入式系统设计
·Keil C动态内存管理机制分析及改进
·嵌入式实时操作系统Nucleus PLUS在S3C2410A上移植的实
·嵌入式操作系统的新动向
·嵌入式操作系统uClinux和eCos的比较
·FPGA的DSP性能揭秘
·嵌入式Linux系统的动态电源管理技术
·基于μC/OS-II嵌入式系统的低功耗开发
·达芬奇数字媒体片上系统的架构和Linux启动过程
·用UML建模开发嵌入式软件
·如何选择合适的嵌入式软件开发平台
·嵌入式Linux系统中I2C总线设备的驱动设计
·DSP25年–让梦想照进现实
·使用图形化的开发环境——LabView开发嵌入式系统
·基于ADV202的嵌入式视频压缩系统软硬件设计
·用USB启动Windows XP Embedded
·嵌入式系统电源的设计与调试
·红旗嵌入式系统EOSnux占彩票终端半壁江山
·用现场可编程门阵列实现的频率计
·基于PNX1500的嵌入多媒体平台
·FPGA在语音存储与回放系统中的应用
·基于FPGA的32 Kbit/s CVSD语音编解码器的实现
·SI/C负极在实际应用中的失效原因分析
·基于嵌入式Web的电子交警系统
·嵌入式闪存使“智能”汽车接口应用得以实现
·嵌入式移动通信技术的研究与发展
·半导体材料研究与开发
·一种新的嵌入式TCP/IP协议栈的研究与实现
·在嵌入FPGA的IP核8051上实现TCP/IP的设计
·中国嵌入式软件产业链现状与趋势分析
·基于ARM的嵌入式多参数监护仪设计与实现
·选择合适的嵌入式系统软、硬件调试工具
·基于MPC860T的嵌入式通信服务器的设计与实现
·基于嵌入式Linux的 TFT LCD IP及驱动的设计


版权声明:
( 更多版权详述 | 隐私政策 )

1、凡本网注明“来源:单片机信息网”或“单片机论坛”的文字、图片和音视频作品,版权均属深圳市今科电子有限公司所有,任何媒体、网站或个人未经本网书面授权不得转载、链接、转贴或以其他方式使用;已经本网书面授权的,在使用时必须注明“来源:单片机信息网”或“单片机论坛””。
2、本网未注明“来源:单片机信息网”或“单片机论坛”的作品均为转载稿,本网转载稿件只为传递更多信息,并不意味着认同其观点或真实性。如其他媒体、网站或个人转载使用,必须保留本网注明的“稿件来源”,并自负法律责任。
3、对于单片机信息网通过单片机论坛发布的作品,本网受著作权人委托禁止任何媒体、网站或个人在未经书面授权的情况下转载使用。
4、为维护自身权益、尊重作者版权,单片机信息网特委托深圳市律师协会为本网站法律顾问。对于违反本声明的,单片机信息网律师将依法追究其责任;对于刊载作品涉及版权等问题的,请作者在两周内与网站管理或张朝阳律师联系。
责任编辑:今科电子
双击复制本文网址,发送给您QQ/MSN上的朋友:
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为
§最新评论
今科热门解密系列
·PIC芯片DSP系列单片机解密PIC芯
·Freescale单片机解密飞思卡尔芯
·飞思卡尔(Freescale)单片机解密/
·pic18f系列单片机解密
·三星(Samsung)系列单片机极速解
·飞林Feeling芯片系列MCU单片机/I
·MICROCHIP微芯(PIC)系列单片机/M
·单片机破解的常用方法及应对策略
·IC卡预付费电度表的安全及防范技
·单片机解密 单片机解密方法 单片
·PHILIPS系列单片机解密
·独家STC单片机解密
·我对红外遥控信号的解码思路
·51系列单片机解密(数分钟搞定)
·芯片解密业务流程介绍
·单片机解密后提供什么文件?
·单片机解密后为何要提供厂家的专
·芯片是如何被解密的?
·SST系列MCU单片机/IC/芯片解密
·INTEL系列单片机/IC/芯片解密
·ISSI系列MCU单片机IC破解芯片解
·ZILOG系列MCU单片机IC破解芯片解
·MOTOROLA系列MCU单片机IC破解芯
·LG(HYUNDAI系列MCU单片机/IC破
·MCPLD/EPLD系列MCU单片机IC破解
·新茂系列MCU单片机IC破解芯片解
·PHILIPS系列MCU单片机IC破解芯片
·MXIC系列MCU单片机IC破解芯片解
·(ATMEL)51系列MCU单片机IC破解芯
·华邦芯片系列MCU单片机/IC/芯片
·(MICROCHIP)微芯(PIC)系列MCU单
·CYPRESS系列MCU单片机IC破解芯芯
·Sinowealih系列MCU单片机IC破解
·Tenx系列MCU单片机IC破解芯片解
·松翰(SONIX)系列MCU单片机IC破解
·义隆(EMC)系列MCU单片机IC破解
·合泰(HOLTEK)系列MCU单片机IC破
·麦肯(MDT)系列mcu单片机IC破解芯
·今科单片机解密服务
·单片机程序开发
热点技术文章文献
·嵌入式系统的技术特点及前景展望
·加密存储芯片AT88SC1616的原理和
·编写适合自己需要的printf()函数
·基于ARM的嵌入式网络收音机的设
·嵌入式Linux系统中I2C总线设备的
·嵌入式Linux的GDB调试环境建立
·用USB启动Windows XP Embedded
·基于ARM7的指纹考勤机设计
·HC(S)08单片机的高效C语言编程
·基于Linux和S3C2410的嵌入式图象
·基于FPGA的32 Kbit/s CVSD语音编
·嵌入式实时Linux的技术研究
·X86嵌入式处理器开发
·基于WinCE的ARM视频监控系统
·如何制作嵌入式Linux文件系统
·模拟器开发以及嵌入式系统内核调
·基于DM642的嵌入式网络视频服务
·嵌入式系统的发展趋势:网络互联
·嵌入式数据库Berkeley DB 环境使
·嵌入式系统中USB主机控制器的设
·基于mClinux的嵌入式USB接口设计
·Keil C动态内存管理机制分析及改
·54M无线网络适配器在嵌入式系统
·使用虚拟机嵌入式Linux开发前的
·基于AVR单片机的嵌入式“瘦服务
·用MSP430实现的嵌入式因特网终端
·Java能否主演嵌入式应用开发?
·基于TinyXml的嵌入式Linux
·嵌入式芯片同质化的对策
·32位ARM嵌入式处理器的调试技术
今科推荐产品
·51系列单片机解密(数分钟搞定)
·今科单片机解密服务
·单片机程序开发
·小家电(厨卫电器)系列产品
·灯饰控制系列产品
·四键遥控器系列产品
·红外遥控器系列产品
相关技术文献资讯
·基于IXP2400的RPR综合业务接入系
·TMS320C61416 EMIF总线下双FPGA
·用FPGA实现数据远距离的高精度传
·混合仿真下DDS的改进研究与实现
·8位机嵌入式TCP通信速度的研究
·分析技术:让世界变得更安全、更
·基于模型和产品代码生成的汽车嵌
·Keil C动态内存管理机制分析及改
·嵌入式实时操作系统Nucleus PLUS
·嵌入式操作系统的新动向
·嵌入式操作系统uClinux和eCos的
·FPGA的DSP性能揭秘
·嵌入式Linux系统的动态电源管理
·基于μC/OS-II嵌入式系统的低功
·达芬奇数字媒体片上系统的架构和
·用UML建模开发嵌入式软件
·如何选择合适的嵌入式软件开发平
·嵌入式Linux系统中I2C总线设备的
·DSP25年–让梦想照进现实
·使用图形化的开发环境——LabVie
·基于ADV202的嵌入式视频压缩系统
·用USB启动Windows XP Embedded
·嵌入式系统电源的设计与调试
·红旗嵌入式系统EOSnux占彩票终端
·用现场可编程门阵列实现的频率计
论坛最新讨论资讯
芯片解密常见问题
· 什么是单片机?
· 单片机要如何加密?
· 单片机芯片是如何被解密的?
· 单片机解密后提供什么文件?
· 芯片解密为何用专用格式文档?
· 芯片解密是怎样的业务流程?
首页 - 隐私政策 - 版权申明 - 网站地图 - 产品中心 - IC解密中心 - 企业文化 - 代理加盟 - 公司简介 - 人才招聘 - 常见问题 - 我要投稿 - 联系我们 - 返回顶部
[单片机信息网] .© 2006-2009 版权所有,严禁非法复制与建立镜像.运营商:[今科电子] 公司地址:中国.深圳/上海 E-Mail:renbangent#126.com sales#techmcu.com(换#为@)
深圳公司 电话热线:+86 0755-82964200 82964201 82964700 传真:0755-82964432 支持手机:13684994966 业务QQ: 501995683 联系人:王小姐 张小姐(工程师) 罗先生(高工)
上海公司 电话热线:+86 021-63062380 15001885509   传真:+86 021-63062380-6   技术支持:15001885509 业务QQ:xxxxxxxx   联系人:郑小姐(业务) 陆工(工程师)
Optimized for 1024x768 to Firefox,Opera and MS-IE6 or higher,Template designed by: Berlin Lee.Web Support[FuAn Network] ICP Record No.:07053756 Webmaster