位置:51电子网 » 技术资料 » 接口电路

μC/OS-II内核扩展接口的低功耗模式

发布时间:2008/6/3 0:00:00 访问次数:440

引言

随着消费类电子产品的功能日益复杂,在其中移植或固化实时操作系统已不是新鲜事了,如手机、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进入低功耗模式。

用户不必担心整个内核因为系统进入低功耗模式而停止运行,因为hcs08gt60允许rti时钟周期性地将cpu唤醒。唤醒之后的系统会和遇到节怕中断一样,进入ostickisr()中断服务程序,察看之是否有任务进入了就绪态。如果还没有,就再次进入低功耗模式。

对于hcs08gt60,允许rti时钟的低功耗模式有wait模式,stop2模式和stop3模式三种,其功耗、系统恢复时间,换醒中断源等各不相同。下面介绍如何选择一种合适的低功耗模式。

2 选择合适的低功耗模式

2.1 hcs08gt60的低功耗模式

考虑到后面的讨论要涉及到具体的低功耗模式,所以首先介绍一下单片机hcs08gt60的低功耗特性,hcs08gt60属于飞思卡尔(原motorola)hcs80系列单片机。该系列单片机的低功耗特性很突出;工作电压可以在1.8-3.6v之间选择,有wait和stop两种低功耗模式。stop模式可细分为stop3、、stop2和stop1三种,功耗主次降低。wait模式下,cpu停止运行,但其他外围模块并不断电,因此,系统随时可以响应各种中断。hcs08gt60的三种stop模式如表1所列。

从表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 实时性、中断源和功耗

引言

随着消费类电子产品的功能日益复杂,在其中移植或固化实时操作系统已不是新鲜事了,如手机、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进入低功耗模式。

用户不必担心整个内核因为系统进入低功耗模式而停止运行,因为hcs08gt60允许rti时钟周期性地将cpu唤醒。唤醒之后的系统会和遇到节怕中断一样,进入ostickisr()中断服务程序,察看之是否有任务进入了就绪态。如果还没有,就再次进入低功耗模式。

对于hcs08gt60,允许rti时钟的低功耗模式有wait模式,stop2模式和stop3模式三种,其功耗、系统恢复时间,换醒中断源等各不相同。下面介绍如何选择一种合适的低功耗模式。

2 选择合适的低功耗模式

2.1 hcs08gt60的低功耗模式

考虑到后面的讨论要涉及到具体的低功耗模式,所以首先介绍一下单片机hcs08gt60的低功耗特性,hcs08gt60属于飞思卡尔(原motorola)hcs80系列单片机。该系列单片机的低功耗特性很突出;工作电压可以在1.8-3.6v之间选择,有wait和stop两种低功耗模式。stop模式可细分为stop3、、stop2和stop1三种,功耗主次降低。wait模式下,cpu停止运行,但其他外围模块并不断电,因此,系统随时可以响应各种中断。hcs08gt60的三种stop模式如表1所列。

从表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 实时性、中断源和功耗

相关IC型号
版权所有:51dzw.COM
深圳服务热线:13751165337  13692101218
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!