|
|
| | -文章搜索 - 最新文章 - | |
μC/OS-II内核扩展接口的低功耗模式 |
| 发布时间:2005年9月28日 点击次数:535 |
| 来源:单片机与嵌入式系统应用 作者:清华大学 陈萌萌 |
摘要 在嵌入式实时操作系统中,如何在操作系统层面尽量降低系统功耗已成为一个值得研究的问题。本文以嵌入式实时操作系统μC/OSII为例,以飞思卡尔8位单片机HCS08GT60作为硬件平台,详细讨论如何实现一个低功耗的实时操作系统,如何利用μC/OSII内核扩展接口省电;详细分析如何选择一种合适的单片机低功耗模式,说明利用μC/OSII内核扩展接口实现一个低功耗系统的可行性。 关键词 μC/OS-II 内核扩展接口 HCS08GT60 低功耗模式 引言 随着消费类电子产品的功能日益复杂,在其中移植或固化实时操作系统已不是新鲜事了,如手机、PDA等等。对于该类产品,低功耗特性往往占有举足轻重的地位。如何在操作系统层面上,尽量降低系统功耗,是一个值得探讨的问题。一般来说,嵌入式CPU都具有低功耗的工作模式,如果在任务调度的空闲时间,使CPU进入这种模式,就能大幅度降低系统功耗。 本文以嵌入式实时操作系统μC/OS-II在飞思卡尔8位单片机HCS08GT60上的移植为例,详细讨论如何利用μC/OS-II给出的内核扩展接口,实现一个低功耗的嵌入式实时系统;进一步分析如何选择一种合适的低功耗模式。 μC/OS-II是一种可移植、可固化、可裁剪的可剥夺型多任务内核。由于其源码公开、注释详尽、内核设计概念清晰,已成为世界上学习和使用频率较高的实时操作系统。2000年7月,μC/OS-II V2.52通过了美国航空航天管理局的安全认证,其可靠性得到了进一步的验证。 利用任务调度的空闲时间使CPU进入低功耗模式,以降低系统功耗这一思想在μC/OS-II内核设计之初就被注意到了。为此设计者特意留出了相应的内核扩展接口。用户可以利用此接口,实现一个实时的低功耗系统。 1 利用空闲任务扩展接口使CPU进入低功耗模式 实现μC/OS-II低功耗特性的方法很简单:用户可以利用μC/OS-II中空闲任务的扩展接口,使系统在空闲状态下进入某种低功耗模式,降低系统功耗;同时利用RTI信号作为时钟节拍,周期性地唤醒CPU。CPU被唤醒之后,将执行节拍中断服务程序,重新判断是否有任务处于就绪态。如果有,就执行该任务;如果没有,则重复上面的过程。 μC/OS-II最多可以管理64个任务,并为每一个任务分配一个不同的优先级。每一个任务有五种可能的状态——睡眠态、就绪态、运行态、等待态和中断服务态。μC/OS-II属于可剥夺型内核,也就是说,μC/OS-II总是运行进入就绪状态的优先级最高的任务。一旦优先级高的任务进入就绪态,就可以将CPU从低优先级任务中抢过来。 在μC/OS-II初始化时,会建立一个优先级最低的任务——空闲任务,在没有任务进入就绪态的时候,空闲任务就会开始运行。空闲任务会调用一个函数——OSTaskIdleHook()。这是留给用户使用的内核扩展接口。空闲任务实际上并没有什么事情可做①,只是一个等待中断的无限循环。因此用户可以利用OSTaskIdleHook(),使CPU进入低功耗模式。 ① 事实上,空闲任务可以为统计任务提供一个计数,用以统计CPU的利用率,但该工作完全可以在改动OSTaskIdleHook()之前运行。 用户不必担心整个内核因为系统进入低功耗模式而停止运行。因为HCS08GT60允许RTI时钟周期性地将CPU唤醒。唤醒之后的系统会和遇到节拍中断一样,进入OSTickISR()中断服务程序,查看是否有任务进入了就绪态。如果还没有,就再次进入低功耗模式。 对于HCS08GT60,允许RTI时钟的低功耗模式有WAIT模式、STOP2模式和STOP3模式三种,其功耗、系统恢复时间、唤醒中断源等各不相同。下面介绍如何选择一种合适的低功耗模式。 2 选择合适的低功耗模式 2.1 HCS08GT60的低功耗模式 考虑到后面的讨论要涉及到具体的低功耗模式,所以首先介绍一下单片机HCS08GT60的低功耗特性。HCS08GT60属于飞思卡尔(原Motorola)HCS08系列单片机。该系列单片机的低功耗特性很突出;工作电压可以在1.8~3.6 V之间选择,有WAIT和STOP两种低功耗模式。STOP模式可细分为STOP3、STOP2和STOP1三种,功耗依次降低。WAIT模式下, CPU停止运行,但其他外围模块并不断电,因此,系统随时可以响应各种中断。HCS08GT60的三种STOP模式如表1所列。 表1 三种STOP子模式的特点 从表1可以看出,在STOP1模式中,唤醒CPU只能通过IRQ中断或复位信号,由于无法提供时钟节拍,内核的任务调度无法实现;而在STOP2和STOP3中,RTI都可以作为系统的唤醒中断源,内核可以使用RTI作为时钟节拍。 STOP2模式与STOP3模式相比功耗更低;但是,STOP2模式下I/O寄存器是关闭的,必须在进入模式之前将I/O寄存器的值保存在RAM中,而在唤醒之后再从RAM拷贝到I/O寄存器。唤醒STOP2可以使用IRQ、复位信号和RTI。STOP3模式下,RAM和I/O寄存器内容将保持。另外,除STOP2模式允许的唤醒中断源外,还允许键盘中断唤醒CPU。 2.2 实时性、中断源和功耗 影响低功耗模式的选择有三个主要因素:功耗、中断源和实时性。 (1) 功耗 表2 STOP2、STOP3和WAIT模式下的功耗 μC/OS-II为用户提供了一个统计任务,用以计算CPU的利用率,并保存在变量OSCPUUsage(%)中。用户可以在加入低功耗处理前②,使用统计任务计算出CPU利用率,从而粗略地估算出系统的功耗。 ② 计算必须在改动OSTaskIdleHook()之前进行,因为一旦系统进入任何一种低功耗模式,空闲任务将不能给变量OSIdleCtr继续加1。 (2) 中断源 (3) 实时性 3 μC/OS-II在HCS08GT60上的移植 μC/OS-II的95%代码是由ANSI C写成的,具有很好的移植性。如何移植μC/OS-II可以参阅文献[1]。这里只强调一下时钟节拍的选择。 为了实现时间延时和确认超时,μC/OS-II需要系统提供一个10~100 Hz的周期性信号。我们选择实时时钟中断(RTI)作为μC/OS-II的时钟。这主要是考虑在HCS08GT60处于WAIT或者STOP2/3模式下,RTI仍然可以作为唤醒系统的中断源。需要注意,在运行和等待模式下,RTI的时钟只能由外部晶振提供;在STOP3模式下,RTI时钟可以由外部晶振或是内部晶振提供;在STOP2模式下,RTI只能由内部时钟提供。为了尽量不改动时钟源,建议使用1个32.768 kHz的外部晶振提供系统时钟和RTI时钟,在运行、WAIT和STOP3模式下,RTI的时钟源始终不变;而在STOP2模式下,用户只能使用内部时钟发生器提供的RTI时钟源。 4 结论 仔细分析1个低功耗实时系统会发现,有很多因素左右着系统功耗,各因素之间往往会相互影响,相互制约。例如,为了保证实时性,尽量不改动时钟设置,使用了32.768 kHz的外部晶振作为RTI时钟源,并利用锁相环将该频率升高,作为系统总线时钟。从操作系统角度分析,CPU可以进入低功耗模式,系统功耗降低了。但是,因为使用了锁相环,也会给系统带来额外的功耗。对于一个实际系统,这种做法到底是提高还是降低了系统功耗,只能通过CPU占用率、节拍频率等条件具体分析了。 因此,要选择一套合理的软硬件设置来降低功耗,就必须全盘考虑,不能仅仅局限于操作系统的角度。 参考文献 1 Labrosse Jean J. 嵌入式实时操作系统μC/OS-II. 邵贝贝等译. 第2版. 北京:北京航空航天大学出版社,2003 |
|
|
|
|
[嵌入式系统] 相关文章: NAND FLASH在基于CCM3118税控收款机上的应用简介:
引言 CCM3118是苏州国芯公司一款32位高性能、低功耗SoC芯片,以32位C*CORE C310处理器为核心,并有3个串口,2个智能卡接口,1个PS/2接口,1个LCDC控制器,多达72个通用输入输出引脚(GPIO)等丰富资源,在税控收款机、POS机等领域广泛应用。税控收款机所管理的商品、发票、销售记录等数据量非常大,并且国家税控机标准中对数据的保存时间、可靠性有明确要求,故需要一种大容量、单位比特价格低、读写性能好、能够长时间可靠保...... Linux操作系统开始在移动电话上得到应用
基于CF卡的嵌入式存储设备的设计
汽车网络的分类及发展趋向
凌阳推出8位工业级通用单片机
赢得设计成功的嵌入式Linux
可变R-L-C 元件的SPICE模拟行为建模
一种结构简单性能优良的AGC电路
利用F1508进行绝缘电阻测试
基于AD9444的时间交叉采样ADC系统 |
|
|
|