[发明专利]一种嵌入式系统的多任务实时操作方法在审
申请号: | 201710814934.2 | 申请日: | 2017-09-12 |
公开(公告)号: | CN107608775A | 公开(公告)日: | 2018-01-19 |
发明(设计)人: | 马宏坤;赵渭忠;何雪 | 申请(专利权)人: | 南京中探海洋物联网有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F9/50 |
代理公司: | 南京苏创专利代理事务所(普通合伙)32273 | 代理人: | 沈振涛 |
地址: | 210000 江苏省南京市栖霞区*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 系统 任务 实时 操作方法 | ||
技术领域
本发明属于计算机领域,特别涉及一种嵌入式系统的多任务实时操作方法。
背景技术
虽然现在电子产品发展很快,很多CPU都已经是32位架构了。但是,由于51系列单片机(MCU)具有悠久的历史、庞大的工程师群体、成熟的开发环境、丰富的资源积累、低廉的价格、稳定的性能等因素,还是有很多的产品开发是在基于51系列MCU上进行的。
现在对于新产品推出的速度要求很高,项目开发往往都是模块化设计。采用稳定的操作系统和库文件(或经过检验的成熟程序文件)结合,加上产品自己的个性要求,就可以很快实现产品系统软件的设计。
针对这种情况,近几年涌现出许多基于51内核的实时操作系统,比如:μC/OS-II、KeilC自带的RTXFULL、RTXTiny等。但是,这些系统都是基于优先级的抢占式多任务实时操作系统。我们知道51系列MCU内存堆栈空间很小,最多只能到达256字节,所以,这些基于优先级的抢占式多任务实时操作系统运行在256字节内存的系统上,必然会频繁地搬移内存。为了实现并凸显实时性,一般思路肯定都是采用抢占式,就是说一个高优先级的任务来了,不管低优先级的任务处于什么状态,就立即把其挂起来(即需要在任何情况下保存低优先级任务当前所占所有堆栈),执行高优先级任务的代码。殊不知,在51系列MCU这种内存很小的系统中,要把一个任务(可能正在占用很多堆栈)随时挂起、切换,务必要首先从堆栈中整体搬移当前任务的内存现场到外部存储器,然后再从外部存储器整体搬移上次保存的即将要执行任务的内存现场到堆栈,为即将要执行任务恢复执行环境。由此可见,这么一来反而造成任务相应的普遍延迟。
发明内容
技术问题:为了解决现有技术的缺陷,本发明提供了一种嵌入式系统的多任务实时操作方法。
技术方案:本发明提供的一种嵌入式系统的多任务实时操作方法,包括:
(1)优先级设置:将所有任务的优先级设置为同一级别,不允许抢占;任何任务在完成后,立即主动释放出CPU和堆栈空间,进入休眠状态,保证占用最少堆栈,留有最大空余堆栈空间,准备好随时都可以把尽可能多的堆栈资源交给需要执行的任务;
(2)任务切换:任务占用堆栈在内存中按序排列,任何任务需要执行时,将该任务附近的其他任务搬移至空余堆栈空间内,使新的空余堆栈空间与待执行任务的堆栈空间连成一片,使得该任务能够使用所有空余堆栈,并执行任务;任务执行完后,立即主动释放出CPU和堆栈空间,进入休眠状态。
步骤(1)中,任务在主流程中主动释放后仅占用2字节堆栈空间,任务主流程的一级子程序释放后占用4字节,每加深一次调用层级释放,就多占用2个字节的堆栈;设计规则要求任务尽可能地在主流程中主动释放资源,从而保证在一个多至16个线程的系统都能直接运行在内部256字节(典型的51系列CPU环境)的堆栈中。
步骤(1)中,任务进入休眠时,设置为:(1)休眠一定时间再次激活;或者(2)等待唤醒信号再次激活;或者(3)休眠一定时间或等待唤醒信号满足其一再次激活;或者(4)休眠时间为0,仅仅把CPU的资源交出去给其他所有待执行的任务依次执行一遍再取回CPU资源执行,若没有其他任何任务需要执行则立即拿回CPU使用权继续执行。
步骤(1)中,需要占用较多CPU资源的任务或者重要任务,分配较少的休眠时间或者分配0休眠时间。
步骤(2)中,同时有几个任务都需要执行时,按既定顺序依次切换运行。
步骤(2)中,在中断中可以依据需要主动唤醒特定任务,而不一定需要等待该任务的睡眠时间到。
有益效果:本发明提供的嵌入式系统的多任务实时操作方法采取各个任务自己主动释放资源的思路,设计规则要求任务尽量在主流程中主动释放资源,这样一个休眠任务就只要占用2个字节的堆栈,所以整个系统所有任务的堆栈就能够安排在256个字节(典型的51系列CPU环境)的内存中,切换时只要依据情况把任务需要保护的有限的几个堆栈空间往上或往下搬移,让空余堆栈和将要执行的任务的堆栈连成一片即可,大大提高了任务切换时的响应速度。
附图说明
图1为本发明嵌入式系统的多任务实时操作方法的流程图。
图2为大内存系统中基于优先级的抢占式多任务实时操作方法的流程图。
图3为51系列MCU中基于优先级的抢占式多任务实时操作方法的流程图。
具体实施方式
下面对本发明嵌入式系统的多任务实时操作方法作出进一步说明。
实施例
嵌入式系统的多任务实时操作方法:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京中探海洋物联网有限公司,未经南京中探海洋物联网有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710814934.2/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种任务调度方法、装置、设备及存储介质
- 下一篇:面部信息预览方法及相关产品