IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 嵌入式低功耗电源管理框架设计 - 软件规格说明 -> 正文阅读

[嵌入式]嵌入式低功耗电源管理框架设计 - 软件规格说明

概述

目标

本篇的目标是介绍低功耗电源管理框架设计的概念

  • 理解低功耗管理的重要性

  • 理解如何开发适合的低功耗管理框架

  • 理解如何去管理产品的功耗

形势

  • 大多数的嵌入式产品非常注重低功耗设计,尤其近年来,硬件不断的更新换代,处理器的设计越来越复杂,资源也越来越丰富,很多嵌入式产品都开始使用嵌入式操作系统,如RTOS,以降低开发难度,加快产品开发效率,缩短产品交付时间。

  • 电源管理、低功耗管理在多任务的操作系统下,控制与管理起来,会越来越困难,负责功耗的工程师,不仅需要掌握必备的硬件知识,还需要熟悉操作系统,设备驱动,需要设计适合产品的电源管理系统,甚至还需要了解生产测试、熟悉产品的策划、业务,并兼顾性能、功能指标等。

  • 如今嵌入式产品的开发周期、上市周期,都比较短,很多从事Android、PC、Linux、裸机产品开发的工程师,面对低功耗的管理,不仅需要从原理上理解如何管理,还需要动手设计管理框架、功耗测量与拆解、功耗调优的方法的探索与验证,甚至需要与多个领域【谈判】如何兼顾功能、性能等产品指标。

  • 很多嵌入式产品,如一些基于电池供电的可穿戴产品,体积小,电池容量小,根据产品的定义,会把【产品续航】作为一项重要的【卖点】,可能会组织一个团队去攻关【功耗管理】

开发功耗管理框架

  • 并不是每个公司在产品开发时,都需要自己开发电源管理框架,因为功耗管理本身是【实践性】的,框架开发一般由参与过功耗管理的人员开发会更实用。开发框架意味着增加了很多的额外工作量与开发周期。

  • 目前部分操作系统,都有默认的PM电源管理框架,不过,并不适合所有产品的功耗管理,可能需要改进、重构以适合特殊产品的功耗管理,如有些产品只需要【睡眠管理】,有些产品还需要【变频管理】。

  • 低功耗电源管理框架,用于功耗的管理,一般用于多任务的操作系统中,为用户提供较好的应用接口(API),用户可以不关心框架本身的运行机制,只需要根据框架提供的功能进行管理即可。这大大减轻功耗管理的工作量,缩短功耗管理周期,用户只需要关心如何调优功耗。

  • 如RT-Thread操作系统,有PM电源管理组件,提供基本的【睡眠】【变频】机制,可以运行【Tickless】,适合大部分产品的功耗管理。

  • 接下来会基于RT-Thread PM框架,开发一个低功耗管理软件包,基于实际功耗管理经验,特点:轻量、易用、敏捷。

如何管理产品的功耗

  • 前面有些功耗管理的文章,多多少少提到一些基本的概念

  • 必备的【硬件、器件】知识,能动手焊接、拆解、通过硬件手册,了解各个芯片、电源回路的供电方式、特点、功耗组成。

  • 初步的【驱动开发】能力,能熟悉操作系统基本的概念,理解电源管理框架的原理,动手编写功耗调试代码,【拆解功耗】【分析功耗】【调优功耗】

  • 初步的【应用开发】能力,了解业务的基本工作流程,能看懂别人的业务代码,能懂得如何加入功耗管理代码,进行开关逻辑、任务运行与空闲的睡眠控制。

  • 必要的【表达沟通】能力,会与各个领域沟通,完成功耗开发任务。【王者】级别的功耗管理,需要带动整个产品开发线:硬件、生成、测试、驱动、操作系统、GUI、策划、管理层,让他们意识到功耗管理的【重要性】,意识到不搞好电源管理,会带来:开关逻辑不合理、资源不够用、系统卡顿、死机重启、无法正常的开关机、产品变砖、发热发烫、续航短等等各种问题。

  • 实践发现,功耗管理具备以上的几个条件,则产品功耗管理与开发产品其他功能一样,进展会比较的【顺利】

现有电源管理框架

  • 大部分的操作系统,如RT-Thread,拥有PM组件,但可能不具备轻量、简单易用等问题,用户理解或使用起来比较的困难

  • 如RT-Thread Nano版本,没有设备管理的概念,如何使用PM管理框架?

  • 部分处理器本身资源如Flash、RAM不多,如何使用轻量的管理框架也可实现功耗的管理

  • 基于以上的考量决定开发一个PM功耗管理的轻量版本

开发路线

  • 软件包命名:LPMS:Low-Power Management System,低功耗电源管理系统

  • 方便移植、易于定制,让用户使用、定制起来更便捷。

  • 把功耗管理系统做成一个软件包,易于更新迭代,用户简单适配后立即使用,方便功耗的管理,

  • 用户喜欢精简的调试手段,简单的请求、释放,功耗管理框架运行原理简单、可靠、易懂。

  • 增加用户配置的灵活性,简化睡眠管理、变频管理、Tickless运行机制更清晰

  • 使用功耗模块id,使用状态位,不使用设备管理,易于功耗的调试,并占用较少的ROM、RAM等资源

  • 使用功耗模块id,移除睡眠、变频的引用计数,简化用户功耗管理

  • 请求高频立即变频、请求低频在空闲线程(idle)中变频、请求的频率不变则不进行变频的【变频管理】

  • 【睡眠执行】依旧在空闲线程(idle)中

为何使用模块ID而不使用设备(Device)

  • LPMS 管理块,不在使用设备(Device)管理,无须注册设备,无须注册通知【Notify】,无须设置名字。

  • 电源管理采用【化整为零】的思路,拆解为一个个模块,如一个线程或一个外设,只需要一个模块id标识,改为一个bit位,不使用字符串名称。模块id采用【位图】的管理方式,如请求为位置1,释放为位清0,【睡眠】【变频】模式的判断决策更快。

LPMS的组成

  • pms.c pms.h 电源管理框架主文件,尽量实现【可配置】,平台无关。

  • pms_config.h 用于用户自定义的配置、功耗模块id定义等

  • pms_drv.c pms_drv.h,用于【平台适配】

  • pms_timer.c pms_timer.h,用于【低功耗定时器】,实现tickless运行与系统时钟补偿

  • 其他:Demo验证工程,验证pm管理框架的功能实现

LPMS的发布

  • LPMS 暂时采用软件包的方式,易于快速的更新迭代

  • LPMS 适配 RT-Thread,也就是标配版、Nano版本,均可以使用

  • LPMS 可以移植适配到其他的RTOS上

LPMS的管理维护

  • 暂时采用gitee管理,后期再使用github(网络不稳定)

  • 欢迎各位使用、提建议、维护、提交PR(代码)

LPMS的愿景

  • 自由

  • 敏捷

  • 免费

  • 简单

  • 高效

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-30 12:12:35  更:2021-08-30 12:23:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:58:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码