[发明专利]一种嵌入式系统中实现睡眠功能的方法有效
申请号: | 200810099716.6 | 申请日: | 2008-05-21 |
公开(公告)号: | CN101281480A | 公开(公告)日: | 2008-10-08 |
发明(设计)人: | 刘亮 | 申请(专利权)人: | 中兴通讯股份有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48;G06F1/32 |
代理公司: | 北京安信方达知识产权代理有限公司 | 代理人: | 龙洪;霍育栋 |
地址: | 518057广东省深圳市南山*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 嵌入式 系统 实现 睡眠 功能 方法 | ||
技术领域
本发明涉及嵌入式系统中利用现有条件进行功能的实现方法,更具体的说,涉及一种嵌入式系统中实现睡眠功能的方法。
背景技术
目前很多嵌入式设备,比如手机等终端上,使用的操作系统很精干,很小巧,同时也很简单。有的嵌入式操作系统,整个核心的映像才几十K或几百K,这么小的操作系统,肯定不是万能的,它必然欠缺很多功能。比如,其最大的缺点,就是只有操作系统核心,却没有应用框架和UI(用户界面)框架。因此如图1所示,很多嵌入式系统方案里,除了有一个操作系统核心外,还要在这个核心上发展出一个应用框架和UI框架。同时,为了适应这个应用框架和UI框架,还要对操作系统核心做适当的修改,裁减。系统经过这样的修改后,对使用应用框架和UI框架来开发应用程序可能会很方便,但是,对一些协议栈等的移植,可能会产生不必要的麻烦。
比如:有这样一种系统,从应用框架看,系统提供了Timer(定时器)、Task(任务)、Task间有消息机制,也有Sleep(睡眠)机制;从操作系统来看,系统提供了Task另一种完全不同的消息机制,其中包含Wait(等待)机制,Resume(唤醒)机制,但是没有Sleep机制(有可能是操作系统本身就不提供此机制,也有可能是被裁剪掉了)。这给一些协议栈的移植带来了麻烦,如一些协议栈经常需要Sleep功能。我们这里说的Sleep,指一个Task睡眠一段时间,在这段时间,这个Task应该让出CPU的执行权,不占用CPU的执行时间。虽然应用框架有这种机制,但是,应用框架基于其特定的消息机制实现这个功能,这个消息机制不可能也不适合集成到协议栈内。
发明内容
本发明要解决的技术问题是提供一种嵌入式系统中实现睡眠功能的方法,能够使用系统原有的资源,实现Sleep机制,解决了协议栈移植中的冲突。
为了解决上述问题,本发明提供了一种嵌入式系统中实现睡眠功能的方法,包括以下内容:
(1)为协议栈设置一个定时器任务;
(2)待睡眠任务调用睡眠函数,所述睡眠函数将带有所述待睡眠任务信息的消息发给所述定时器任务,并调用操作系统的等待函数将所述待睡眠任务挂起;
(3)所述定时器任务根据收到的所述消息,启动定时器,并指定所述定时器到时后的响应函数,同时把所述定时器函数和待睡眠任务函数建立配对关系;
(4)所述定时器到时,所述指定的响应函数被调用,根据所述配对关系调用操作系统的唤醒函数,唤醒被挂起的所述待睡眠任务。
进一步地,步骤(2)进一步包括:所述待睡眠任务携带自己的信息调用睡眠函数,该睡眠函数将带有所述待睡眠任务信息的消息发送给定时器任务;所述睡眠函数调用操作系统的等待函数,将待睡眠任务挂起,让出中央处理器。
进一步地,所述待睡眠任务信息包括带睡眠任务的身份标识号码和需要睡眠的时间。
进一步地,步骤(3)进一步包括,定时器任务收到睡眠函数发来的消息后,记录所述消息中携带的所述待睡眠任务的身份标识号码和需要睡眠的时间,然后根据所述需要睡眠的时间,启动定时器(这个定时器使用应用框架已有的定时器机制);所述定时器任务并指定所述定时器到时后的响应函数;同时,把所述定时器和所述待睡眠任务建立配对关系。
进一步地,步骤(3)中,所述定时器和所述待睡眠任务建立的配对关系的目的在于,当所述定时器到时后,根据所述配对关系找到所述待睡眠任务。
进一步地,步骤(4)之后包括步骤(5),所述被唤醒的待睡眠任务,从所述睡眠函数下一条语句开始执行,从而使这个待睡眠任务实现了睡眠一段时间的功能。
本发明的有益效果:
采用本发明所述方法,能够利用嵌入式系统中原有的条件,实现Sleep功能,避免了在协议栈的移植过程中产生不必要的麻烦,同时减轻了CPU的负荷,大大减小了CPU的占有率。
附图说明
图1为本发明所述嵌入式系统的框架结构示意图;
图2为本发明所述方法中Sleep函数的流程图;
图3为本发明所述方法实施例中Sleep功能实现的时序图。
具体实施方式
下面结合附图对本发明的实施例作进一步的详细描述:
如图3所示,本发明提供的一种嵌入式系统中实现睡眠功能的方法,包括以下内容:
为协议栈专门增加一个特殊的Task(任务),称为TimerTask(定时器任务);
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中兴通讯股份有限公司,未经中兴通讯股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810099716.6/2.html,转载请声明来源钻瓜专利网。