CN101281480B - 一种嵌入式系统中实现睡眠功能的方法 - Google Patents

一种嵌入式系统中实现睡眠功能的方法 Download PDF

Info

Publication number
CN101281480B
CN101281480B CN2008100997166A CN200810099716A CN101281480B CN 101281480 B CN101281480 B CN 101281480B CN 2008100997166 A CN2008100997166 A CN 2008100997166A CN 200810099716 A CN200810099716 A CN 200810099716A CN 101281480 B CN101281480 B CN 101281480B
Authority
CN
China
Prior art keywords
sleep
task
timer
function
waiting
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2008100997166A
Other languages
English (en)
Other versions
CN101281480A (zh
Inventor
刘亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Priority to CN2008100997166A priority Critical patent/CN101281480B/zh
Publication of CN101281480A publication Critical patent/CN101281480A/zh
Application granted granted Critical
Publication of CN101281480B publication Critical patent/CN101281480B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Telephone Function (AREA)

Abstract

本发明公开了一种嵌入式系统中实现睡眠功能的方法,为协议栈设置一个定时器任务;待睡眠任务调用睡眠函数,睡眠函数将带有待睡眠任务信息的消息发给定时器任务,并调用操作系统的等待函数将待睡眠任务挂起;定时器任务根据收到的所述消息,启动定时器,并指定定时器到时后的响应函数,同时把定时器函数和待睡眠任务函数建立配对关系;定时器到时,指定的响应函数被调用,根据配对关系调用操作系统的唤醒函数,唤醒被挂起的所述待睡眠任务。本发明所述方法,能够使用系统原有的资源,实现Sleep机制,解决了协议栈移植中的冲突。

Description

一种嵌入式系统中实现睡眠功能的方法
技术领域
本发明涉及嵌入式系统中利用现有条件进行功能的实现方法,更具体的说,涉及一种嵌入式系统中实现睡眠功能的方法。
背景技术
目前很多嵌入式设备,比如手机等终端上,使用的操作系统很精干,很小巧,同时也很简单。有的嵌入式操作系统,整个核心的映像才几十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(定时器任务);
这个Task使用应用框架的消息机制,接收和发送应用框架的消息,这里主要是Timer(定时器)消息,而协议栈的Task,不是基于应用框架的消息机制建立的,它不能接收应用框架的消息,但是可以手工构建这样的消息发送出去;
步骤S101:为协议栈实现特殊的Sleep(睡眠)函数;
如图2所示,为Sleep函数的流程图,其中:
步骤S11:某个待睡眠Task携带自己的信息调用Sleep函数,所述Sleep函数将带有Task信息的消息发送给TimerTask;
步骤S12:所述Sleep函数调用操作系统的Wait函数,将待睡眠Task挂起,让出CPU(中央处理存储器)。
所述Task信息(待睡眠任务信息)包括:Task的ID号(身份标识号码),需要睡眠的时间等,通常情况下携带需要睡眠的时间。
步骤S102:TimerTask收到Sleep函数发来的消息后,记录消息中携带的Task的ID号和需要睡眠的时间,然后根据所述需要睡眠的时间,启动一个定时器Timer(这个Timer使用应用框架已有的Timer机制);TimerTask并指定Timer到时后的响应函数;同时,把这个Timer和所述待睡眠Task建立配对关系。
步骤S103:当Timer到时,TimerTask指定的响应函数被调用;
步骤S104:这个响应函数,根据TimerTask建立的所述配对关系,找到此Timer配对的Task,调用操作系统的Task唤醒函数Resume,唤醒被挂起的Task。
当步骤S104执行完毕再执行步骤S105:被唤醒的Task,从Sleep函数下一条语句开始执行,从而使这个Task实现了睡眠一段时间的功能。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化,本发明的保护范围以权利要求为准。

Claims (6)

1.一种嵌入式系统中实现睡眠功能的方法,其特征在于,包括以下步骤:
(1)为协议栈设置一个定时器任务;
(2)待睡眠任务调用睡眠函数,所述睡眠函数将带有所述待睡眠任务信息的消息发给所述定时器任务,并调用操作系统的等待函数将所述待睡眠任务挂起;
(3)所述定时器任务根据收到的所述消息,启动定时器,并指定所述定时器到时后的响应函数,同时把所述定时器函数和待睡眠任务函数建立配对关系;
(4)所述定时器到时,所述指定的响应函数被调用,根据所述配对关系调用操作系统的唤醒函数,唤醒被挂起的所述待睡眠任务。
2.如权利要求1所述的方法,其特征在于:步骤(2)进一步包括,
所述待睡眠任务携带自己的信息调用睡眠函数,该睡眠函数将带有所述待睡眠任务信息的消息发送给定时器任务;所述睡眠函数调用操作系统的等待函数,将待睡眠任务挂起,让出中央处理存储器。
3.如权利要求1所述的方法,其特征在于:所述待睡眠任务信息包括待睡眠任务的身份标识号码和需要睡眠的时间。
4.如权利要求1所述的方法,其特征在于:步骤(3)进一步包括,
定时器任务收到睡眠函数发来的消息后,记录所述消息中携带的所述待睡眠任务的身份标识号码和需要睡眠的时间,然后根据所述需要睡眠的时间,启动定时器,所述定时器使用应用框架已有的定时器机制;所述定时器任务指定所述定时器到时后的响应函数;同时,把所述定时器和所述待睡眠任务建立配对关系。
5.如权利要求1所述的方法,其特征在于:步骤(3)中,所述定时器和所述待睡眠任务建立的配对关系的目的在于,当所述定时器到时后,根据所述配对关系找到所述待睡眠任务。
6.如权利要求1所述的方法,其特征在于:步骤(4)之后包括步骤(5),所述被唤醒的待睡眠任务,从所述睡眠函数下一条语句开始执行,从而使这个待睡眠任务实现了睡眠一段时间的功能。
CN2008100997166A 2008-05-21 2008-05-21 一种嵌入式系统中实现睡眠功能的方法 Expired - Fee Related CN101281480B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2008100997166A CN101281480B (zh) 2008-05-21 2008-05-21 一种嵌入式系统中实现睡眠功能的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2008100997166A CN101281480B (zh) 2008-05-21 2008-05-21 一种嵌入式系统中实现睡眠功能的方法

Publications (2)

Publication Number Publication Date
CN101281480A CN101281480A (zh) 2008-10-08
CN101281480B true CN101281480B (zh) 2010-06-23

Family

ID=40013965

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008100997166A Expired - Fee Related CN101281480B (zh) 2008-05-21 2008-05-21 一种嵌入式系统中实现睡眠功能的方法

Country Status (1)

Country Link
CN (1) CN101281480B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110351223A (zh) * 2018-04-02 2019-10-18 腾讯科技(深圳)有限公司 定时提醒方法、装置和计算机程序介质

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8788863B2 (en) 2011-08-10 2014-07-22 Microsoft Corporation System and method for restoring and/or continuing execution functionality to various processes based on predefined power classifications while transitioning a computing environment from connected standby state to execution state
CN102981812A (zh) * 2011-09-07 2013-03-20 深圳市金蝶中间件有限公司 网页脚本语言的执行方法及装置
US9588576B2 (en) * 2011-09-12 2017-03-07 Microsoft Technology Licensing, Llc Managing processes within suspend states and execution states
US9952897B2 (en) 2011-09-12 2018-04-24 Microsoft Technology Licensing, Llc Managing processes within suspend states and execution states
CN103635881B (zh) * 2012-06-06 2017-11-24 华为终端(东莞)有限公司 应用程序的管理方法及终端
CN106383694A (zh) * 2016-09-09 2017-02-08 合普新能源科技有限公司 一种虚拟定时器定时方法
CN106547517B (zh) * 2016-11-03 2018-11-20 浪潮金融信息技术有限公司 一种控制等待时间的方法及装置
CN112462926B (zh) * 2020-12-09 2021-07-30 北京元心科技有限公司 移动终端中的电源管理方法、装置、电子设备及计算机存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1516001A (zh) * 2003-01-08 2004-07-28 上海海尔集成电路有限公司 一种新型risc流水线微控制器构架及其操作方法
CN1801101A (zh) * 2006-01-17 2006-07-12 浙江大学 Java操作系统中线程的实现和线程状态切换的方法
CN1825286A (zh) * 2006-03-31 2006-08-30 浙江大学 嵌入式sram操作系统线程实现和线程状态转换的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1516001A (zh) * 2003-01-08 2004-07-28 上海海尔集成电路有限公司 一种新型risc流水线微控制器构架及其操作方法
CN1801101A (zh) * 2006-01-17 2006-07-12 浙江大学 Java操作系统中线程的实现和线程状态切换的方法
CN1825286A (zh) * 2006-03-31 2006-08-30 浙江大学 嵌入式sram操作系统线程实现和线程状态转换的方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110351223A (zh) * 2018-04-02 2019-10-18 腾讯科技(深圳)有限公司 定时提醒方法、装置和计算机程序介质
CN110351223B (zh) * 2018-04-02 2021-09-17 腾讯科技(深圳)有限公司 定时提醒方法、装置和计算机程序介质

Also Published As

Publication number Publication date
CN101281480A (zh) 2008-10-08

Similar Documents

Publication Publication Date Title
CN101281480B (zh) 一种嵌入式系统中实现睡眠功能的方法
US10091307B2 (en) Application management method and terminal
EP2966913B1 (en) Wake-up control method, device and terminal equipment
CN103051468B (zh) 网络接口设备的操作系统管理
CN103765342B (zh) 用于连接待机的进程的挂起和/或节制
CN103888441A (zh) 一种应用程序与协议栈之间的信息传输方法及处理装置
US20120159218A1 (en) Efficient power management and optimized event notification in multi-processor computing devices
TW201011553A (en) Universal serial bus (USB) remote wakeup
JP6707124B2 (ja) 音声呼中のシステムコールを処理する方法、システム、及び装置
WO2014005535A1 (zh) 物联网消息处理方法、装置及系统
CN108566634A (zh) 降低蓝牙音箱连续唤醒延时的方法、装置及蓝牙音箱
WO2013007087A1 (zh) 一种异步操作方法及异步操作管理装置
WO2009046593A1 (fr) Procédé de communication d'application pour un terminal
CN102323894A (zh) 企业分布式应用间实现非阻塞方式相互调用的系统及方法
CN105446916B (zh) Usb总线状态切换方法及装置
CN102014021A (zh) 一种控制数据链路通断的方法及装置
CN104899274A (zh) 一种内存数据库高效远程访问方法
WO2015172283A1 (zh) 一种降低功耗的方法、装置及移动终端
WO2013189292A1 (zh) 基于芯片间高速接口hsic的唤醒、热插拔方法和设备
CN110737526A (zh) 一种基于Redis的分布式集群下的定时任务管理方法及装置
CN110401939B (zh) 一种低功耗蓝牙控制器链路层装置
CN110022596A (zh) 一种终端待机状态的配置方法、装置及管理平台
US20100113084A1 (en) Power saving in wireless networks
CN115756143B (zh) 数据包处理的节能方法、装置、计算机设备和存储介质
TW201041364A (en) Mobile device, power saving method and computer executable medium

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100623

Termination date: 20170521

CF01 Termination of patent right due to non-payment of annual fee