CN101281480A - 一种嵌入式系统中实现睡眠功能的方法 - Google Patents
一种嵌入式系统中实现睡眠功能的方法 Download PDFInfo
- Publication number
- CN101281480A CN101281480A CNA2008100997166A CN200810099716A CN101281480A CN 101281480 A CN101281480 A CN 101281480A CN A2008100997166 A CNA2008100997166 A CN A2008100997166A CN 200810099716 A CN200810099716 A CN 200810099716A CN 101281480 A CN101281480 A CN 101281480A
- 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.)
- Granted
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),所述被唤醒的待睡眠任务,从所述睡眠函数下一条语句开始执行,从而使这个待睡眠任务实现了睡眠一段时间的功能。
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 true CN101281480A (zh) | 2008-10-08 |
CN101281480B 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 (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981812A (zh) * | 2011-09-07 | 2013-03-20 | 深圳市金蝶中间件有限公司 | 网页脚本语言的执行方法及装置 |
CN102999384A (zh) * | 2011-09-12 | 2013-03-27 | 微软公司 | 在挂起状态和执行状态下管理进程 |
CN106383694A (zh) * | 2016-09-09 | 2017-02-08 | 合普新能源科技有限公司 | 一种虚拟定时器定时方法 |
CN106547517A (zh) * | 2016-11-03 | 2017-03-29 | 浪潮(苏州)金融技术服务有限公司 | 一种控制等待时间的方法及装置 |
US9671816B2 (en) | 2011-08-10 | 2017-06-06 | Microsoft Technology Licensing, Llc | Suspension and/or throttling of processes for connected standby |
CN107818516A (zh) * | 2012-06-06 | 2018-03-20 | 华为终端(东莞)有限公司 | 应用程序的管理方法及终端 |
US9952897B2 (en) | 2011-09-12 | 2018-04-24 | Microsoft Technology Licensing, Llc | Managing processes within suspend states and execution states |
CN112462926A (zh) * | 2020-12-09 | 2021-03-09 | 北京元心科技有限公司 | 移动终端中的电源管理方法、装置、电子设备及计算机存储介质 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110351223B (zh) * | 2018-04-02 | 2021-09-17 | 腾讯科技(深圳)有限公司 | 定时提醒方法、装置和计算机程序介质 |
Family Cites Families (3)
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操作系统线程实现和线程状态转换的方法 |
-
2008
- 2008-05-21 CN CN2008100997166A patent/CN101281480B/zh not_active Expired - Fee Related
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9671816B2 (en) | 2011-08-10 | 2017-06-06 | Microsoft Technology Licensing, Llc | Suspension and/or throttling of processes for connected standby |
CN102981812A (zh) * | 2011-09-07 | 2013-03-20 | 深圳市金蝶中间件有限公司 | 网页脚本语言的执行方法及装置 |
CN102999384A (zh) * | 2011-09-12 | 2013-03-27 | 微软公司 | 在挂起状态和执行状态下管理进程 |
US9588576B2 (en) | 2011-09-12 | 2017-03-07 | Microsoft Technology Licensing, Llc | Managing processes within suspend states and execution states |
CN102999384B (zh) * | 2011-09-12 | 2017-05-17 | 微软技术许可有限责任公司 | 在挂起状态和执行状态下管理进程 |
US9952897B2 (en) | 2011-09-12 | 2018-04-24 | Microsoft Technology Licensing, Llc | Managing processes within suspend states and execution states |
CN107818516A (zh) * | 2012-06-06 | 2018-03-20 | 华为终端(东莞)有限公司 | 应用程序的管理方法及终端 |
CN107818516B (zh) * | 2012-06-06 | 2021-10-19 | 华为终端有限公司 | 应用程序的管理方法及终端 |
CN106383694A (zh) * | 2016-09-09 | 2017-02-08 | 合普新能源科技有限公司 | 一种虚拟定时器定时方法 |
CN106547517A (zh) * | 2016-11-03 | 2017-03-29 | 浪潮(苏州)金融技术服务有限公司 | 一种控制等待时间的方法及装置 |
CN106547517B (zh) * | 2016-11-03 | 2018-11-20 | 浪潮金融信息技术有限公司 | 一种控制等待时间的方法及装置 |
CN112462926A (zh) * | 2020-12-09 | 2021-03-09 | 北京元心科技有限公司 | 移动终端中的电源管理方法、装置、电子设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN101281480B (zh) | 2010-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101281480B (zh) | 一种嵌入式系统中实现睡眠功能的方法 | |
CN104244381B (zh) | 唤醒控制方法、装置和终端设备 | |
RU2739290C1 (ru) | Способ управления многоадресным однонаправленным каналом и оконечное устройство | |
US9329671B2 (en) | Power-efficient inter processor communication scheduling | |
US10091307B2 (en) | Application management method and terminal | |
CN103765342B (zh) | 用于连接待机的进程的挂起和/或节制 | |
CN103888441A (zh) | 一种应用程序与协议栈之间的信息传输方法及处理装置 | |
WO2014117565A1 (zh) | 移动终端通知中心推送消息处理方法、装置及存储介质 | |
TW201011553A (en) | Universal serial bus (USB) remote wakeup | |
CN108566634A (zh) | 降低蓝牙音箱连续唤醒延时的方法、装置及蓝牙音箱 | |
JP6707124B2 (ja) | 音声呼中のシステムコールを処理する方法、システム、及び装置 | |
CN102323894B (zh) | 企业分布式应用间实现非阻塞方式相互调用的系统及方法 | |
WO2009046593A1 (fr) | Procédé de communication d'application pour un terminal | |
CN104899274A (zh) | 一种内存数据库高效远程访问方法 | |
CN108491062A (zh) | 计算设备中的功率节省技术 | |
CN105227784A (zh) | 一种移动终端的省电处理方法和移动终端 | |
CN110737526A (zh) | 一种基于Redis的分布式集群下的定时任务管理方法及装置 | |
CN112905357B (zh) | 一种数据读取方法、系统、电子设备及存储介质 | |
CN114697194A (zh) | 阻塞式事件通知方法及装置 | |
WO2024109271A1 (zh) | 一种模组的工作状态调整方法、装置、设备和介质 | |
US20100113084A1 (en) | Power saving in wireless networks | |
CN115756143B (zh) | 数据包处理的节能方法、装置、计算机设备和存储介质 | |
CN102004665B (zh) | 工作流系统中任务并发处理方法 | |
TW201041364A (en) | Mobile device, power saving method and computer executable medium | |
WO2012106853A1 (zh) | 带u盘功能的usb数据卡进入休眠状态的方法、系统及装置 |
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 |