Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
PM电源管理
功耗调优
基于RT-Thread功耗调优与PM管理实战经验分享-日志篇
发布于 2020-10-20 22:06:50 浏览:1170
订阅该版
[tocm] [RT-Thread 电源管理与功耗调优系列 - 目录](https://club.rt-thread.org/ask/article/3419.html) [基础篇 概念,基础,理解什么是功耗](https://club.rt-thread.org/ask/article/2282.html) [调试篇 开始搭环境,动手调起来](https://club.rt-thread.org/ask/article/2283.html) [驱动篇 想要调功耗,代码也要有](https://club.rt-thread.org/ask/article/2284.html) [系统篇 如何利用rtos或PM框架,配合PMS线程,管理功耗](https://club.rt-thread.org/ask/article/2285.html) [实战篇 具体问题的实战思考与解决思路](https://club.rt-thread.org/ask/article/2286.html) [日志篇 功耗日志文件输出与解析](https://club.rt-thread.org/ask/article/2288.html) [收尾篇 高调做好功耗,低调掌握知识的回顾](https://club.rt-thread.org/ask/article/2289.html) [进阶:RT-Thread精通PM功耗调优 系列](https://club.rt-thread.org/ask/article/2296.html) [上手:产品功耗管理与调优经验分享 系列](https://club.rt-thread.org/ask/article/2707.html) [应用:PM组件应用与经验分享 系列](https://club.rt-thread.org/ask/article/292.html) ## 前言 本篇为日志篇,也可以叫做功耗LOG日志篇。 问:为何需要功耗的日志呢? 答:其实,你可以通过高精的电源,把板子接入,然后,把vbat引出来,接到高精度电源上,然后,高精度电源,连接到电脑上,然后,打开excel,记功耗数据,直接用excel保存,后期,可以生成各种统计功耗的曲线等。 * 我之前调试的一些低功耗的产品,其实就是这样做的,测试环境比较难,测试的设备过于庞大。并且,不是所以的公司,都具备这么高级全套的设备让你用。 * 如果有条件,如产品有较大flash,有文件系统,有emmc 或 sd卡设备等,可以把功耗的数据,写到文件里,这样让板子跑上一晚上,第二天,过来导出功耗日志文件,放在电脑上,然后用python写个处理脚本,基本上,也能明白功耗的情况,并且,日志可以搞的更丰富,明白更多的事件,远比给你一张电流图看的直爽。 * 功耗调试的中后期,老板想看功耗成果时,你可以生成一个比较不错的表格或是曲线出来,这样,更具有说服力,关键是,功耗LOG里的数据,很有利于你分析整个系统的运行情况,何时电量消耗快,何时进入或是退出睡眠,都非常的利于功耗的调优。 * 开始搭建你的功耗日志的环境吧。 ## 功耗日志环境的搭建 * 如果你的产品,已经有日志(如ulog),并且已经可以写文件了,那么,你只要定义你的功耗的数据结构,获取电池电压、电量、一些事件、运行的时间、睡眠时间等,就可以完成功耗日志的记录了,当然,你要开一个定时器,周期性的打印,或是开一个线程,用来做更多的处理。 * 如果你还没有日志的环境,可以参考我的功耗日志的demo。 (1)工程clone下来,进入: ``` git clone https://gitee.com/zhangsz0516/rtt_pm_log.git ``` 环境为pandora stm32l475,文件系统,spi flash,目前可以写LOG到文件了。 ``` rtt_pm_log\examples\15_component_fs_flash ``` 然后: 打开env工具,menuconfig看一下。 接下来,scons --target=mdk5,就可以构建好工程了。 打开:project.uvprojx 工程文件,第一次打开,全编译一下。 (2)这里基于spi flash 文件系统,使用现有的例程,接下来,就是开启ulog组件、PM组件,默认没有log到文件的功能,只有串口输出的。 (3)适配一个file_be.c文件,注册到ulog,这样,通过LOG_D,就可以把日志数据,按指定的格式,写到文件里保存。 file_be.c暂时放在了 ulog相关的目录下,定义了一个宏:ULOG_BACKEND_USING_FILE ![2020-10-20_212658.png](/uploads/20201020/33e9d3ecf645c56bada70c3887827b23.png) (4)spi flash,感觉上不是特别的好用,初始化,还不能太早,否则,文件系统没有正常跑起来,一写LOG会卡住。 (5)目前加入了一个测试的程序,开启定时器,打印LOG到文件,还有点小问题,不过数据可以保存了,这是关键。 ## 功耗日志的导出方式: (1)如果有USB,可以开启,使用U盘的方式导出, (2)如果有BLE BT,可以通过手机导出。 (3)串口,理论上,也可以导出文件,采用ymodem协议等,配合xshell。 (4)如果其他方式都不行,但有串口,可以用xshell, cat pm.log的方式,打印到xshell终端,然后复制出来。 总之,有了功耗数据,就可以分析了。这是解决功耗问题(时间段功耗、估算续航时长)的【利器】。 ## 功耗日志程序的分析: (1)功耗数据示例格式 * 时间, 电量, 电压, 睡眠时间,模式等。周期性的LOG,存成文件。 * 有了时间,有了电量,就可以明白,一小时耗了多少电,估算一天耗了多少电。如果还有其他的事件的LOG,(最好写在不同的log文件里),就可以分析每段时间里,系统的工作情况,耗电情况,如开了GPS、或是BT等,或是开了LCD等,就可以简单的计算出,一个小时几个mAh,从而估算出整个系统的续航数据。 (2)如果分析LOG数据,直接导入excel查看?生成表格? 可以的,当然,你也可以用python工具,写个简单的处理脚本,一行行的读入,一条条的处理,最终,获取到各个统计的数据。功耗的数据格式,前期调功耗,最好统一,数据可以多一些,如一些唤醒的事件标志、唤醒次数,进入深睡眠的时间等,都可以加入。这些日志,多了,就可以很快的定位到功耗问题的所在,或是可以很快的估算出续航情况。 (3)使用python脚本,可以生成一些excel图表,看起来更直观,如可以看到电量消耗情况,看到哪个时间段,功耗数据最好或是最差等,接下来,就要与业务一起分析,如果去降功耗了。 (4)当然,也可以上一些高精的设备,配合日志,配合测试程序,把高功耗点找出来,优化。功耗调试后期,基本上是靠功耗日志来确认功耗是否有异常的。 (5)如果允许,可以把功耗的日志,发到云端处理,那样会更省心。 (6)功耗日志的扩展:别人家的功耗日志: ![timeline.png](/uploads/20201020/a8d94c42f5241ee6bdc6d0efae9e5406.png) ``` https://github.com/google/battery-historian ``` * 希望后续我们自己也能搞个像这样的分析工具出来。 * 希望大家动手,认真搞一下吧,功耗是一个持久战,当然,如果做的好,同时也可以给硬件、驱动把把技术关,如硬件改进、驱动加固等。 * 功耗之路,没有尽头,但项目有尽头,尽可能多想出一些行之有效的方法。 * 磨好刀,用于实战。
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
张世争
学以致用
文章
131
回答
801
被采纳
173
关注TA
发私信
相关文章
1
STM32F103的低功耗
2
最近用rtthread系统下AD采样并低功耗,中断响应不及时
3
rt-thread低功耗休眠应用问题请教
4
关于RTT对低功耗的支持
5
RT-Thread怎么休眠实现低功耗。
6
RT-Thread V3.0支持的低功耗,OS会自行进入吗?
7
关于RTThread3.0低功耗休眠模式
8
RTT3.0的bsp包中哪些MCU自带低功耗定时器?
9
关于低功耗上次说针对L4出个BSP的,怎么迟迟不见呀
10
低功耗问题。
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部