【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: ...
随机推荐
- 《HelloGitHub》第 93 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...
- MinIO客户端之stat
MinIO提供了一个命令行程序mc用于协助用户完成日常的维护.管理类工作. 官方资料 mc stat 获取指定桶或者对象的信息,包含对象的元数据. 指定桶bkt1,查看信息,命令如下: ./mc st ...
- Kernel Memory 入门系列:异步管道
Kernel Memory 入门系列:异步管道 前面所介绍的处理流程都是基于同步管道的,即文档导入的时候,会等到文档处理完成之后才会返回. 但是在实际的应用中,文档很多,而且文档的处理时间也不确定,如 ...
- 面试官:禁用Cookie后Session还能用吗?
Cookie 和 Session 是 Web 应用程序中用于保持用户状态的两种常见机制,它们之间既有联系也有区别. Cookie 是由服务器在 HTTP 响应中发送给客户端(通常是浏览器)的一小段数据 ...
- Spring源码学习笔记5——注册BeanPostProcessor,初始化事件多播器,注册事件监听器
一丶前言 上篇Spring容器回调完所有的BeanFactoryPostPocessor,之后可以做到替换所有占位符,解析所有配置类等工作,这篇还会迎来一个Spring留给我们扩展的一个接口,涉及到A ...
- 17、Flutter StatelessWidget 、 StatefulWidget
在Flutter中自定义组件其实就是一个类,这个类需要继承StatelessWidget/StatefulWidget. StatelessWidget是无状态组件,状态不可变的widget Stat ...
- 华为云黄瑾:做强坚实数据底座,GaussDB与产业携手共进
近日,华为全球智慧金融峰会2023在上海顺利举行,华为云副总裁.战略与产业发展部总裁黄瑾发表了<做强坚实数据底座,GaussDB与产业携手共进>的主题演讲. 以下为演讲实录: 尊敬的各位来 ...
- 云图说|ModelArts开发环境,让AI开发、探索、教学更简单
摘要:ModelArts开发环境,以云原生的资源使用和开发工具链的集成,目标为不同类型AI开发.探索.教学用户. 本文分享自华为云社区<[云图说]| 第280期 ModelArts开发环境,让A ...
- 云小课 | 一个三分钟快速定制OCR应用的神器,要不?
摘要:ModelArts Pro提供了文字识别套件,基于丰富的文字识别算法和行业知识积累,帮助客户快速构建满足不同业务场景需求的文字识别服务.三分钟即可快速定制OCR服务,实现多种版式图像的文字信息结 ...
- Karmada v1.2发布:开启全文本搜索新纪元
摘要:Karmada v1.2 版本对调度器能力做了较大增强,初步提供了分布式搜索引擎支持,此外还借助聚合API提供了诸如 logs, watch等实用的命令行工具,资源解释器(Resource In ...