一种利用实时时钟降低嵌入式系统功耗的方法.doc

一种利用实时时钟降低嵌入式系统功耗的方法.doc

ID:27821417

大小:219.00 KB

页数:8页

时间:2018-12-06

一种利用实时时钟降低嵌入式系统功耗的方法.doc_第1页
一种利用实时时钟降低嵌入式系统功耗的方法.doc_第2页
一种利用实时时钟降低嵌入式系统功耗的方法.doc_第3页
一种利用实时时钟降低嵌入式系统功耗的方法.doc_第4页
一种利用实时时钟降低嵌入式系统功耗的方法.doc_第5页
资源描述:

《一种利用实时时钟降低嵌入式系统功耗的方法.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、一种利用实时时钟降低嵌入式系统功耗的方法一种利用实时时钟降低嵌入式系统功耗的方法一种利用实时时钟降低嵌入式系统功耗的方法  1.嵌入式CPU低功耗模式介绍  众所周知,低功耗已经是衡量一个嵌入式系统的重要指标。而作为嵌入式系统的核心,嵌入式CPU的功耗则对整个系统起着重要的作用。当前流行的嵌入式系统CPU,基本都提供低功耗特性。一般而言,当嵌入式CPU都会有工作模式与低功耗模式,而低功耗模式又可进一步分为空闲模式,休眠模式,睡眠模式等。进入低功耗模式后,CPU的功耗会降低很多。而外部中断发生时,可以将CPU唤醒。一个嵌入式系统运行起来后,当系统进入idle状态时,就可以让CP

2、U进入低功耗模式,而当外部中断发生时,再唤醒CPU,重新回到工作模式。让CPU尽可能多的处于低功耗模式,可以大大降低系统的功耗。然而,即使系统处于idle而且没有别的工作要做,系统实时时钟的中断,也会不停的唤醒CPU,从而增加系统功耗。因此,可以考虑对系统实时时钟的中断进行修改,从而减少对系统功耗的影响。  2.系统实时时钟与功耗的关系分析  在目前的嵌入式系统中,系统实时时钟一般是一个硬件循环计数器。当硬件计数器计到一定数值时会向CPU发出中断。系统实时时钟是现代多任务嵌入式操作系统的重要组成部分,因此我们需要先讨论一下嵌入式操作系统与系统实时时钟的关系。当今的嵌入式操作系

3、统一般都支持多任务,优先级和时间片调度。当嵌入式OS运行起来后,一般都有一个IDLE任务,它的优先级最低,而其他任务的优先级都应该比它高。在优先级调度机制中,只有当系统中其他高优先级任务都处于阻塞状态时,它才有机会运行。时间片调度机制只对同优先级的任务有效。也就是说,不同优先级的任务之间是不会按时间片调度轮转的,而是按优先级来调度的。因此当系统进入IDLE任务时,可以认为系统中没有工作要CPU来做,系统为idle状态。当时间片调度机制开启后,嵌入式OS就会根据时间片来调度任务。也就是当一个时间片用完后,要运行调度器来决定下一个时间片的归属。时间片的基本单位是系统TIck,而系

4、统TIck是以系统实时时钟为基础的。当系统实时时钟中断产生时,CPU会将系统TIck加1。每当系统TIck增加n(一个时间片)时,嵌入式OS将启用调度器进行时间片调度。因此,当时间片调度机制开启后,就需要系统tick的实时更新和调度器的定时运行,也就需要实时时钟中断以很高的频率定时产生。如果关闭时间片调度机制,则任务之间只需要按照优先级来调度,这样就不需要计算时间片,也就是系统tick不用实时更新,实时时钟的中断不必以很高的频率产生,调度器也不用定时运行。这样就有可能考虑延长实时时钟的中断间隔。同时调度器不需要进行时间片调度,可以节省系统开销。但关闭时间片调度后,系统就只有优

5、先级调度。这就要求系统的所有任务要主动阻塞,而不要期待调度器把同优先级的其他任务调度出CPU而让自己运行。在目前流行的嵌入式操作系统中,一般都提供了很多主动阻塞的机制,因此要做到这一点并不难。延长实时时钟的中断间隔,可以让CPU长期处于低功耗状态,直到有设备中断唤醒CPU。这样将大大减低系统在空闲时的功耗。延长实时时钟中断间隔后,需要考虑的问题有两个,一是系统tick,另一个是系统delay。系统tick是实时时钟和操作系统之间的接口,操作系统与时间相关的模块和API,基本都是基于tick的。在一般系统中,实时时钟的中断是每个tick一次。因此tick是操作系统最小的计时单位

6、。延长实时时钟中断间隔后,系统tick就会长时间不增加,因此怎样保证系统tick的准确性,就是最基本的问题。解决了tick的准确性,就可以隔离实时时钟对操作系统的影响。系统delay是操作系统一种重要的阻塞机制,它主要用于让一个任务主动让出CPU一段时间。一般系统delay是基于系统实时时钟的,系统delay的基本单位就是tick。当调用delay时,API函数会首先得到当前系统tick,然后加上需要delay的时间,形成一个未来的delay时间点,再将任务挂到系统的delay队列上。因此delay队列上的所有任务都对应一个自己的delay时间点。当系统tick超过某个任务的

7、delay时间点时,该任务就应该醒来。这就需要实时时钟的中断来唤醒CPU,并运行调度器让delay的任务重新进入就绪队列。如果实时时钟中断间隔延长,系统tick就会很长时间不增加,就很难保证delay的准确性。同时delay时间到达后,也无法唤醒任务。要保证系统tick的准确性,就要求每次主动获得系统tick时,需要通过实时时钟硬件计数器的值计算出当前的系统tick。同时,需要保证主动获取和实时时钟中断之间的同步。而对于系统delay,则需要修改硬件计数器的计数值,使其为系统delay队列上的最小del

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。