如何实现嵌入式处理器的低功耗?其工作原理是啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何实现嵌入式处理器的低功耗?其工作原理是啥?相关的知识,希望对你有一定的参考价值。
实现嵌入式处理器的低功耗的方式是使用一些睡眠模式或者是低功耗的一种模式来实现。 其工作原理是主要是能够对整个处理器做好各种复杂工作,才能够在整个技术方面做到突破与改善。
为了实现有关嵌入式处理效方式,能够加强对整个嵌入式处理器工作改善很好,促进有关处理器长期发展有稳定,加强对低功耗使用才是必不可少的一种方式,最重要能够凸显睡眠模式和多种方式有机结合。通过处理器能够解决各种复杂工作和各种应用程序困难行为能够让整个运行时间都得到有效改善,这样才能够最大程度上节约电池销量。并且通过相关消息能够了解到对于整个运行时间和其他时间都上升非常快。通过将芯片的制造商注意力加强改善和转移,对整个情况做出有效改善整个处理器能够改善有关功率要求并且是增长竞争力来拓展市场。
为了加强有关电池技术不断突破与改进,很多电池能够增强其寿命并且让整个体积不断缩小,这种行为是非常值得长期发展和肯定。这样能够加强对电池管理,而且能够增强管理性能。以此来协调有关高性能和自身功耗之间相关矛盾问题解决,能达到有效节能目的从最大程度上降低有关供电电压使用,利用这种事实和发展能够保证高质量发展和未来长期有效突破。并且利用新型技术有关动态电压技术进行相应调整,对整个处理器精确度和电压都能够形成整体状态这样能够最大程度上缓解电压之间的关系和适用电压范围。
对有关嵌入式的处理器低功耗方式解决这一种方式是非常促进技术改革与创新减少,有关工作难度和负载量。
参考技术A 嵌入式处理器的低功耗是通过使用一些低功耗的空闲或睡眠模式来实现的。嵌入式开发人员可以使用WFI指令将其系统置于低功耗模式,一旦触发先前配置的唤醒事件或中断,系统将立即唤醒 参考技术B 采用低功耗器件;采用高度集成专用器件;动态调整处理器的时钟频率和电压。嵌入式处理器的低功耗是通过使用一些低功耗的空闲或睡眠模式来实现的。 参考技术C 减少供电电压并同时降低处理器的时钟速度,功耗将会呈二次方的速度下降,代价是增加了运行时间。实时系统低功耗原理及实现,非常实用的方案
点击上方“小麦大叔”,选择“置顶/星标公众号”
福利干货,第一时间送达
前言
目前, 越来越多的嵌入式产品在开发中使用 RTOS
作为软件平台, 同时,开发中对低功耗的要求也越来越高, 本文会讨论一下如何在 RTOS 中处理微控制器的低功耗特性。
应用中使用的 RTOS
一般采用基于时间片轮转的抢占式任务调度机制,一般的低功耗设计思路如下:
当
Idle
任务运行时,进入低功耗模式;在适当的条件下,通过中断或者外部事件唤醒
MCU
。
但是, 从第二点可以看出,每次当 OS
系统定时器产生中断时,也会将 MCU
从低功耗模式中唤醒,而频繁的进入低功耗模式/从低功耗模式中唤醒会使得 MCU
无法进入深度睡眠,对低功耗设计而言也是不合理的。
在 FreeRTOS
中给出了一种低功耗设计模式 —— Tickless Idle Mode
, 这个方法可以让 MCU
更长的时间处于低功耗模式。
Tickless Idle Mode 的原理及实现
情景分析
上图是任务调度示意图,横轴是时间轴, T1
, T2
, T3
, T4
是 RTOS
的时间片基准,有四个任务分别是 TaskA
,TaskB
,TaskC
,TaskD
:
Task A
,周期性任务Task B
, 周期性任务Task C
,突发性任务Task D
,周期性任务
从图中可以看出在四个任务进行调度之间,会有四次空闲期间(此时 RTOS
会调度 Idle
任务运行, 软件设计的目标应该是尽可能使 MCU
在 Idle
任务运行时处于低功耗模式)。
1. Idle1
Idle
任务运行期间,会产生一次系统时钟滴答,此时会唤醒 MCU
,唤醒后 MCU
又会进入低功耗模式, 这次唤醒是无意义的。期望使 MCU
在 Idle1
期间一直处于低功耗模式, 因此适当调整系统定时器中断使得 T1
时不触发系统时钟中断, 中断触发点设置为 Task B
到来时。
2. Idle2
Task C
在系统滴答到达前唤醒 MCU
(外部事件),MCU
可以在 Idle2
中可以一直处于低功耗模式;
3.Idle3
与 Idle2
情况相同,但 Idle3
时间很短,如果这个时间很短,那么进入低功耗模式的意义并不大,因此在进入低功耗模式时软件应该添加策略;
4. Idle4
与 Idle1
情况相同。
Tickless Idle Mode 的软件设计原理
Tickless Idle Mode
的设计思想在于尽可能地在 MCU
空闲时使其进入低功耗模式。从上述情景中可以看出软件设计需要解决的问题有:
合理地进入低功耗模式(避免频繁使
MCU
在低功耗模式和运行模式下进行不必要的切换);RTOS
的系统时钟源于硬件的某个周期性定时器(Cortex-M
系列内核多数采用SysTick
),RTOS
的任务调度器可以预期到下一个周期性任务(或者定时器任务) 的触发时间,如上文所述,调整系统时钟定时器中断触发时间,可以避免RTOS
进入不必要的时间中断,从而更长的时间停留在低功耗模式中,此时 RTOS 的时钟不再是周期的而是动态的(在原有的时钟基准时将不再产生中断,即Tickless
)。当
MCU
被唤醒时,通过某种方式为系统时钟提供补偿。MCU
可能被两种情况所唤醒,动态调整过的系统时钟中断或者突发性的外部事件,无论是哪一种情况,都可以通过运行在低功耗模式下的某种定时器来计算出MCU
处于低功耗模式下的时间,在MCU
唤醒后对系统时间进行软件补偿;软件实现时,要根据具体的应用情景和
MCU
低功耗特性来处理问题。尤其是MCU
的低功耗特性,不同MCU
处于不同的低功耗模式下所能使用的外设(主要是定时器) 是不同的,RTOS
的系统时钟可以进行适当的调整。
Tickless Idle Mode 的实现
这里以 STM32F407
系列的 MCU
为例, 首先需要明确的是 MCU
的低功耗模式, F407
有 3 种低功耗模式:Sleep
,Stop
, Standby
, 在 RTOS
平台时, SRAM
和寄存器的数据不应丢失, 此外需要一个定时器为 RTOS
提供系统时钟, 这里选择 Sleep
模式下进行实现。
1. 使能
#define configUSE_TICKLESS_IDLE 1
2. 空闲任务(RTOS 空闲时自动调用)
3. 低功耗模式处理(根据 MCU 的低功耗模式编写代码, 代码有点长……)
最后
STM32
家族中拥有不同的系列,特别是专为低功耗应用设计的 L 系列,为其设计 RTOS
低功耗特性实现时可以有更多的实现方式(例,某种模式下内核停止运行, 此时可以使用外部定时器或者 RTC
来代替 Systick
作为系统定时器)。
转自公众号:一起学嵌入式
版权声明:本文来源网络,版权归原作者所有。版权问题,请联系删除。
—— The End ——
往期推荐
点击上方名片关注我
你点的每个好看,我都认真当成了喜欢
以上是关于如何实现嵌入式处理器的低功耗?其工作原理是啥?的主要内容,如果未能解决你的问题,请参考以下文章