如何BugReport和PowerMonitor图形结合分析功耗问题

news2025/1/12 9:05:59

一、什么是BugReport和PowerMonitor图形结合呢?

Battery Historian是支持PowerMonitor电流图显示的,具体显示效果如下:我们移动鼠标到PowerMonitor的电流波形时就会显示这个时刻的电流情况。

BugReport和PowerMonitor图形结合好处:从功耗上帝视角快速直观查看电流与功耗异常点的时间锁定关系,快速锁定电流毛刺背后的异常问题原因。

0

二、BugReport和PowerMonitor图形结合的操作步骤

点开Power Monitor File 按钮

0

分别将BugReport文件和Power Monitor文件加载进去,最后点击Submit按钮,慢慢等待 Battery Historian 解析出来就好了。

0

搞功耗的同学应该使用过原生的命令生成BugReport。大家应该会疑问Power Monitor文件文件如何生成?这也是本文主旨,如果感兴趣,可以继续看下去哈。

例如adb bugreport命令,命令结束后,也会告知生成的bugReport文件路径位置

0

三、如何制作兼容Battery Historian的Power Monitor文件呢?【本文主旨】

3.1 兼容Battery Historian的Power Monitor文件原理

原理:Power Monitor文件只需要满足Battery Historian 要求Unix时间戳和电流值数据(uA)格式就行,中间空格隔开就可以了哈。例如【Unix时间戳 电流值数据】

例如下述文件BH-2025-01-09-19-31-28.csv,没一行都是Unix时间戳 电流值数据格式的数据

0

3.2 制作Power Monitor文件

3.2.1 PowerMonitor导出 CSV格式文件

具体步骤:PowerTool主界面->Export->选择CSV和1000th导出csv格式,主要这里的命名规则为【PowerMonitor开始抓取时间.csv】为什么需要按PowerMonitor开始抓取时间命名呢?因为我们后续需要解析文件名的开始时间,并将开始时间+时间偏移量,计算出每个电流值对应的Unix时间戳。

0

例如:2025-01-09-19-31-28.csv,注意哈:时间之间用-分割哈

0

我们可以看下csv格式内容,但是默认的.csv的时间和电流数据需要转换下格式才能被BugReport识别。故下一步我们需要写个脚本转换下指定格式。

具体就是:Time(s)时间偏移值转换为unix时间戳,电流ms转换下单位,具体mA转换为uA即可

0

3.2.2 PowerMonitor CSV文件转换为定制BugReport支持的PowerMonitor CSV文件的脚本

我使用的是python的脚本,例如命名pm2bh_python3.py。脚本主要做的事情是将默认的PowerMonitor CSV文件文件内容读取出来。python脚本做的事情具体如下

1.先读取文件名中携带的测试开始时间

2.将测试开始时间+csv文件中的时间偏移量转换为unix时间戳

3.将csv文件中的电流数据将mA单位转换为uA单位

4.最后将新的unix时间戳和uA电流数据保存到新的csv文件中

#_*_ coding:utf-8 _*_  import osimport sysimport timeimport datetimefrom itertools import islicehelp_msg = " usage: pm2bh_python3.py filename.csv"if len(sys.argv) < 2:    print (help_msg)    sys.exit()if sys.argv[1].startswith('--'):    option = sys.argv[1][2:]print ("argv = ", sys.argv)print (os.path.basename(sys.argv[1]))# 根据-符号,解析出文件名的开始时间戳:2025-01-09-19-31-28.csv,故csv格式的文件名写powermonitor开始的时间戳filename = os.path.basename(sys.argv[1]).split(".")[0].split("-")# 解析年:例如 2025year = int(str(filename[0]))# 解析月:例如 01month = int(str(filename[1]))# 解析日:例如 09day = int(str(filename[2]))# 解析时:例如 19hour = int(str(filename[3]))# 解析分:例如 31minute = int(str(filename[4]))# 解析秒:例如 28second = int(str(filename[5]))# 将开始时间转换为Unix时间戳,其中减去8*3600转化为UTC+8时区北京时区test_start_unix_time_stamp = (datetime.datetime(year,month,day,hour,minute,second) - datetime.datetime(1970,1,1)).total_seconds() - 8*3600f = open(sys.argv[1],"r")f_out = open("BH-"+os.path.basename(sys.argv[1]),"w")for line in islice(f, 1, None):    t = line.strip().split(",")    # 测试开始时间+PowerMonitor的时间偏移量    offset_time = float(t[0])    # 计算偏移后的时间戳    offset_time_stamp = offset_time + test_start_unix_time_stamp    # 转换为本地时间datetime对象    local_datetime = datetime.datetime.fromtimestamp(int(offset_time_stamp))    # 转换为UTC时间datetime对象,直接使用浮点数时间戳    utc_datetime = datetime.datetime.utcfromtimestamp(offset_time_stamp)    # 平均电流值,将单位mA转换为uA(微安)    main_avg_current = str(float(t[1]) / 1000)    print("offset_time=" + str(offset_time) + ", offset_time_stamp=" + str(offset_time_stamp) + ", utc_datetime=" + utc_datetime.strftime('%Y-%m-%d %H:%M:%S') + ", main_avg_current=" + main_avg_current + "uA " + "\n")    # Battery Historian 只需要Unix时间戳和电流值数据格式    f_out.write(str(int(offset_time_stamp)) + " " + main_avg_current + " \n")f_out.close()

3.2.3 执行脚本pm2bh_python3.py filename.csv

cmd窗口下执行:pm2bh_python3.py filename.csv,例如pm2bh_python3.py 2025-01-09-19-31-28.csv

0

执行完成后会生成如下文件:例如新文件会带BH开头,例如BH-2025-01-09-19-31-28.csv

0

我们打开BH-2025-01-09-19-31-28.csv文件内容:满足Battery Historian 要求Unix时间戳和电流值数据(uA)就行,中间空格隔开就可以了哈。【Unix时间戳 电流值数据】

0

3.2.4 BugReport文件和Power Monitor文件加载并显示出图形结合的图

BugReport文件和Power Monitor文件加载进去,最后点击Submit按钮,慢慢等待 Battery Historian 解析出来就好了。、

0

四、其他方法:直接将pt5格式文件转换为BugReport支持格式

由于默认的pt5格式无法直接可视化查看,故需要从power monitor官方网查看API进行解析出符合BugReport指定的格式。不过脚本会相对复杂些。本次不介绍了,后面有缘再续。

https://www.msoon.com/high-voltage-power-monitor

0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2275419.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

外部获取nVisual所在层级方法

Iframe嵌入nVisual&#xff0c;在iframe渲染完成之后&#xff0c;以后通过增加window.addEventListener()方法监听message事件&#xff0c;来获取nvisual当前的所在层级以及所选中的节点列表以及线缆列表。 nVisualPatrolDiagramIdList 变量是获取nVisual当前所在的层级的ID值…

UI自动化测试框架playwright--初级入门

一、背景&#xff1a;UI自动化的痛点&#xff1a; 1、设计脚本耗时&#xff1a; 需要思考要如何模拟用户的操作&#xff0c;如何触发页面的事件&#xff0c;还要思考如何设计脚本&#xff0c;定位和操作要交互的元素、路径、位置&#xff0c;再编写代码逻辑&#xff0c;往复循…

开放词汇检测新晋SOTA:地瓜机器人开源DOSOD实时检测算法

在计算机视觉领域&#xff0c;目标检测是一项关键技术&#xff0c;旨在识别图像或视频中感兴趣物体的位置与类别。传统的闭集检测长期占据主导地位&#xff0c;但近年来&#xff0c;开放词汇检测&#xff08;Open-Vocabulary Object Detection-OVOD 或者 Open-Set Object Detec…

Jupyter Notebook 安装PyTorch

1、判断当前环境 通过如下命令可以看出是Anaconda 环境 2、Anaconda 环境安装 PyTorch 2.1 要执行的命令 如果你使用的是 Anaconda 环境&#xff0c;可以使用以下命令来安装 PyTorch&#xff1a; conda install pytorch -c pytorch 2.2 执行遇到的问题&#xff1a;没有权…

如何将json字符串格式化

文章目录 如何对json字符串进行格式化显示hutool方案的示例和不足使用fastjson的方案 如何对json字符串进行格式化显示 将json字符串内容进行格式化的输出显示。本文介绍 hutool的方案和alibaba 的fastjson方案 hutool方案的示例和不足 引入依赖 <dependency><grou…

C#使用OpenTK绘制3D可拖动旋转图形三棱锥

接上篇,绘制着色矩形 C#使用OpenTK绘制一个着色矩形-CSDN博客 上一篇安装OpenTK.GLControl后,这里可以直接拖动控件GLControl 我们会发现GLControl继承于UserControl //// 摘要:// OpenGL-aware WinForms control. The WinForms designer will always call the default//…

【Git原理和使用】Git 分支管理(创建、切换、合并、删除、bug分支)

一、理解分支 我们可以把分支理解为一个分身&#xff0c;这个分身是与我们的主身是相互独立的&#xff0c;比如我们的主身在这个月学C&#xff0c;而分身在这个月学java&#xff0c;在一个月以后我们让分身与主身融合&#xff0c;这样主身在一个月内既学会了C&#xff0c;也学…

概率图模型01

机器学习中&#xff0c;线性回归、树、集成和概率图都属于典型的统计学习方法&#xff0c;概率图模型会更深入地体现出‘统计’两字 概率图模型的常见算法 概率图模型中的图 概率图模型如图主要分为两种&#xff0c;即贝叶斯网络和马尔可夫网络&#xff0c;有向图与无向图&…

解决WordPress出现Fatal error: Uncaught TypeError: ftp_nlist()致命问题

错误背景 WordPress版本&#xff1a;wordpress-6.6.2-zh_CN WooCommerce版本&#xff1a;woocommerce.9.5.1 WordPress在安装了WooCommerce插件后&#xff0c;安装的过程中没有问题&#xff0c;在安装完成后提示&#xff1a; 此站点遇到了致命错误&#xff0c;请查看您站点管理…

《HeadFirst设计模式》笔记(下)

11 代理模式 代理要做的就是控制和管理访问。 你的客户对象所做的就像是在做远程方法调用&#xff0c;但其实只是调用本地堆中的“代理”对象上的方法&#xff0c;再由代理处理所有网络通信的低层细节。 Java的RMI提供了客户辅助对象和服务辅助对象&#xff0c;为客户辅助对…

【Uniapp-Vue3】v-if条件渲染及v-show的选择对比

如果我们想让元素根据响应式变量的值进行显示或隐藏可以使用v-if或v-show 一、v-show 另一种控制显示的方法就是使用v-show&#xff0c;使用方法和v-if一样&#xff0c;为true显示&#xff0c;为false则不显示。 二、v-if v-if除了可以像v-show一样单独使用外&#xff0c;还…

【MySQL数据库】基础总结

目录 前言 一、概述 二、 SQL 1. SQL通用语法 2. SQL分类 3. DDL 3.1 数据库操作 3.2 表操作 4. DML 5. DQL 5.1 基础查询 5.2 条件查询 5.3 聚合函数 5.4 分组查询 5.5 排序查询 5.6 分页查询 6. DCL 6.1 管理用户 6.2 权限控制 三、数据类型 1. 数值类…

ubuntu/kali安装c-jwt-cracker

1.下载安装包 可以去GitHub下载解压&#xff0c;我这直接在kali克隆下来了。&#xff08;网络不好可能克隆不下来&#xff09; git clone https://github.com/brendan-rius/c-jwt-cracker.git 2.如果下载的压缩包就需要进行解压&#xff0c;克隆的直接进入目录就好了。 unzi…

H266/VVC 帧内预测中 ISP 技术

帧内子划分 ISP ISP 技术是在 JVET-2002-v3 提案中详细介绍其原理&#xff0c;在 VTM8 中完整展示算法。ISP是线基内预测&#xff08;LIP&#xff09;模式的更新版本&#xff0c;它改善了原始方法在编码增益和复杂度之间的权衡&#xff0c;ISP 算法的核心原理就是利用较近的像…

《拉依达的嵌入式\驱动面试宝典》—计算机网络篇(二)

《拉依达的嵌入式\驱动面试宝典》—计算机网络篇(二) 你好,我是拉依达。 感谢所有阅读关注我的同学支持,目前博客累计阅读 27w,关注1.5w人。其中博客《最全Linux驱动开发全流程详细解析(持续更新)-CSDN博客》已经是 Linux驱动 相关内容搜索的推荐首位,感谢大家支持。 《…

【2024年华为OD机试】 (A卷,100分)- 对称美学(Java JS PythonC/C++)

一、问题描述 题目描述 对称就是最大的美学&#xff0c;现有一道关于对称字符串的美学。已知&#xff1a; 第1个字符串&#xff1a;R第2个字符串&#xff1a;BR第3个字符串&#xff1a;RBBR第4个字符串&#xff1a;BRRBRBBR第5个字符串&#xff1a;RBBRBRRBBRRBRBBR 相信你…

c#集成npoi根据excel模板导出excel

NuGet中安装npoi 创建excel模板&#xff0c;替换其中的内容生成新的excel文件。 例子中主要写了这四种情况&#xff1a; 1、替换单个单元格内容&#xff1b; 2、替换横向多个单元格&#xff1b; 3、替换表格&#xff1b; 4、单元格中插入图片&#xff1b; using System.IO; …

【数据库系统概论】第5章 数据库完整性【!触发器】

目录 5.1数据库完整性概述 5.2 实体完整性 5.3 参照完整性 5.4 用户定义的完整性 属性上的约束 1. 列值非空&#xff08;NOT NULL&#xff09; 2. 列值唯一&#xff08;UNIQUE&#xff09; 3. 检查列值是否满足条件&#xff08;CHECK&#xff09; 元组上的约束 5.5 完…

一键部署Netdata系统无需公网IP轻松实现本地服务器的可视化监控

文章目录 前言1.关于Netdata2.本地部署Netdata3.使用Netdata4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定Netdata公网地址 &#x1f4a1; 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。…

HBuilderX(uniapp)实现微信小程序获取用户头像、昵称、授权登录、获取用户手机号

前言&#xff1a;微信文档写的零零散散的&#xff0c;网上搜的教程&#xff0c;23年的教程还在教22年改版之前的东西&#xff0c;导致踩坑无数&#xff0c;所以自己写一下文档记录一下&#xff0c;帮助后来者&#xff0c;记录于2024.11.14 一.获取用户头像和昵称 首先阅读微信…