【RTOS】基于RTOS的降低功耗的策略
RTOS中降低功耗的策略
介绍
随着绿色节能产品需求的增加,快速增长的移动设备,其电池寿命最受关注,设计者必须要考虑在其设计中如何最大限度的降低功耗。这可以通过选择耗电更低的组件,以及更合理的软件架构去实现。
RTOS调度效率
一个普遍的常识,在嵌入式设计中加入RTOS会产生额外的处理开销,从而导致更高的功耗。对于简单的设计,轮询超循环架构可能是更合适的,但对于更高级、更复杂的设计,使用基于事件机制的调度算法部署RTOS可以显著减少应用程序的处理时间,从而允许选择更小的处理器或增加更多的功能。
在一个基于优先级抢占式RTOS的软件工程中,任务是按照优先级执行的,高优先级任务只要就绪总能获得处理器。在没有任务运行时,如任务等待事件而阻塞,RTOS就会运行后台任务即空闲任务,空闲任务可以做一些后台处理工作。但通常情况下,系统只是保持在空闲任务运行直到某个事件产生以使其阻塞的任务激活。软件设计越高效的利用RTOS,空闲任务消耗处理器的时间就越长。
空闲任务睡眠模式
降低功耗首先要做的就是在系统进入空闲任务后,RTOS使处理器进入低功耗模式。为了保证快速响应,处理器将在中断来临时唤醒,如果没有外部中断触发,则将在下一个RTOS tick中断时唤醒。
在OPENRTOS和SAFERTOS系统中,降低功耗的方式是在空闲任务钩子函数中使处理器进入低功耗模式,见图Figure 1。

SAFERTOS系统的超低功耗模式
tickless睡眠模式进一步扩展了之前提出的降低功耗的策略,通过在空闲期间完全停止RTOS tick中断使系统处于省电模式以达到节省电能,停止tick中断将使处理器保持深度省电模式,直到一个中断发生,或是RTOS重新激活任务的时候,如图Figure 2。

使用SAFERTOS,可以在下述情况进入tickless睡眠模式
- 只有空闲任务在运行的时候,所有的应用任务均被阻塞或挂起
- 在内核将应用任务激活时,至少需要N个完整的tick周期,这样做可避免在每次tick时计算和重新配置时钟
在tickless睡眠模式处理器将处于睡眠模式,直到下一个任务阻塞时间到达,或是下一个软件定时器被触发。在下述条件满足时,SAFERTOS将使处理器处于深度睡眠模式直到下一个外部中断到来
- 软件定时器未被使用,或是定时未到,SAFERTOS在任何时候均不执行定时器的回调函数
- 所有的应用任务均处于挂起状态或无限超时阻塞状态(超时被设置为portMAX_DELAY),SAFERTOS在任何时候均不激活任务
SAFERTOS知道最长的睡眠时间,没有错过任务阻塞时间超时的风险,或软件定时器的执行。但无法预测何时退出低功耗模式,因为无法预测异步中断何时发生,因此在SAFERTOS退出低功耗模式时,无法假定睡了多久,故无法在调整系统时间前计算出睡眠时长。
freertos低功耗机制
freertos是在系统进入空闲任务时,将处理器设置为低功耗状态,当然rtos节拍时钟频率过高,将会使处理器频繁的进入和退出低功耗状态,这带来的电量损耗可能比正常运行模式时还高,为解决这个问题,freertos引入了tickless低功耗模式,即在系统执行空闲任务时停止系统时钟,在tick中断被激活时重新计算并调整rtos的tick计数值,tickless低功耗模式可使处理器保持在深度省电状态,直到中断发生。
【RTOS】基于RTOS的降低功耗的策略的更多相关文章
- 基于 普通及Lambda方式实现策略模式
什么是策略模式 策略模式代表了解决一类算法的通用解决方案,你可以在运行时选择使用哪种方案.比如如何使用不同的条件(比如苹果的重量,或者颜色 )来筛选库存中的苹果.你可以将这一模式应用到更广泛的领域 , ...
- 基于KMeans的指数择时策略
[导语]:聚类分析是指将物理或者抽象对象的结合分组为由类似对象组成的多个类的分析过程.简单来讲,聚类就是通过一些特征去自动识别一个大群体中的多个子群体,这些子群体中的对象彼此之间相似度高,而子群体之间 ...
- 【RTOS】RTOS汇编入门 (1)
引言 为了提高效率,进行更为底层的操作,RTOS常采用汇编语句,因此了解常用的汇编语句,很有必要 汇编指令 1..equ:类似于c中的#define,表声明常量 例如:.equ PSW 0x10000 ...
- winform降低功耗总结
这里整理了一些网上关于Winform如何降低系统内存占用的资料,供参考: 1.使用性能测试工具dotTrace 3.0,它能够计算出你程序中那些代码占用内存较多2.强制垃圾回收3.多dispose,c ...
- 【原/转】ios指令集以及基于指令集的app包压缩策略
iPhone指令集 本文所讲的内容都是围绕iPhone的CPU指令集(想了解ARM指令集的同学请点击这里),现在先说说不同型号的iPhone都使用的是什么指令集: ARMv8/ARM64 = iP ...
- 基于CORS的geoserver同源访问策略
这个问题理顺整个2天.终于攻克.记录下来. 1.下载文件 首先下载cors压缩包,解压,得到的是org/mortbay/servlets/CrossOriginFilter.class文件,把此文件拷 ...
- 90-95年CPU功耗感知调度研究
最近读了三篇1990-1995年的通过调度来降低cpu能耗的文章[1] [2] [3],简单总结一下该年代单核CPU功耗感知的调度策略. Motivation 随着便携式设备逐渐兴起,人们对降低其功耗 ...
- FPGA设计中的电源管理(转载)
过去,FPGA设计者主要关心时序和面积使用率问题.但随着FPGA不断取代ASSP和ASIC器件,设计者们现正期望能够开发低功耗设计,在设计流程早期就能对功耗进行正确估算,以及管理和对与FPGA相关的各 ...
- uC/OS-II内核架构解析(1)---嵌入式RTOS(转)
uC/OS-II内核架构解析(1)---嵌入式RTOS 1. 嵌入式系统基本模型 2. RTOS设计原则 采用各种算法和策略,始终保持系统行为的可预测性.即在任何情况下,在系统运行的任何时刻,OS的资 ...
- Linux之RTOS学习
Linux之RTOS学习 RTOS: Real time operating system 系统选型 可选方案 RTLinux - FSMLabs, WindRiver Systems - http: ...
随机推荐
- 使用RFC跳过权限校验的方法
1.业务背景 由于业务流程的复杂性,用户往往只具备部分功能的权限,导致在操作自开发程序时出现权限问题.例如前台限制了用户对销售订单的修改,而自开发功能中又涉及单据修改,此时一味限制权限,则无法正常使用 ...
- ElasticSearch之cat aliases API
执行aliases命令,如下: curl -X GET "https://localhost:9200/_cat/aliases?pretty&v=true" --cace ...
- 微信模板消息 PHP
微信SDK: <?php class Oauth { //获得全局access_token public function get_token(){ //如果已经存在直接返回access_tok ...
- 【开源】EDUCN网站
EDUCN https://scrc.rth1.link/ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN&q ...
- maven系列:POM文件总体配置说明
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- 华为云如何赋能无人车飞驰?从这群AI热血少年谈起
摘要:由华为云携手上海交通大学学生创新中心举办的"第二届华为云人工智能大赛 · 无人车挑战杯"中,来自电子科技大学的"暑期休闲队"获得大赛季军. 由华为云携手上 ...
- 提升软件质量?为什么不试试华为云CodeArts Check
摘要:华为云CodeArts Check代码检查服务为用户提供包括代码风格.通用质量与代码安全风险等在内的检查能力,同时提供问题闭环处理.检查报告等功能,从而一站式完成代码检查作业. 本文分享自华为云 ...
- 开发老人笔记:Git 常用命令清单
摘要:git是目前世界上最先进的分布式版本控制系统. 多人协作 master:此分支用来发布稳定的代码,合并一般是由管理员合并 dev:此分支用于团队开发,团队成员向此分支提交代码 bug:此分支用于 ...
- GaussDB(for openGauss)让数据“存得下、算得快、算得准”
摘要:本文从总体架构.数据分布方式.计算下推.数据强一致等方面进行介绍GaussDB(for openGauss). 1.前言 随着云计算规模越来越大,企业业务数据量呈指数级增长,传统数据库在海量数据 ...
- 万字长文|Hadoop入门笔记(附资料)
大数据迅速发展,但是Hadoop的基础地位一直没有改变.理解并掌握Hadoop相关知识对于之后的相关组件学习有着地基的作用.本文整理了Hadoop基础理论知识与常用组件介绍,虽然有一些组件已经不太常用 ...