CN1710543A - 一种用于嵌入式实时操作系统定时器的两级定时方法 - Google Patents
一种用于嵌入式实时操作系统定时器的两级定时方法 Download PDFInfo
- Publication number
- CN1710543A CN1710543A CN 200510050084 CN200510050084A CN1710543A CN 1710543 A CN1710543 A CN 1710543A CN 200510050084 CN200510050084 CN 200510050084 CN 200510050084 A CN200510050084 A CN 200510050084A CN 1710543 A CN1710543 A CN 1710543A
- Authority
- CN
- China
- Prior art keywords
- timer
- counter
- clock
- digit
- hardware
- 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
- 238000000034 method Methods 0.000 title claims abstract description 36
- 230000001960 triggered effect Effects 0.000 claims description 8
- 230000000737 periodic effect Effects 0.000 claims description 3
- 238000005096 rolling process Methods 0.000 claims description 2
- 230000015572 biosynthetic process Effects 0.000 description 11
- 238000005755 formation reaction Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 241000238876 Acari Species 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
Images
Landscapes
- Executing Machine-Instructions (AREA)
Abstract
本发明涉及一种用于嵌入式实时操作系统定时器的两级定时方法,首先将硬件的时钟中断与计数器相关联,每一个硬件时钟中断可以关联多于一个的计数器,在计数器中有可配置的计数单位,当计数器中的计数单位达到用户预设的值时,计数器将触发更高级的定时器,每一个计数器可以关联多于一个的定时器。因为实现方法为硬件时钟中断——计数器——定时器的两级结构,故称为两级定时器方法。本发明的优点主要有:1.每次硬件时钟中断仅触发计数器,而不触发所有定时器,提高了定时器效率;2.没有排序等冗余操作,节省了CPU资源;3.在硬件有多个时钟定时器的情况下,通过定义多个计数器,不同的计数器关联不同的硬件时钟中断的方法能充分利用硬件资源。
Description
技术领域
本发明涉及计算机领域的嵌入式实时操作系统,特别涉及一种用于嵌入式实时操作系统定时器的两级定时方法。
背景技术
实时系统是指如果逻辑和时序出现偏差会引起严重后果的系统,广泛应用于工厂生产过程控制、汽车业、办公自动化、计算机外设、通信设备、机器人、航空航天、民用消费等领域。
对于不太复杂的实时系统,一般可以设计成前后台式或者超循环式。对于大多数实时系统来说,因为有多任务处理和共享资源的要求,则必须有操作系统支持,该操作系统就称为实时操作系统。对于隐藏在系统内部的计算机系统成为嵌入式系统,而多数实时操作系统又是嵌入式的,则称为嵌入式实时操作系统。
嵌入式实时操作系统一般由任务调度管理、时间管理、任务同步和通信、内存管理等几部分组成。因为实时操作系统对时序的偏差依赖型很强,因此定时器作为操作系统时间管理的核心就显得很重要。
定时器的时钟源来源于硬件的时钟中断,时钟中断每隔一定时间产生,该时间间隔为最小计时时长,也就是定时器的计时精度,每个对硬件时钟中断处理称为计时周期。
目前定时器的计时方法主要有两种。一种方法是当每个计时周期到达时,先将所有定时器的计时数减1,然后判断结果是否为0,如果为0,则表示计时时间已到并进行到时处理,否则继续进行计时操作,这种方法称为简单计时法。
另一种方法是多队列计时法。首先根据系统定时器应用特点,将定时器划分成不同时长的队列,目的在于减少每次参与计数的定时器个数。在设定定时器时,将计时时长分解为毫秒位、个位、十位、百位、千位等几个部分,再把定时器插入到最大的不为0的位所在的队列,计时就从该队列开始,完成后逐一计以下位,直至计时到毫秒位队列,最后在该队列计时完成后,该定时器总计时完毕。
由于各队列除头定时器外计算的均是相对于上一个定时器的相对值,则计时的时候只需要对队列头部定时器时间做减运算,便可确定是否有定时器在本次计时到期。
纵上所述,简单计时法固然方法简单,实现容易,但当定时器数目满载(如20000个)时,则每次计数需要所有定时器做减法,即做20万次减法(假设每一个定时器的计时周期100毫秒),而嵌入式系统的CPU资源相当有限,定时器本身的任务不能占太多的资源,所以如果采用这种方法,就会占用较多的CPU资源。
而多任务队列计时法相对简单计时法更高效,在每次计时周期到来时,只需做与队列数相同的判断和减法,以及可能的报时操作,就能基本满足嵌入式系统的定时需求。但同时该方法也存在很多冗余操作,如空负载时检查所有队列,满负载时要对所有队列做2倍于检查的加减法操作,真正有效的操作只有占其中很少部分的报时和插入操作;而且在队列处理中存在耗费计算资源的排序操作。
发明内容
本发明要解决上述技术所存在的缺陷,提供一种用于嵌入式实时操作系统定时器的两级定时方法,采用两级定时器机制(计数器和定时器),主要解决了简单定时器的低效率问题和多队列计时法中存在的冗余操作和排序操作的缺点,提高了定时效率。
本发明解决其技术问题所采用的技术方案。这种用于嵌入式实时操作系统定时器的两级定时方法,不同于一般的硬件时钟中断直接与定时器相关联的一级定时器方法,首先将硬件的时钟中断与计数器(counter)相关联,每一个硬件时钟中断可以关联多于一个的计数器,在计数器中有可配置的计数单位,当计数器中的计数单位达到用户预设的值时,计数器将触发更高级的定时器(Alarm),每一个计数器可以关联多于一个的定时器。因为实现方法为硬件时钟中断——计数器——定时器的两级结构,故称为两级定时器方法。
本发明的优点主要有:
1、每次硬件时钟中断仅触发计数器,而不触发所有定时器,提高了定时器效率;
2、没有排序等冗余操作,节省了CPU资源;
3、在硬件有多个时钟定时器的情况下,通过定义多个计数器,不同的计数器关联不同的硬件时钟中断的方法能充分利用硬件资源。
附图说明
图1是本发明两级定时器结构图;
图2是本发明GetAlarm的流程图;
图3是本发明GetAlarmBase的流程图;
图4是本发明SetRelAlarm的流程图;
图5是本发明SetAbsAlarm的流程图;
图6是本发明CancelAlarm的流程图;
具体实施方式
下面结合附图和实例对本发明作进一步介绍:这种用于嵌入式实时操作系统定时器的两级定时方法,主要步骤如下:
1)、用户定义每一个计数器计数单位Ci(O<i<K,K表示系统中计数器个数);
2)、用户定义与计数器相关联的每一个定时器在Nij(表示系统中第i个计数器所关联的第j个定时器)个计数单位后触发,也就是说它将在Ci×Nij个硬件时钟中断后触发;
3)、系统启动后,当一个硬件时钟中断到达,系统将第一个计数器的系统时钟个数加一,如果小于计数单位Ci,则将同样的过程应用在下一个计数器上,直到最后一个计数器;
4)、如果等于计数单位Ci,则将与之相关联的第一个定时器的计数单位加一,如果小于Nij则将同样的过程应用在下一个定时器上,直到最后一个定时器;
5)、如果等于Nij,则该定时器被触发,系统处理相应的周期性任务等等。
一、本发明主要需要的函数及其功能:(流程图如图2-图6所示)
1、GetAlarm:取得由参数指定的定时器的现在时刻到触发时间的相对ticks值;
2、GetAlarmBase:取得由参数指定的定时器的计数器相关信息;
3、SetRelAlarm:设置定时器,指定定时器由现在开始后过若干tick(相对时间)之后被触发;
4、SetAbsAlarm:设置定时器,指定定时器由系统启动运行后过若干tick后(绝对时间)被触发;
5、CancelAlarm:取消定时器。
二、Data Description数据描述:
系统中定时器个数的宏定义:ALARMNUM
定时器数组:
OS_EXT AlarmCB OSAlarms[ALARMNUM];
系统中计数器个数的宏定义:CTRMNUM
计数器数组:
OS_EXT CtrCB* OS_CTR[CTRNUM];
三、定时器相关结构:
1.定时器的控制结构AlarmOSCB中包括以下成员:
1,状态位,标志该定时器是否启用;
2,关联的counter号;
3,关联的任务;
4,关联的事件;
5,alarmCallback函数的入口;
6,定时器下一个触发点的tick值;
7,定时器的周期(对于循环定时器);
8,同一个counter上面的定时器链表指针
9,其他
2.Alarmbase结构包括以下成员:
1,最大允许的tick值
2,几个tick后触发一个counter值ticksperbase
3,最小的循环tick数(对于循环定时器)
4,其他
3.Counter结构包括以下成员:
1,当前tick值(小于等于ticksperbase,达到ticksperbase时counter加一)
2,当前counter值(ticksperbase的倍数)
3,Counter的配置信息
4,关联的定时器链表头指针
下面举例说明本方法定时器的使用方法:
假设系统的硬件时钟周期是10毫秒,也就是每10毫秒触发一个硬件时钟中断。系统中有2个周期性任务A和B,分别对应两个定时器a和b他们各自的触发周期分别是200毫秒和300毫秒。为此可以设置计数器的计数单位为10,也就是每10个硬件时钟中断(100毫秒)触发一个计数器。而每2个计数器中断(200毫秒)后a定时器被触发A任务被激活,每3个计数器中断(300毫秒)后b定时器被触发而B任务被激活。
Claims (2)
1、一种用于嵌入式实时操作系统定时器的两级定时方法,其特征是:首先将硬件的时钟中断与计数器相关联,每一个硬件时钟中断关联一个或多于一个的计数器,在计数器中有可配置的计数单位,当计数器中的计数单位达到用户预设的值时,计数器将触发更高级的定时器,每一个计数器关联一个或多于一个的定时器。
2、根据权利要求1所述的用于嵌入式实时操作系统定时器的两级定时方法,其特征在于:实现的主要步骤:
1)、用户定义每一个计数器计数单位Ci,其中0<=i<K,K表示系统中计数器个数;
2)、用户定义与计数器相关联的每一个定时器在Nij(其中Nij表示系统中第i个计数器所关联的第j个定时器)个计数单位后触发,也就是说它将在Ci×Nij个硬件时钟中断后触发;
3)、系统启动后,当一个硬件时钟中断到达,系统将第一个计数器的系统时钟个数加一,如果小于计数单位Ci,则将同样的过程应用在下一个计数器上,直到最后一个计数器;
4)、如果等于计数单位Ci,则将与之相关联的第一个定时器的计数单位加一,如果小于Nij,则将同样的过程应用在下一个定时器上,直到最后一个定时器;
5)、如果等于Nij,则该定时器被触发,系统处理相应的周期性任务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100500840A CN100363897C (zh) | 2005-06-13 | 2005-06-13 | 一种用于嵌入式实时操作系统定时器的两级定时方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100500840A CN100363897C (zh) | 2005-06-13 | 2005-06-13 | 一种用于嵌入式实时操作系统定时器的两级定时方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1710543A true CN1710543A (zh) | 2005-12-21 |
CN100363897C CN100363897C (zh) | 2008-01-23 |
Family
ID=35706789
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100500840A Expired - Fee Related CN100363897C (zh) | 2005-06-13 | 2005-06-13 | 一种用于嵌入式实时操作系统定时器的两级定时方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100363897C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100395702C (zh) * | 2006-09-30 | 2008-06-18 | 华为技术有限公司 | 一种定时器实现方法 |
CN104834347A (zh) * | 2015-04-29 | 2015-08-12 | 杭州东信捷峻科技有限公司 | 有利于低功耗的无累计误差的动态时长定时器实现方法 |
CN105183930A (zh) * | 2015-06-16 | 2015-12-23 | 北京天诚盛业科技有限公司 | 设置和使用硬件定时器的方法以及装置 |
CN106020332A (zh) * | 2016-05-31 | 2016-10-12 | 乐视控股(北京)有限公司 | 计时处理方法及系统 |
CN107659305A (zh) * | 2017-10-19 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种基于cpld的时钟计数方法、装置及介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4503548A (en) * | 1982-04-05 | 1985-03-05 | Texas Instruments Incorporated | Timer with fast counter interrupt |
US5377346A (en) * | 1990-06-06 | 1994-12-27 | Nec Electronics Inc. | Methods and apparatus for pulse-width modulation that use a counter and a modulus device |
-
2005
- 2005-06-13 CN CNB2005100500840A patent/CN100363897C/zh not_active Expired - Fee Related
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100395702C (zh) * | 2006-09-30 | 2008-06-18 | 华为技术有限公司 | 一种定时器实现方法 |
CN104834347A (zh) * | 2015-04-29 | 2015-08-12 | 杭州东信捷峻科技有限公司 | 有利于低功耗的无累计误差的动态时长定时器实现方法 |
CN104834347B (zh) * | 2015-04-29 | 2017-08-25 | 杭州东信捷峻科技有限公司 | 有利于低功耗的无累计误差的动态时长定时器实现方法 |
CN105183930A (zh) * | 2015-06-16 | 2015-12-23 | 北京天诚盛业科技有限公司 | 设置和使用硬件定时器的方法以及装置 |
CN106020332A (zh) * | 2016-05-31 | 2016-10-12 | 乐视控股(北京)有限公司 | 计时处理方法及系统 |
CN107659305A (zh) * | 2017-10-19 | 2018-02-02 | 郑州云海信息技术有限公司 | 一种基于cpld的时钟计数方法、装置及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100363897C (zh) | 2008-01-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103559045B (zh) | 一种硬件实时操作系统 | |
Prakash et al. | A nonblocking algorithm for shared queues using compare-and-swap | |
CN1275423C (zh) | 嵌入式实时操作系统中定时器的计时方法 | |
US9477521B2 (en) | Method and system for scheduling repetitive tasks in O(1) | |
US9411641B2 (en) | Method and apparatus implemented in processors for real-time scheduling and task organization based on response time order of magnitude | |
CN1116639C (zh) | 带任务切换的零开销计算机中断 | |
CN106293919A (zh) | 一种时间触发的嵌入式任务调度装置与方法 | |
US20080098395A1 (en) | System and method of expediting certain jobs in a computer processing system | |
CN1304949C (zh) | 一种实时多任务操作系统的定时器调度方法 | |
WO1992022030A1 (en) | Interrupt driven, separately clocked, fault tolerant processor synchronization | |
EP1501013A3 (en) | Method and system for scheduling real-time periodic tasks | |
CN1577282A (zh) | 使用监视-存储器等待的被排序的锁定 | |
CN1710543A (zh) | 一种用于嵌入式实时操作系统定时器的两级定时方法 | |
US20100050178A1 (en) | Method and apparatus to implement software to hardware thread priority | |
CN108536531B (zh) | 一种基于单片机的任务调度和电源管理方法 | |
CN104375893A (zh) | 一种基于两级操作系统架构的分区调度方法 | |
JP2009025939A (ja) | タスク制御方法及び半導体集積回路 | |
CN102495722A (zh) | 多核分片xml并行解析方法 | |
CN103197971B (zh) | Windows操作系统Pentium Ⅳ架构下高精度低CPU占用率定时器的实现方法 | |
CN1877535A (zh) | 嵌入式实时操作系统高效遍历的定时方法 | |
CN102929714A (zh) | 基于uC/OS-II的硬件任务管理器 | |
CN1825288A (zh) | 嵌入式sram操作系统进程多队列调度的实现方法 | |
CN1851651A (zh) | 嵌入式sram操作系统进程优先权调度的实现方法 | |
CN108009121B (zh) | 面向应用的动态多核配置方法 | |
CN104360913B (zh) | 用于计算机操作系统的监控模块 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080123 Termination date: 20170613 |